赵走x博客
网站访问量:151913
首页
书籍
软件
工具
古诗词
搜索
登录
深入浅出Python机器学习:31、自动特征选择
深入浅出Python机器学习:30、数据“升维”
深入浅出Python机器学习:29、数据表达
深入浅出Python机器学习:28、聚类算法
深入浅出Python机器学习:27、特征提取
深入浅出Python机器学习:26、数据降维
深入浅出Python机器学习:25、数据预处理
深入浅出Python机器学习:24、神经网络实例一一手写识别
深入浅出Python机器学习:23、神经网络的原理及使用
深入浅出Python机器学习:22、神经网络的前世今生
深入浅出Python机器学习:21、SVM 实例一一波士顿房价回归分析
深入浅出Python机器学习:20、SVM 的核函数与参数选择
深入浅出Python机器学习:19、支持向量机SVM 基本概念
深入浅出Python机器学习:18、随机森林实例一一要不要和中目亲对象进一步发展
深入浅出Python机器学习:17、随机森林
深入浅出Python机器学习:16、决策树
深入浅出Python机器学习:15、朴素贝叶斯实战一一判断肿瘤是良性还是恶性
深入浅出Python机器学习:14、朴素贝叶斯算法的不同方法
深入浅出Python机器学习:13、朴素贝叶斯基本概念
深入浅出Python机器学习:12、使用L1 正则化的线性模型一一套索回归
深入浅出Python机器学习:11、使用L2 正则化的线性模型一一岭回归
深入浅出Python机器学习:10、最基本的线性模型一一线性回归
深入浅出Python机器学习:9、线性模型的墓本概念
深入浅出Python机器学习:8、K 最近邻算法项目实战一一酒的分类
深入浅出Python机器学习:7、K最近邻算法用于回归分析
深入浅出Python机器学习:6、K最近邻算法处理多元分类任务
深入浅出Python机器学习:5、k最近邻算法在分类任务中的应用
深入浅出Python机器学习:4、K 最近邻算法的原理
深入浅出Python机器学习:3、一些必需库的安装及功能简介
深入浅出Python机器学习:2、基于python i吾言的环境配置
深入浅出Python机器学习:1、概述
人脸数据集加载faces = fetch_lfw_people()报错
31、直方图
74、插件开发:Android端API实现
Python3之socket编程--3:基于UDP的套接字
15、使用 jQuery 处理 Ajax 请求
深入浅出Python机器学习:7、K最近邻算法用于回归分析
资源编号:75870
人工智能
深入浅出Python机器学习
热度:133
在scikit-leam 的数据集生成器中, 有一个非常好的用于回归分析的数据集生成器,make_regression 函数, 这里我们使用make_regression 生成数据集来进行实验, 演示K 最近邻算法在回归分析中的表现。
在scikit-leam 的数据集生成器中, 有一个非常好的用于回归分析的数据集生成器,make_regression 函数, 这里我们使用make_regression 生成数据集来进行实验, 演示K 最近邻算法在回归分析中的表现。 首先我们还是先来生成数据集,输入代码如下: ``` import matplotlib.pylab as plt # 导入make_regression数据集生成器 from sklearn.datasets import make_regression # 生成特征数量为1 , 噪音为50的数据集 X,y=make_regression(n_features=1,n_informative=1,noise=50,random_state=8) # 用散点图将数据点进行可视化 plt.scatter(X,y,c='orange',edgecolors='k') plt.show() ``` 为了方便画图,我们选择样本的特征数量仅为1 个,同时为了增加难度。我们添加标准差为50 的noise , 运行代码, 将会得到如图所示的结果。  [结果分析] 从图3-11 中我们可以看到,横轴代表的是样本特征的数值, 范围大概在- 3 ~ 3 :纵轴代表样本的测定值, 范围大致在- 250 ~ 250 。 下面我们使用K 最近邻算法来进行回归分析, 输入代码如下: ``` import numpy as np # 导人用于回归分析的KNN模型 from sklearn.neighbors import KNeighborsRegressor reg = KNeighborsRegressor() # 用KNN 模型拟合数据 reg.fit(X, y) # 把预测结果用图像进行可视化 z = np.linspace(-3, 3, 200).reshape(-1, 1) plt.scatter(X, y, c='orange', edgecolors='k') plt.plot(z, reg.predict(z), c='k', linewidth=3) # 向图像添加标题 plt.title('KNN Regressor') plt.show() ``` 运行代码,将会得到如图所示的结果:  [结果分析} 图中黑色的曲线代表的就是K 最近邻算法拟合make _ regression生成数据所进行的模型。直观来看, 模型的拟合程度并不是很好,有大量的数据点都没有被模型覆盖到。 现在我们尝试给模型进行评分, 看看结果如何,输入代码如下: ``` print('模型评分:{:.2f}'.format(reg.score(X, y))) ``` 运行结果: ``` 模型评分:0.77 ``` [结果分析] 模型的得分只有0.77 ,这是一个差强人意的结果,和我们目测的情况基本一致,为了提高模型的分数, 我们将K 最近邻算法的近邻数进行调整。由于在默认的情况下, K 最近邻算法的n_neighbors 为5 ,我们尝试将它减少。 输入代码如下: ``` # 减少模型的n_neighbors参数为2 reg2 = KNeighborsRegressor(n_neighbors=2) reg2.fit(X, y) # 重新进行可视化 plt.scatter(X, y, c='orange', edgecolor='k') plt.plot(z, reg2.predict(z), c='k', linewidth=3) plt.title('KNN Regressor') plt.show() ``` 在这段代码中,我们将K 最近邻算法的n_neighbors 参数降低为2 ,再次运行代码, 将会得到如图所示的结果。  {结果分析]从图 中我们可以看到,相对于上面来说,黑色曲线更加积极地试图覆盖更多的数据点, 也就是说,模型变得更复杂了。看起来比n_neighbors 等于5的时候更加准确了,我们再次进行评分,看看分数是否有了提高。 输入代码如下: ``` print('模型评分:{:.2f}'.format(reg2.score(X, y))) ``` 代码运行结果: ``` 模型评分:0.86 ``` {结果分析] 和我们预料的一样,模型的评分从0 . 77 提升到了0.86 ,可以说是有显著的提升。不过以上都是基于我们虚构的数据所进行的实验,接下来我们用一个来自真实世界的数据集来进行K 最近邻算法的实战。