【机器学习】K近邻(KNN)回归预测数据-代码

import matplotlib.pyplot as plt
import numpy as np
# 生成训练样本
n_dots = 400#训练样本点越多,预测的越准确
X_train= 5 * np.random.rand(n_dots, 1)#随机40个样本,1列的列向量
y_train = np.cos(X_train).ravel()#y=cos(X),np.ravel()是用来将多维的array 变成一维(按行)
# 训练模型
from sklearn.neighbors import KNeighborsRegressor#导入KNN回归器
k=5
knn=KNeighborsRegressor(k)#设计KNN回归器
knn.fit(X_train,y_train)#导入数据,并训练回归器
#生成足够密集的点并进行预测
X_test=np.random.rand(n_dots, 1)#数值范围0-5,数目500,并转置成列向量
y_test=np.cos(X_test).ravel()
y_predict=knn.predict(X_test)#X_test做测试集,预测出y值
#绘制测试结果和预测结果对比图
plt.plot(y_test[:100],'r',y_predict[:100],'b--')
plt.xlabel('Random Test Data')
plt.legend(['observed','predict'])#图中显示线色的指示
plt.show()#显示绘图

结果图:

n_dots = 40

在这里插入图片描述

  n_dots = 400

在这里插入图片描述

 n_dots = 4000

在这里插入图片描述
后面n_dots再增加,预测的准确率也很难提高了。因为训练集X_train和测试集X_test的数值范围有差距造成的。

猜你喜欢

转载自blog.csdn.net/weixin_41990278/article/details/90316934
今日推荐