k-近邻算法

只是学习记录,有不好的地方,请走过路过的美女帅哥们见谅。

书:<机器学习实战><python高级编程>

K-近邻算法

简单地说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。

优点:精度高、对异常值不敏感、无数据输入假定。

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

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

k-近邻算法(kNN)的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。

k-近邻算法的一般流程

收集数据:可以使用任何方法。

准备数据:距离计算所需要的数值,最好是结构化的数据格式。

分析数据:可以使用任何方法。

测试算法:计算错误率。

使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类。

1、导入数据

我们在命令行使用Python3.5查看导入的结果

k-近邻算法

2、通过创建点图来分析数据

显示原始数据的点图

k-近邻算法

k-近邻算法

分析数据

k-近邻算法

代码解释:按照数据1,2列属性进行聚类。

k-近邻算法

我们可以通过修改代码位的列来展现不同的效果点图

按2,3列属性聚类:

k-近邻算法

k-近邻算法

3、归一化

由于得到的数据单位各有不同,为了减小数值间的差异对预测结果的影响,我们要将所有的特征值都归为[0,1].

k-近邻算法

4、测试

k-近邻算法

注意:一定要NotePad+下设置显示“空格与制表符”,因为会很容易出现制表符造成“TabError: inconsistent use of tabs and spaces in indentation”的错误

今天就到这了,明天会介绍k-近邻的算法原理,祝大家顺利。

源码和数据资源在这里:

http://download.csdn.net/download/qq_34385827/9945077

参考:

http://blog.csdn.net/Lu597203933/article/details/37969799

http://www.cnblogs.com/qwertWZ/p/4510859.html