本周学习了用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算法,计算错误率 。代码如下:
六。 实例:约会网站预测