机器学习(四)最邻近规则分类

K-Nearest Neighbor (KNN) 是一种简单的机器学习算法,用于分类。KNN属于懒惰学习,仅在预测时进行分类。其核心思想是通过寻找最近邻来确定样本类别,即“近朱者赤近墨者黑”。KNN通过计算特征空间中样本之间的距离来分类,例如使用欧几里得距离。算法的优缺点包括:简单易实现但计算量大,适合处理多分类问题但对样本不平衡敏感。改进策略包括属性约简和权重调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       最邻近规则分类英文名字是:K-Nearest Neighbor,简称为KNN。它是机器学习中比较简单的算法,它是Cover和Hart在1968年提出来的最初原型为临近算法,它最早用于分类,故它属于分类算法中的一种;输入是有基于实例的学习(Instance-based Learning)即它的学习是从输入的一些带有label标签的实例中得来的,它也称为懒惰学习(Lazy Learning)(因为开始时它并不需要建立任何的模型,在实例进行测试归类时才进行分类)。

       最邻近规则分类定义:就像它名字所说的一样,在一些样本中根据特征值的相似性把其中特征向量相邻最近的一些样本实例划分为一类,然后再来了一个新样本时根据特征值再和K个聚类的特征值进行比较,在这K个聚类的特征值中属于哪一类的多就属于哪一类。即“近朱者赤近墨者黑”的道理,由你的相似实例的特征向量推断出你的分类。核心思想是:如果一个样本实例在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。

       举一个例子:在我们看电影时,判别电影是动作片还是浪漫爱情片,其中有一些实例样本,在这些实例样本中统计了两个特征向量:1接吻次数;2:打斗次数。见如下图所示:


        其中我们看到在前3个电影中打斗次数为3次、2次、1次;接吻次数为:104次、100次、81次;它被分为浪漫爱情片;在后3个电影中打斗次数为101次、99次、98次;接吻次数为10次、5次、2次;它被分为动作片;故来了第7个样本它的打斗次数为18次,接吻次数为90次,判断它是哪一种类型的电影;我们可以把机器学习中的最邻近规则分类算法应用于这个实例中,其中更为抽象的见下图:


        其中把7部电影分为7个样本,抽象简化为7个二维空间中的点:6个训练样本抽象简化为6个二维坐标上的点,1个测试样本抽象简化为1个二维坐标上的点;其中6个训练样本已经分类完毕,画在二维坐标平面上,x轴代表接吻次数,y轴代表打斗次数,其中A、B、C三点代表浪漫爱情片,D、E、F三点代表动作片;G点X轴接吻为90,Y轴打斗为18,然后在二维坐标平面上看G点离A、B、C三点浪漫爱情片近还是离动作片近,即可分出G点为哪一类电影。

       这个例子中我们以欧几里得距离来判断距离远近,选择参数K为5;进行判断G点属于哪一类:

      其中欧几里得距离定义为:


        故用Python实现为:

[python]  view plain   copy
  1. # coding:utf-8  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值