网站首页 >> 百科知识 >> 正文
简介: KNN算法即KNearestNeighbor算法。这个算法是机器学习里面一个比较经典的、相对比较容易理解的算法。其中的K表示最接近自己的K个数据样本。KNN算法是用来做归类的,也就是说,一个样本空间里

数据挖掘通常与什么有关系 KNN算法 - 数据挖掘方法

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

日常生活里,经常会碰到一些五花八门的小困难。不过好久好在有困难就有方法,如果你足够的细心,你会发现这些小困难都有着对应的小方法。

Powered By Z-BlogPHP Theme By . 鲁ICP备2021032584号-5