[mechine learning] KNN算法

本周学习了用python实现kNN算法,下面写一写学习的总结。

KNN算法的原理是选择一系列带有标签的数据集作为训练集,然后将待分类的新数据(没有标记)中每一个特征(A0,A1...)与训练集中特征([B0,B1...],[C0,C1...])通过欧拉公式的计算找出训练集中与新数据距离最近的前K个样本,并找出前K个样本的分类标签(K通常不大于20)然后选择这前K个最相似的样本中出现次数最多的标签,作为新数据的标签。


一 . KNN算法的一般流程

收集数据—准备数据(格式化数据,使其能够输入分类器)—分析数据—测试算法(计算错误率)—使用算法(使算法用能用于判定新数据的分类)


二.  KNN算法的核心代码:


注:

1.  kNN分类算法需要四个参数(待分类的新数据,训练集,对应训练集的标签集,K)    

2.  17行函数tile()进行数组的复制

3.  31行get():返回字典一个键值对[标签:出现次数],0作为初始化每一个新出现的标签的次数,当相同的标签再次出现时,次数加1

4.  35行itemgetter(1): 按照元组的第二个元素进行排列,即按照【标签:次数】中的次数大小进行排列

5.  42行返回出现次数最多的标签。


三。 在准备数据的步骤中  从文本文件中解析数据的代码


注:

1.  50行和59行的[0:3]的3可以自由设置,表示存贮数据的多少个特征值


四。 归一化特征值: 

    由于每一个特征的取值范围不一样,会影响距离计算的结果,因此需要对每一个特征值进行归一化处理,代码如下:




五。 测试KNN算法,计算错误率 。代码如下:




六。 实例:约会网站预测







  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值