KNN回归

  1. KNN用于回归的基本原理
    • 在KNN回归中,对于一个新的输入样本点,算法会在训练集中找到与它距离最近的K个邻居。
    • 然后,根据这K个邻居的目标值(输出值)来预测新样本点的目标值。通常采用的预测方法是取这K个邻居的目标值的平均值或者加权平均值作为新样本点的预测值。
  2. 距离度量和K值的选择
    • 距离度量:与KNN分类算法类似,KNN回归也需要使用距离度量来确定样本之间的相似性。常用的距离度量方法包括欧式距离、曼哈顿距离等。欧式距离在连续特征空间中应用广泛。
    • K值的选择:K值的选择对KNN回归的性能有很大影响。如果K值过小,模型容易受到噪声数据的影响,导致过拟合;如果K值过大,模型会过于平滑,可能会忽略数据中的局部特征,导致欠拟合。一般通过交叉验证等方法来选择合适的K值。
  3. 基础代码示例
import numpy as np
from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt

# 生成模拟数据
np.random.seed(0)
X = np.sort(5 * np.random.rand(40, 1), axis = 0)
y = np.sin(X).ravel()
y[::5] += 1 * (0.5 - np.random.rand(8))

# 划分训练集和测试集
X_train, X_test = X[:30], X[30:]
y_train, y_test = y[:30], y[30:]

# 创建KNN回归模型对象,设置K值为3
knn_reg = KNeighborsRegressor(n_neighbors = 3)

# 使用训练数据进行训练
knn_reg.fit(X_train, y_train)

# 对测试集进行预测
y_pred = knn_reg.predict(X_test)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print("均方误差:", mse)

# 绘制原始数据和预测结果
plt.scatter(X_train, y_train, c = 'blue', label = 'Training data')
plt.scatter(X_test, y_test, c = 'red', label = 'Test data')
plt.plot(X_test, y_pred, c = 'green', linewidth = 2, label = 'Predictions')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

  1. 应用sklearn实现代码示例
#样本特征
data_X = [
    [1.3,6],
    [3.5,5],
    [4.2,2],
    [5,7.5],
    [7.2,4],
    [2,9],
    [5,3.3],
    [8.1,8],
    [9,2.5]
]
#回归任务是具体数值,把data_y改成具体数值类型
data_y = [0.10.30.50.70.91.11.31.51.7]
X_train = np.array(data_X)
y_train = np.array(data_y)
data_new = np.array([4,5])

#sklearn实现回归
from sklearn.neighbors import KNeighborsRegressor
knn_reg = KNeighborsRegressor(n_neighbors=5)
knn_reg.fit(X_train,y_train)
predict_y = knn_reg.predict(data_new.reshape(1,-1))
predict_y
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值