一、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()
K近邻算法(KNN)是一种基于实例的学习,通过找到数据集中与新样本最相似的k个邻居来决定其分类。算法特点在于利用邻居的位置推断自身类别。K值的选择至关重要,过小可能导致过拟合,过大则可能引入噪声。距离计算方面,包括欧氏距离、曼哈顿距离和切比雪夫距离等,但这些未考虑变量分布差异。标准化欧氏距离和余弦距离等是解决这一问题的方法。Scikit-learn库提供了KNN实现,如sklearn.neighbors.KNeighborsClassifier,并提供多种数据集获取方式。
1055

被折叠的 条评论
为什么被折叠?



