龙空技术网

「数据分析3」 简析KNN K近邻分类算法

zzz南瓜 75

前言:

当前姐妹们对“分别说出knn和k means算法的用处”可能比较珍视,朋友们都想要了解一些“分别说出knn和k means算法的用处”的相关文章。那么小编在网上搜集了一些有关“分别说出knn和k means算法的用处””的相关内容,希望兄弟们能喜欢,兄弟们快快来学习一下吧!

关注微信公众号:Home_IT

获取更多有用专业IT知识。针对非IT专业人员:1.提供常用的IT技术支援;2.提供最新热点IT资讯;3.数据分析...

01 前言

今天继续充电,来了解K近邻分类算法吧。KNN,英文全称是 K-Nearest Neighbor, 它可以说上是最简单,同时也最常用的分类算法之一。它是有监督的分类算法,跟无监督K-means算法本质上并不一样。那接下来我们就来简析这个算法吧。

02 算法原理

KNN,从英文名字 K-Nearest Neighbor,翻译过来就是K个最近邻居。它的作用就是当我们想去预测一个未知值X的时候,要根据距离它最近的K个点,哪个类别最多来判断X是属于哪个类别。如下图:

(当k=3时,蓝三角数量比红圆圈数量还要多,因此判断绿色方块是蓝三角)

然而,我们需要注意的是,K并不是一个固定的值,当我们K值不取3,假设取5的时候,又会有什么变化呢?看下图:

这个时候,判定就不一样了,此时我们要把新变量绿色方块给判定为红圆圈。

从上面简单的例子来看,KNN的原理其实不外乎就这三个:

① 将数据映射到高维空间的点(比如我们把数据投射到上面的X,Y坐标轴);

②确定K的值,并计算各点离新样本的距离(K值与距离公式);

③投票并确定结果(查看哪个类别多,因此推断出新样本点的类别)。

K值如何确定?

从上面原理我们知道,K值取值很重要,它关系着我们分类得出来的结果正确与否。那如何来确定K值呢?答案是通过不断循环验证,或者叫做交叉验证。即从选择一个较小的K值开始,不断增加它的值,然后来计算验证集合里的方差,最后来寻找一个合适的值。

比如,我们用python来做交叉验证,如下图:

我们从1取到31,一共30个值,从结果来看,K取3,4,5,7这几个值时,效果都很好。

如何计算点(距离)?

K值确定了,但是怎么来计算在范围内是有多少个蓝色的三角形和红圆圈呢?答案是来计算距离。这里需要引入一些数学知识啦。

衡量空间点的距离有很多种计算方式,最常用的是欧式距离(高中数学的知识:计算空间上两个点的距离):

当然除了欧式距离,还有曼哈顿距离,切比雪夫距离,马氏距离等等。比如下图:

(q=1,为曼哈顿距离;q=2,为欧式距离;q趋近无穷大,则为切比雪夫距离)

03 算法实战

>>>实战1

第1个实战,我们就单纯从KNN原理来出发。

假设现在有一些电影数据 movie_data,它有三个属性数值,还有一个因变量Y。

比如,45,2,9是‘Babyplan’这部电影的三个属性,‘Comie’是这部电影归类于喜剧。('Action'是动作片,'Love'是爱情片)

现在假定有新的一部电影,它的三个属性是X =[23,3,17],我们需要来判断它归类于哪种类型的电影。完整代码如下:

最后,我们看到离这个点最近分类的是喜剧片最多,因此我们就把这个X点归类为'Comie' 类型的片。

>>>实战2

第一个实战案例数据少,而且也很简单。实际上我们工作和生活中,面对的数据很庞大,也需要不断取校验,以取最佳K值。因此,我们往往会用上python里面的sklearn包,它包含了很多很多模型算法,这里我们就使用sklearn包内部拥有的莺尾花数据案例和knn算法吧。

代码如下:

从上面, 有几个注意点,需要对数据集进行划分,以1/3划分训练集和测试集。之后交叉验证,得到最佳K值,这里最佳K值有多个,我们就不妨把K取为4。接下来就来训练模型,训练完成之后,在来做预测。

KNN中 fit则为训练模型,训练完成之后,可以用predict的方法来预测它。最后预测出来的结果【0】,代表的是某个类别(类别有三种,分布是0,1,2)

04 最后

从上面来看,KNN算法并不难理解,实际应用也不难。这算是机器学习入门级别吧。当然,本文也是浅尝即止,引用的是两个最简单的案例。实际上KNN算法模型能做很多事情呢。

好了,今天到到此为止,下一期,如无意外,会写另外一个算法模型 -- 朴素贝叶斯,一起来学习吧。

标签: #分别说出knn和k means算法的用处 #knn算法电影分类