当前位置:   article > 正文

【Python机器学习】k近邻——k近邻回归_调用sklearn中的k近邻回归模型:kneighborsregressor,并将邻居个数设置为3

调用sklearn中的k近邻回归模型:kneighborsregressor,并将邻居个数设置为3

k近邻算法还可以用于回归任务,如果单一近邻,预测结果就是最近邻的目标值,使用多个近邻时,预测结果为这些邻居的平均值。

用于回归的k近邻算法在scikit-learn的KNeighborsRegressor类中实现。

  1. import mglearn.datasets
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.neighbors import KNeighborsRegressor
  4. import matplotlib.pyplot as plt
  5. X,y=mglearn.datasets.make_wave()
  6. X_train,X_test,y_train,y_test=train_test_split(
  7. X,y,random_state=0
  8. )
  9. reg=KNeighborsRegressor(n_neighbors=3)
  10. reg.fit(X_train,y_train)
  11. print('预测结果:\n{}'.format(reg.predict(X_test)))

预测结果:

对于一维数据集,可以查看所有特征取值对应的测试结果:

  1. import mglearn.datasets
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.neighbors import KNeighborsRegressor
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. X,y=mglearn.datasets.make_wave()
  7. X_train,X_test,y_train,y_test=train_test_split(
  8. X,y,random_state=0
  9. )
  10. plt.rcParams['font.sans-serif']=['SimHei']
  11. fig,axes=plt.subplots(1,3,figsize=(15,4))
  12. line=np.linspace(-3,3,1000).reshape(-1,1)
  13. for n_neighbors,ax in zip([1,3,9],axes):
  14. reg=KNeighborsRegressor(n_neighbors=n_neighbors)
  15. reg.fit(X_train,y_train)
  16. ax.plot(line,reg.predict(line))
  17. ax.plot(X_train, y_train, '^', c=mglearn.cm2(0), markersize=8)
  18. ax.plot(X_test, y_test, '^', c=mglearn.cm2(1), markersize=8)
  19. ax.set_title('{} 近邻数\n 训练score:{:.2f}测试score:{:.2f}'.format(n_neighbors,reg.score(X_train,y_train),reg.score(X_test,y_test)))
  20. ax.set_xlabel('Feature')
  21. ax.set_ylabel('Targrt')
  22. axes[0].legend(loc='best')
  23. plt.show()

 

可以从图中看到,仅使用单一邻居,训练集中的每个店都对预测结果有很大影响,预测结果的图像经过所有数据点,导致预测结果非常不稳定。考虑更多邻居之后,预测结果变得更平滑,但对训练数据的拟合也不好

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/549074
推荐阅读
相关标签
  

闽ICP备14008679号