机器学习教程之2-k近邻模型的sklearn实现

来源:互联网 发布:mysql execute into 编辑:程序博客网 时间:2024/06/13 22:02

0.概述

1)k近邻法通过少数服从多数的原则进行预测;
2)k近邻法不具有显式的学习过程;
3)k紧邻法的三个基本要素k值得选择距离度量分类决策规则

优点
简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归;
可用于数值型数据和离散型数据;
训练时间复杂度为O(n^2);无数据输入假定;
对异常值不敏感。

缺点
计算复杂性高;空间复杂性高;
样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);
一般数值很大的时候不用这个,计算量太大。但是单个样本又不能太少,否则容易发生误分。
最大的缺点是无法给出数据的内在含义。

1.k近邻算法

这里写图片描述

2.k近邻模型

2.1模型

下图分为两类:

这里写图片描述

2.2距离度量

距离度量方式有很多种,选择的度量方式不同,判断的最近邻点也就有可能不同。

2.3k值得选择

k值得减少就意味着整体模型变得复杂,容易发生过拟合;
k值得增大意味着整体模型变得简单,预测容易发生错误。

2.4分类决策规则

多数表决规则等价于经验风险最小化。

3.k近邻法的实现:kd树

3.1构造kd树

这里写图片描述

这里写图片描述

3.2搜索kd树

这里写图片描述

这里写图片描述

4.代码

我的github上的代码:
(1)Nearest Neighbors API的使用
(2)使用scikit-learn的KNN算法进行分类的一个实例,使用数据集依是iris(鸢尾花)数据集
(3)sklearn实现kaggle Digit Recognizer

5.总结

这里写图片描述

6.参考资料

[1] 统计学习方法 李航
[2] sklearn官方教程-nearest neighbor
[3] sklearn官方教程-Nearest Neighbors API
[4] scikit-learn学习之K最近邻算法(KNN)
[5] 计算Python Numpy向量之间的欧氏距离
[6] Python3《机器学习实战》学习笔记(一):k-近邻算法(史诗级干货长文)
[7][Python学习] python 科学计算库NumPy—tile函数

原创粉丝点击