使用KNN算法进行回归拟合
程序员文章站
2022-07-14 20:32:19
...
import matplotlib.pyplot as plt
import numpy as np
# 生成训练样本
n_dots = 40
X = 5 * np.random.rand(n_dots, 1)
#返回一个连续的扁平数组。
y = np.sin(X).ravel()
# 添加一些噪声到该数据中
y += 0.2 * np.random.rand(n_dots) - 0.1
#使用KNN算法进行回归拟合
from sklearn.neighbors import KNeighborsRegressor
#选取最近的5个样本决定这个事物属于哪类
k = 5
knn = KNeighborsRegressor(k)
#使用X作为训练数据并将y作为目标值来拟合模型
knn.fit(X, y);
# 生成足够密集的点并进行预测
#生成了一个一维500个数字的数组[:,np.newaxis]将数组转成500行1列的矩阵
T = np.linspace(0, 5, 500)[:, np.newaxis]
y_pred = knn.predict(T)
knn.score(X, y)
# 画出拟合曲线
#画图之前首先设置figure对象,此函数相当于设置一块自定义大小的画布,
# 使得后面的图形输出在这块规定了大小的画布上,其中参数figsize设置画布大小 dpi每英寸点数
plt.figure(figsize=(16, 10), dpi=144)
plt.scatter(X, y, c='g', label='data', s=100) # 画出训练样本
plt.plot(T, y_pred, c='k', label='prediction', lw=4) # 画出拟合曲线
plt.axis('tight')
plt.title("KNeighborsRegressor (k = %i)" % k)
plt.show()