代码:k近邻算法原理

本文介绍了一种基于k近邻算法的电影类型预测方法,通过分析电影中的打斗镜头和接吻镜头数量,预测新电影可能属于的动作片或爱情片类别。文章详细展示了算法的实现过程,包括数据预处理、距离计算、类别投票等关键步骤。
摘要由CSDN通过智能技术生成
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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值