机器学习——KNN算法实战

一、KNN算法介绍
1.1 KNN算法概述
KNN(K-Nearest Neighbor)算法是机器学习算法中最基础、最简单的算法之一,是一种分类和回归的统计方法,是监督学习。KNN通过测量不同特征值之间的距离来进行分类。所谓k近邻,就是k个最近的邻居的意思,说的是每个样本类别都可以用它最接近的k个邻居的类别来代表。 就比如:判断一个人的人品好坏,只需要观察与他来往最密切的几个人的人品好坏就可以得出,即“近朱者赤,近墨者黑"。

举个例子:

图中绿色的点是我们要预测的那个点,假设K=3。那么KNN算法就会找到与它距离最近的三个点,看看哪种类别多一些,例子中蓝色三角形有两个,红色圆有一个,那么新来的绿色点就归类到蓝三角了。

二、KNN算法原理
1、KNN算法的基本原理

       对于一个新的未知样本,通过计算该样本与训练集中所有样本之间的距离,找到与之距离最近的K个样本,然后根据这K个最近邻样本的类别或数值属性来判断新样本的类别或预测其数值。


2、距离度量方法

       KNN算法中常用的距离度量方法主要包括以下几种:

欧氏距离(Euclidean Distance):这是最常见的距离度量方式,用于在二维或多维空间中计算两个样本之间的直线距离。在二维空间中,欧氏距离的计算公式为:

其中,(x1, y1)和(x2, y2)分别表示两个样本的坐标。欧氏距离提供了一种直观的相似性度量,特别适用于处理连续的实值特征。


曼哈顿距离(Manhattan Distance):在二维空间中,曼哈顿距离的计算公式为:

这个距离可以看作是两个样本在坐标轴上的距离之和。


闵可夫斯基距离(Minkowski Distance):这是一种通用的距离度量方式,可以根据具体的情况调整为欧氏距离、曼哈顿距离或切比雪夫距离。在二维空间中,闵可夫斯基距离的计算公式为:

其中,p是一个可调的参数。

       除了上述三种常用的距离度量方法外,还有切比雪夫距离、马氏距离、巴氏距离等其他的距离度量方法。这些距离度量方法的选择取决于数据的特性和问题的需求。博主在以下分类器中使用的是欧式距离。


3、K值的选择

      KNN算法中的K值选择是一个核心且关键的问题,因为它直接影响到算法的性能和预测结果。K值决定了用于分类或预测的最近邻居的数量。

K值过小:较小的K值意味着算法在预测时会更加关注与输入实例较近或相似的训练实例,这样“学习”的近似误差会减小,但估计误差可能会增大。换句话说,模型会变得相对复杂,且容易发生过拟合,即模型对训练数据的拟合度过高,导致对未知数据的预测能力下降。

K值过大:而较大的K值则会使算法在预测时考虑更大范围内的训练实例,这有助于减少估计误差,但可能会导致近似误差增大。这是因为与输入实例较远或不相似的训练实例也可能对预测结果产生影响,从而增加误判的可能性。此时,模型会变得相对简单。

       因此,在选择K值时,需要权衡近似误差和估计误差。通常,K值的选择没有固定的规则,而是需要通过交叉验证等方法来确定。交叉验证将数据集划分为训练集和验证集,然后针对不同的K值进行模型训练和验证,选择在验证集上表现最好的K值作为最终的选择。

       在实际应用中,K值一般取一个比较小的数值,并通过交叉验证等方法进行优化。这样可以在保证模型复杂度的同时,尽可能提高预测精度。需要注意的是,K值的选择并不是一成不变的,它需要根据具体的数据集和问题进行调整。

三、KNN算法实例 ——使用K-近邻算法根据鸢尾花外形进行分类

2.1数据集介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值