01 基本原理
给定一个数据集,对于新的输入实例,在训练集中找到与该实例最邻近的K个实例,这K个实例中的大多数属于某个类别,则认为该输入实例就属于某个类别。
02 优缺点
优点:易于实现,无需估计参数,无需训练,支持增量学习
缺点:计算量大,分析速度慢(需要扫描全部训练样本并计算距离)
03 KNN的三要素
1.距离度量:衡量特征空间中两个实例点的距离
2.K值得选择:K值过小,近似误差减小,估计误差变大,易于过拟合,噪声敏感。K值过大,近似误差变大,估计误差变小。
3.决策规则:多数表决法,也可以用加权表决法,权重为距离平方的倒数。
04 优化计算量
由于需要计算全部特征距离,计算量过大,可以采用二叉树的数据存储方式减少计算量。
05 构建KNN分类器基本步骤
1.计算输入X与训练数据集中的各点的距离。
2.按照距离,选取距离最近的K个点。
3.对K个点的类别归类计数,x归为计数最大的类(加权表决)
4.或者对K个点的类别按权值归类计数,x归为计数大的类。
06 自定义KNN分类器代码
# newInput: 新输入的待分类数据(x_test),本分类器一次只能对一个新输入分类
# dataset:输入