赵走x博客
网站访问量:151925
首页
书籍
软件
工具
古诗词
搜索
登录
深入浅出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机器学习:5、k最近邻算法在分类任务中的应用
资源编号:75859
人工智能
深入浅出Python机器学习
热度:164
在这一小节中,我们会向大家展示K 最近邻算法在分类和回归任务当中的应用,请大家准备好Jupyter notebook,和我们一起进行实验吧。
在这一小节中,我们会向大家展示K 最近邻算法在分类和回归任务当中的应用,请大家准备好Jupyter notebook,和我们一起进行实验吧。 在scikit-learn 中,内置了若干个玩具数据集( Toy Datasets ),还有一些API 让我们可以自己动手生成一些数据集。接下来我们会使用生成数据集的方式来进行展示,请大家在Jupyter notebook 中输入代码如下: ``` # 导人数据集生成器 from sklearn.datasets import make_blobs # 导人KNN 分类器 from sklearn.neighbors import KNeighborsClassifier # 导人画图工具 import matplotlib.pyplot as plt #导人数据集拆分工具 from sklearn . model_selection import train_test_split # 生成样本数为200 ,分类为2 的数据集 data= make_blobs(n_samples=200 , centers =2 , random_state=8) X, y = data print('x',X,'y',y) # 将生成的数据集进行可视化 plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.spring,edgecolor='k') plt.show() ``` 在这段代码中,我们使用了scikit-learn 的make_blobs 函数来生成一个样本数量为200 ,分类数量为2 的数据集,并将其赋值给X 和y ,然后我们用matplotlib 将数据用图形表示出来,运行代码,结果为:  [结果分析] 从图3中可以看出, make_ blobs 生成的数据集一共有两类,其中一类用粉色表示,而另外一类用黄色表示。读者朋友可能有点疑惑: 这不是己经进行好分类了吗?我们还需要K 最近邻算法做什么呢? 这确实是初学者非常容易提出的问题, 答案是这样的一一我们这里生成的数据集,可以看作机器学习的训练数据集,是己知的数据。我们就是基于这些数据用算法进行模型的训练,然后再对新的未知数据进行分类或者回归。 下面我们就使用K 最近邻算法来拟合这些数据,输入代码如下: ``` import numpy as np import matplotlib as mpl clf = KNeighborsClassifier() clf.fit(X, y) # 下面的代码用于画图 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 xx, yy = np.meshgrid(np.arange(x_min, x_max, .2), np.arange(y_min, y_max, .2)) Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) z = Z.reshape(xx.shape) cm_light = mpl.colors.ListedColormap(['#A0FFA0', '#FFA0A0']) plt.pcolormesh(xx, yy, z, cmap=cm_light) plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.spring, edgecolor='k') plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max()) plt.title("Classifier: KNN") plt.show() ``` 运行结果:  [结果分析] 从图中我们可以看到, K 最近邻算法基于数据集创建了一个分类模型, 就是图中上下两个颜色区域组成的部分。那么如果有新的数据输入的话,模型就会自动将新数据分到对应的分类中。 例如,我们假设有一个数据点,它的两个特征值分别是6.75 和4.82 ,我们来试验下模型能不能将它放到正确的分类中,首先我们可以在上面那段代码中, pit.show() 之前加一行代码如下: ``` # 把新的数据点用五星表示出来 plt.scatter(6.75 , 4.82 , marker='*', c ='red', s=200) ``` 结果:  [结果分析] 图中五角星就代表了新的数据点所在的位置,可以看到K 最近邻算法将它放在了下方的区域。 下面我们再验证一下,输入代码如下: ``` # 对新数据点分类进行判断 print('代码运行结果') print('==============================') # 打印分隔符让结果美观一些 print('新数据点的分类是:',clf.predict([[6.75,4.82]])) print('==============================') # 打印分隔符让结果美观一些 ``` 代码运行结果: ``` 代码运行结果 ============================== 新数据点的分类是: [1] ============================== ``` [结果分析] 看起来, K 最近邻算法的工作成果还是很不错的,不过这可能是因为我们这次的任务有点太简单了。下面我们给它增加一点难度处理多元分类任务。