目录
1.k-近邻算法概述
1.1 k-近邻算法
K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。
1.2 k-近邻算法步骤
1--准备数据,分析数据,对数据进行预处理,归一化处理;
2--划分训练集和测试集;
3--计算未知样本和每个训练集样本的距离;
4--设定参数,k值;
5--将距离升序排列;
6--选取距离最小的k个点;
7--统计前k个最近邻样本点所在类别出现的次数;
8--多数表决,选择出现频率最大的类别作为未知样本的类别。
1.3 距离公式
d=x1-x22+(y1-y2)2
2.算法实现步骤
2.1 问题描述
训练集给定一些同学的文科综合与理科综合成绩,通过kNN算法判断给定同学为文科生还是理科生。
2.2 代码实现过程
1.导入所需数据
2.选择欧式距离计算已知类别数据集中的每个样本与测试样本之间的距离
3.对距离按照从小到大的顺序进行排序
4.选取与测试样本距离最近的 𝑘 个样本
5.确定前 𝑘 个样本所在类别出现的频率
2.3 实现结果
3.算法分析
3.1 实验对比分析
当k=3时,
当k=5时,
3.2 总结
k值的选择:
在KNN算法中,K值的选择对模型的性能有很大影响:如果K值较小,模型会变得复杂,容易过拟合;如果K值较大,模型会变得简单,但可能欠拟合。
kNN算法优缺点:
优点:KNN算法理论成熟且思想简单,适用于分类和回归问题;可以处理非线性分类;训练时间复杂度相对较低,尤其是与支持向量机等算法相比;对数据没有假设,因此对异常点不敏感;适用于样本容量较大的类域自动分类,特别是当类域之间交叉或重叠较多时,KNN算法较为适合。
缺点:KNN算法在计算上较为复杂,特别是在特征数量多的时候;样本不平衡时,对稀有类别的预测准确率较低;建立模型如KD树或球树需要大量内存;相比决策树模型,KNN模型的可解释性较弱。