import pandas as pd
"""
inX:预测的新数据
dataSet:训练数据集
k:最近邻个数
"""
def classify0(inX,dataSet,k):
""" k近邻通用函数"""
result = []
dataSet1=dataSet.iloc[:,1:3]#取所有的行,取列的索引1,2
#列表的切片,第一个元素的索引和最后一个元素的索引加1
dataSet2=(dataSet1-inX)**2#将dataSet1中的对应元素减去新数据的平方
dataSet3=dataSet2.sum(1)#将dataSet2索引1和2两列求和相加,两列变一列
dataSet4=dataSet3**0.5#开根号
dist = list(dataSet4)#将dataSet4的图表变成列表[,,,]
distzidian={'distance':dist,'labels':dataSet.iloc[:,3]}#构建字典,距离与标签
dist_l = pd.DataFrame(distzidian)#将字典变成图表,distance与labels作为列
dr = dist_l.sort_values(by = 'distance')[: k]#按照distance列数值大小排序,取前k个
re = dr.loc[:, 'labels'].value_counts()#求出labels列动作片和爱情片的各自数量
result.append(re.index[0])#求出数量大的类型,并加到result末尾
return result
#训练集数据
rowdata={'电影名称':['无问西东','后来的我们','前任3','红海行动','唐人街探案','战狼2'],
'打斗镜头':[1,5,12,108,112,115],
'接吻镜头':[101,89,97,5,9,8],
'电影类型':['爱情片','爱情片','爱情片','动作片','动作片','动作片']}
movie_data= pd.DataFrame(rowdata)#将rowdata的字典变成表格形式
#预测的新数据
new_data = [100,67]
#预测输出
result1=classify0(new_data,movie_data,4)
print(result1)
代码:k近邻算法原理
最新推荐文章于 2021-04-07 16:35:40 发布
本文介绍了一种基于k近邻算法的电影类型预测方法,通过分析电影中的打斗镜头和接吻镜头数量,预测新电影可能属于的动作片或爱情片类别。文章详细展示了算法的实现过程,包括数据预处理、距离计算、类别投票等关键步骤。
摘要由CSDN通过智能技术生成