机器学习日记01—KNN算法
故事:再过几天,就是情人节了,小H正打算筹备个烛光晚餐,和女朋友浪漫一下。然而说到烛光晚餐自然需要好酒的助兴。这是小H犯难了,他并不清楚酒的类别,连最基本的知识也不懂。还好,我有一招能帮我的小H朋友:不懂酒,没关系,KNN算法,来帮你~
(醒醒,你还没有女朋友,小哥)
好吧,进入我们的正题:
本次涉及这些知识:
1.k最邻近算法的原理;
2.knn算法的概念;
3.实例之对酒的分类建模。
(参考资料:深入浅出Python机器学习)
一、KNN算法的原理
可以说是:近朱者赤近墨者黑
或者说是: ”物以类聚“ 等;
对于KNN算法来说,这个道理很简单:就是数据点离谁越近,就和谁属于同一类。
但是,我们需要注意一个问题,如果是选近邻数等于1的话,在大量的数据点情况下,我们会犯”一叶障目,不识泰山“的问题,因此对于不同的选取近邻数有不同的分类判断。
这样一来,实际上KNN算法中,K这个含义就是最邻近的个数。
二、KNN的用法
(这里会用Jupyter notebook来进行代码操作)
首先是我在初步学习中的结果展示:
在上述结果中,我用了scikit-learn的make_blobs函数生成了一个样本数量为200,分类数量为2的数据集,并赋值,然后用matplotlib将数据图形表示出来。第二张图是使用KNN算法进行拟合这些数据,基于数据集创建一个分类模型,形成粉色区域与灰色区域两部分。
第二张图代码如下:
import numpy as np
clf=KNeighborsClassifier()
clf.fit(X,y)
x_min,x_max=X[:,0].min()-1,X[:,0].max()