一、K近邻算法
1 什么是K近邻算法(k-Nearest Neighbours KNN)
-
简介
- 最近邻算法是一种分类算法
- 1968年由Cover和Hart提出,应用场景有字符识别、文本分类、图像识别等领域。
- 该算法的思想:一个样本与数据集中的k个样本最相似,这k个样本中的大多数属于同一个类别
-
特点
根据邻居的位置来推断自己的位置。 -
定义
如果一个样本在特征空间中的k个最相似样本中的大多数属于同一个类别,则该样本也属于这个类别. -
案例-电影类型分析
3 k近邻算法API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)
- n_neighbors:int,可选,默认5
4 k值的选择
- k值的考虑
- k值过小:容易受到异常点的影响
- k值过大:容易受到样本均衡的影响
1、选择较小的k值,就相当于用较小领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,学习的估计误差会增大,换句话说K值减小就意味着整体模型变得复杂,容易发生过拟合;
2、选择较大的K值时,与输入实例较远的训练实例与会对预测器起作用,使预测发生错误,且K值的增大就意味着整体模型变得简单。
- 近似误差和估计误差
近似误差:对现有训练集的训练误差,关注训练集,如果近似误差过小可能会出现拟合的现象,对现有训练集能够很好的预测,但是对位置的测试样本出现较大偏差的预测。模型本身不是最接近最佳模型。
估计误差:可以理解为对测试集的测试误差,关注测试集,估计误差小说明对未知数据的预测能力好,模型本身最接近最佳模型。
二、距离计算
1 闵式距离
-
定义
闵式距离包括欧氏距离、曼哈顿距离、切比雪夫距离等 -
缺点:
- 将各个变量的量纲(scale)也就是单位相同看待了
- 未考虑各个分量的分布(期望、方差等)可能是不同的
-
欧氏距离公式
-
曼哈顿距离
切比雪夫距离(Chebyshev Distance)
闵可夫斯基距离:
2 标准化欧氏距离
3 余弦距离
4 汉明距离
5 杰卡德距离
6 马氏距离
三、Scikit-learn
1 Scikit-learn
- 安装及使用
# 安装
pip3 install scikit-learn==0.19.1
# 导入
import sklearn
- 包含的内容
2 数据集
- 小数据集的获取
from sklearn.datasets import load_iris
iris = load_iris()
print(iris)
- 大数据集的获取
API:sklearn.datasets.fetch_20newsgroups()