百科知识 | 2024年05月16日 03:36:34 | 阅读:3930
KNN算法即KNearestNeighbor算法。这个算法是机器学习里面一个比较经典的、相对比较容易理解的算法。其中的K表示最接近自己的K个数据样本。
KNN算法是用来做归类的,也就是说,一个样本空间里的样本已经分成很几个类型,然后,给定一个待分类的数据,通过计算接近自己最近的K个样本来判断这个待分类数据属于哪个分类。你可以简单的理解为由那离自己最近的K个点来投票决定待分类数据归为哪一类。
从上图中我们可以看到,图中的有两个类型的样本数据,一类是蓝色的正方形,另一类是红色的三角形。而那个绿色的圆形是我们待分类的数据。
如果K=3(考虑临近3个点),那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形。
如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形。
我们可以看到,机器学习的本质是基于一种数据统计的 *** 或准则,k近邻(KNN) *** 和其它聚类、分类等数据挖掘 *** 的理论基础是地理学之一定律(Tobler'sFirstLaw),即:
Allattributevaluesonageographicsurfacearerelatedtoeachother,butcloservaluesaremorestronglyrelatedthanaremoredistantones.
“任何事物都相关,相近的事物关联更紧密”。KNN的基本思想类似于“物以类聚,人以群分”,打个通俗的比方就是“如果你要了解一个人,可以从他最亲近的几个朋友去推测他是什么样的人”,如果要判断一个样本点的类别,去看看和它相似的样本点的类别就行了。
这个算法如何用呢?我们来看2个示例。
一、KNN算法介绍
实例一:KNN分类(产品质量判断问题)
假设我们需要判断纸巾的品质好坏,纸巾的品质好坏可以通过两个指标来判断,一个是“酸腐蚀的时间”,一个是“能承受的压强”。如果我们的样本空间(又叫TrainingData,也就是用于机器学习的数据)如下:
那么,如果X1=3和X2=7,这个毛巾的品质是什么呢?这里就可以用KNN算法来判断。
假设K=3,K应该是一个奇数,这样可以保证不会有平票,下面是我们计算(3,7)到所有点的欧氏距离。
和(3,7)最近的3个样本,好的有2票,坏的有1票,最终需要测试的(3,7)是合格品。
自变量样本向量S0为,X1=5、X2=6、X3=8,Y=?。
解、依次计算S0到S1、S2、S3、S4、S5的欧氏距离为,6.12、5.87、2.5、1.345、1.349。
通过示例可以看出,KNN算法要解决好下面几个问题:
二、KNN分类代码样例
鸢尾花[iris]数据集是数据挖掘 *** 常用的经典聚类、分类案例数据。
鸢【音:yuān】尾花是单子叶百合目花卉,是一种比较常见的花,可能不经意间你就能在某个公园里碰见它,而且鸢尾花的品种较多。鸢尾花分类图如下:
鸢尾花数据集最初由EdgarAnderson测量得到,而后在著名的统计学家和生物学家RAFisher于1936年发表的文章「Theuseofmultiplemeasurementsintaxonomicproblems」中被使用,用其作为线性判别分析(LinearDiscriminantAnalysis)的一个例子,证明分类的统计 *** ,从此而被众人所知,尤其是在机器学习这个领域。
鸢尾花[iris]数据集是一个很小的数据集,仅有150行,5列。该数据集的四个特征属性的取值都是数值型的,他们具有相同的量纲(单位都是厘米),不需要你做任何标准化的处理,第五列(species)为通过前面四列所确定的鸢尾花所属的类别名称。
Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。通过
4个属性预测鸢尾花卉属于下列鸢尾花
鸢尾花数据(训练样本)EXCEL表格如下:
用KNN *** (K=9)进行分类,确定下面几组学习样本的类属。
本文用EXCEL构建KNN分类模板,采用二种距离公式(欧氏距离和曼哈顿距离)进行样本分类。
在训练样本表格计算欧氏距离(也可有其它距离公式),在G2定义欧氏公式:
[=ROUND(((Sheet2!B$3-B2)^2+(Sheet2!C$3-C2)^2+(Sheet2!D$3-D2)^2+(Sheet2!E$3-E2)^2)^0.5,4)】
注意,公式在Sheet2!B$3为跨表格引用当前样本属性数值。
在H2定义排序公式:【= *** ALL(G$2:G$151,$A2)】,复制、粘贴公式到H3:H151。
在I2定义公式:【=MATCH(H2,G$2:G$151,0)】,复制、粘贴公式到I3:I151。
V、在学习样本模板鸢尾花所属的类别发生次数(K=9)
在F3定义公式:【=IF(MATCH(MAX(F4:F6),F4:F6,0)=1,"Setosa",IF(MATCH(MAX(F4:F6),F4:F6,0)=2,"Versicolour","Virginica"))】
由于鸢尾花数据集有三个类别,每个类别有50个训练样本,所以取K=50进行分类。
H3和I3分别计算K=9和K=50的分类可靠性(准确率)。
由于每个类别有50个训练样本,取K=50时进行分类,通过统计50个较小欧氏距离中某个最多类别的数量后再除50,可以用来作为可靠性指标。
最后,在B2下拉框中选择1-5个学习样本,整理出分类结果如下表:
EXCEL鸢尾花数据集下载地址:http://www.galaxystatistics.com/excel/iris.xlsx
上一篇:做父母绝对绝对不能犯的错
相关文章
网友点评
博博常识网
www.kissing2lips.com