网站大量收购闲置独家精品文档,联系QQ:2885784924

KNN(K近邻法)算法原理.pdfVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

KNN((K近近邻邻法法))算算法法原原理理

⼀⼀、、K近近邻邻概概述述

k近邻法(k-nearestneighbor,kNN)是⼀种基本分类与回归⽅法(有监督学习的⼀种),KNN(k-nearestneighboralgorithm)算法的核⼼想是如果⼀个样本在特征空间中的k(k⼀般不超过20)个最相邻的样本中的⼤多数属于某⼀个

类别,则该样本也属于这个类别,并具有这个类别上样本的特性。简单地说,K-近邻算法采⽤测量不同特征值之间的距离⽅法进⾏分类。

通常,在分类任务中可使⽤“投票法”,即选择这k个实例中出现最多的标记类别作为预测结果;在回归任务中可使⽤“平均法”,即将这k个实例的实值输出标记的平均值作为预测结果;还可基于距离远近进⾏加权平均或加权投票,距离越近

的实例权重越⼤。

k近邻法不具有显式的学习过程,事实上,它是懒惰学习(lazylearning)的著名代表,此类学习技术在训练阶段仅仅是把样本保存起来,训练时间开销为零,待收到测试样本后再进⾏处理

K近邻算法的优缺点:

优点:精度⾼、对异常值不敏感、⽆数据输⼊假定

缺点:计算复杂度⾼、空间复杂度⾼

适⽤数据范围:数值型和标称型

⼆⼆、、K近近邻邻法法的的三三要要素素

距离度量、k值的选择及分类决策规则是k近邻法的三个基本要素。根据选择的距离度量(如曼哈顿距离或欧⽒距离),可计算测试实例与训练集中的每个实例点的距离,根据k值选择k个最近邻点,最后根据分类决策规则将测试实例分

类。

根据欧⽒距离,选择k=4个离测试实例最近的训练实例(红圈处),再根据多数表决的分类决策规则,即这4个实例多数属于“-类”,可推断测试实例为“-类”。

k近邻法198年由Cover和Hart提出

1.距距离离度度量量

特征空间中的两个实例点的距离是两个实例点相似程度的反映。K近邻法的特征空间⼀般是n维实数向量空间Rn。使⽤的距离是欧⽒距离,但也可以是其他距离,如更⼀般的Lp距离或Minkowski距离

Minkowski距离(也叫闵⽒距离):

当p=1时,得到绝对值距离,也称曼哈顿距离(Manhattandistance),在⼆维空间中可以看出,这种距离是计算两点之间的直⾓边距离,相当于城市中出租汽车沿城市街道拐直⾓前进⽽不能⾛两点连接间的最短距离,绝对值距

离的特点是各特征参数以等权参与进来,所以也称等混合距离

当p=2时,得到欧⼏⾥德距离(Euclideandistance),就是两点之间的直线距离(以下简称欧⽒距离)。欧⽒距离中各特征参数是等权的

当p趋向⽆穷∞,得到切⽐雪夫距离

设特征空间X是n维实数向量空间,的L距离定义为

p

这⾥p≥1。

当p=1时,称为曼哈顿距离(Manhattandistance),即

当p=2时,称为欧⽒距离(Euclideandistance),即

当p=∞时,它是各个坐标距离的最⼤值,即

证明:以⼆维实数向量空间(n=2)为例说明曼哈顿距离和欧⽒距离的物理意义

(1)曼哈顿距离

(2)欧⽒距离

2.K值值的的选选择择

k值的选择会对k近邻法的结果产⽣重⼤影响。在应⽤中,k值⼀般取⼀个⽐较⼩的数值,通常采⽤交叉验证法来选取最优的k值

说明⼀下:我举这个例⼦,虽说不是k近邻,但是我们可以操作这种⽅式去找到⽐较适合的参数,当然也可以使⽤⽹格搜索法

fromsklearn.ensembleimportGradientBoostingClassifier

depth_=[1,2,3,4,5,,7,8]

scores=[]

fordepthindepth_:

clf=GradientBoostingClassifier(n_estimators=100,max_dep

文档评论(0)

139****2118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档