K近邻回归模型示例

在这个示例中,将使用K近邻算法来构建一个回归模型,并展示如何通过不同的权重方法来预测数据。首先,需要生成一些样本数据用于训练模型,同时也会生成在整个训练数据范围内的数据,以便观察模型在整个区域的反应。

生成样本数据

使用NumPy库来生成样本数据点。这些数据点将用于训练模型。此外,还生成了整个训练数据范围内的数据,以便可以可视化模型在该区域的表现。

import matplotlib.pyplot as plt import numpy as np from sklearn import neighbors # 设置随机数种子以保证结果的可重复性 rng = np.random.RandomState(0) # 生成训练数据 X_train = np.sort(5 * rng.rand(40, 1), axis=0) # 生成测试数据 X_test = np.linspace(0, 5, 500)[:, np.newaxis] # 生成目标数据 y = np.sin(X_train).ravel() # 为目标数据添加噪声 y[::5] += 1 * (0.5 - np.random.rand(8))

训练回归模型

接下来,将训练一个模型,并可视化在预测中使用均匀和距离权重对预测值的影响。将使用5个邻居,并尝试两种不同的权重方法:均匀权重和距离权重。

n_neighbors = 5 # 遍历不同的权重方法 for i, weights in enumerate(["uniform", "distance"]): # 创建K近邻回归模型 knn = neighbors.KNeighborsRegressor(n_neighbors, weights=weights) # 训练模型并进行预测 y_ = knn.fit(X_train, y).predict(X_test) # 绘制结果 plt.subplot(2, 1, i + 1) plt.scatter(X_train, y, color="darkorange", label="数据点") plt.plot(X_test, y_, color="navy", label="预测结果") plt.axis("tight") plt.legend() plt.title("KNeighborsRegressor (k=%i, weights='%s')" % (n_neighbors, weights)) plt.tight_layout() plt.show()

通过上述代码,可以看到,在不同的权重方法下,K近邻回归模型对数据的预测效果有所不同。均匀权重方法会给予所有邻居相同的影响力,而距离权重方法则根据邻居与目标点的距离来分配权重,距离越近的邻居对预测结果的影响越大。

脚本的总运行时间

该脚本的总运行时间为0分钟0.226秒,这是一个相对较快的运行时间,表明K近邻算法在处理这类数据时具有较高的效率。

以下是一些与本示例相关的其他示例,它们涉及到K近邻算法在不同场景下的应用:

  • 最近邻分类
  • 比较有无邻域成分分析的最近邻
  • 支持向量机:加权样本
  • 缓存最近邻
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485