一,KNN算法简介
KNN(K-Nearest Neighbor)即K邻近法,是机器学习算法中最基础、最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值之间的距离来进行分类,用老话说:“人以群分,物以类聚”。KNN 算法是有监督学习中的分类算法,它看起来和另一个机器学习算法 K-means 有点像(K-means 是无监督学习算法),但却是有本质区别的。
二,KNN算法思想流程
1》,分类流程
1.计算未知样本到每一个训练样本的距离
2.将训练样本根据距离大小升序排列
3.取出距离最近的K个训练样本
4.进行多数表决,统计K个样本中哪个类别的样本个数最多
5.将未知的样本归属到出现次数最多的类别
2》,回归流程
1.计算未知样本到每一个训练样本的距离
2.将训练样本根据距离大小升序排列
3.取出距离最近的K个训练样本
4.把这个K个样本的目标值计算其平均值
5.作为将未知的样本预测的值
3》,K值的选择
K值过小:用较小邻域中的训练实例进行预测容易受到异常点的影响K值的减小就意味着整体模型变得复杂,容易发生过拟合•
K值过大:用较大邻域中的训练实例进行预测受到样本均衡的问题且K值的增大就意味着整体的模型变得简单,欠拟合
三,KNN的算法代码实现
1 导入必要的库和数据集
首先,我们需要导入一些必要的库和数据集。scikit-learn 库提供了许多机器学习算法的实现,包括 KNN。
2 数据集的划分
我们将使用 scikit-learn 库中的鸢尾花数据集。这个数据集包含了 150 个样本,每个样本有 4 个特征,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。数据集中的每个样本都属于三个类别之一:Setosa、Versicolor 和 Virginica。
3 计算距离
KNN 算法的核心是计算样本之间的距离。常用的距离度量方法有欧氏距离、曼哈顿距离等。在这里,我们将使用默认的欧氏距离。
4 找出最近的 K 个近邻
在 KNN 算法中,我们需要找出与待预测样本最近的 K 个邻居。我们可以通过计算待预测样本与所有训练样本之间的距离,并选择最近的 K 个邻居