【Python机器学习】k-近邻算法简单实践——电影分类
创始人
2024-12-11 22:34:49
0

k-近邻算法(KNN)的工作原理是:存在一个样本数据集合,也被称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系,输入没有标签的数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。

一般来说,我们只选择样本数据集中出现次数最多的分类,作为新数据分类。

分类场景:通过电影中打斗镜头和接吻镜头,使用k-近邻算法分类爱情片和动作片。

参考数据:

电影名称

打斗镜头接吻镜头电影类型
aaa3104爱情片
bbb2100爱情片
ccc181爱情片
ddd10110动作片
eee995动作片
fff982动作片
zzzzz1890???

k近邻算法的一般流程:

1、收集数据

2、准备数据

3、分析数据

4、训练算法

5、测试算法

6、使用算法

准备:使用Python导入数据

首先,导入所需模块:

from numpy import * import operator

第一个是科学计算包Numpy;第二个是运算符模块。

然后创建createDataSet函数,它创建数据集合标签:

def createDataSet():     group=array([[3,104],[2,100],[1,81],[101,10],[99,5],[98,2]])     labels=['A','A','A','B','B','B']     return group,labels

这里有6组数据,每组数据有2个已知属性/特征值。

实施kNN分类算法:

运行kNN算法,为每组数据分类:首先,k-近邻算法伪代码:

对未知类别属性的数据集中的每个点依次执行以下操作:

1、计算已知类别数据集中的点与当前点之间的距离;

2、按照距离递增次序排队;

3、选取与当前点距离最小的k个点;

4、确定前k个点所在类别的出现频率;

5、返回前k个点出现频率最高的类别作为当前点的预测分类。

实际Python代码:

def classify0(inX,dataSet,lables,k):     dataSetSize=dataSet.shape[0]     #举例计算     diffMat=tile(inX,(dataSetSize,1))-dataSet     sqDiffMat=diffMat**2     sqDistinaces=sqDiffMat.sum(axis=1)     distances=sqDistinaces**0.5     sortedDistIndicies=distances.argsort()     #选择举例最小的前k个点     classCount={}     for i in range(k):         voteIlabel=lables[sortedDistIndicies[i]]         classCount[voteIlabel]=classCount.get(voteIlabel,0)+1         #print(classCount)     #排序     sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)     return sortedClassCount[0][0]

classify0()函数有4个输入参数:用于分类的输入向量是inX,输入的训练样本集为dataSet,标签向量为labels,最后的参数k表示用于选择最近邻居的数目,其中标签向量的元素数目和矩阵dataSet的行数相同。

计算完所有点之间的距离后,可以对数据按照从小到大的次序排序。然后,确定前k个距离最小元素所在的主要分类,输入k总是正整数;最后,将classCount字典分解为元组列表,然后使用程序第2行导入运算符模块的itemgetter方法,按照第二个元素的次序对元组进行排序。

实际运行:

group,lables=createDataSet() print(classify0([18,90],group,lables,3))

相关内容

热门资讯

今天上午!闲逸辅助app官方下... 今天上午!闲逸辅助app官方下载(辅助)原来真的是有辅助修改器(发现有挂)-哔哩哔哩1、闲逸辅助ap...
揭秘攻略!中至余干小程序辅助安... 揭秘攻略!中至余干小程序辅助安装,wepoker私人局怎么玩,指引教程(有挂秘诀)-哔哩哔哩1、这是...
教你透视!hhpoker真能买... 教你透视!hhpoker真能买到挂吗,哈糖大菠萝软件下载,讲义教程(有挂分析)-哔哩哔哩1、金币登录...
专业透视!wepoker有人用... 专业透视!wepoker有人用过吗,微乐游戏小程序辅助器免费,手段教程(有挂头条)-哔哩哔哩1、金币...
昨日!一乐浙江辅助软件(辅助)... 昨日!一乐浙江辅助软件(辅助)果然是有辅助工具(有挂详细)-哔哩哔哩1、操作简单,无需一乐浙江辅助软...
总算了解!!爱玩联盟辅助软件,... 总算了解!!爱玩联盟辅助软件,pokerworld破解版下载,操作教程(有挂猫腻)-哔哩哔哩1、po...
解谜透视!wpk软件是正规的吗... 解谜透视!wpk软件是正规的吗,wepoker是不是有人用挂,办法教程(有挂分享)-哔哩哔哩1、游戏...
开挂透视!aapoker透视脚... 开挂透视!aapoker透视脚本入口,微乐自建房辅助工具安全吗,秘籍教程(有挂秘诀)-哔哩哔哩1、超...
据通报!唯思竞技修改器(辅助)... 据通报!唯思竞技修改器(辅助)真是是有辅助app(有挂存在)-哔哩哔哩1、不需要AI权限,帮助你快速...
教你透视!哈糖大菠萝免费辅助器... 教你透视!哈糖大菠萝免费辅助器,wepoker透视器免费,法门教程(真的有挂)-哔哩哔哩1、完成哈糖...