import pandas as pd
"""
KNN算法:由那些离X最近的k个点来投票决定X归为哪一类
参数说明:
predicted_data:预测分类的数据
dataSet:已知数据集(训练集)
k:k-neighbor算法参数,最近的k个点
返回(result):分类结果
"""
# 数据集,字典格式
row_data={'电影名称':['天下无贼','向前向前','大宅门','魔兽','退居二线的日子','叶问'],
'动作镜头':[3,8,32,58,112,134],
'爱情镜头':[91,78,70,15,29,18],
'电影类型':['爱情片','爱情片','爱情片','动作片','动作片','动作片']}
# 预测数据
predicted_data = [31,57]
# 数据转成DataFrame格式
movie_data= pd.DataFrame(row_data)
print(movie_data)
def k_neighbor(predicted_data,dataSet,k):
result = []
# iloc按序号选择,loc按表头选择,sum(1)按纵向求和
dist = list((((dataSet.iloc[:,1:3]-predicted_data)**2).sum(1))**0.5)
# 构造新的dataFrame数据,加上标签
dist_l = pd.DataFrame({'dist':dist,'labels':(dataSet.iloc[:, 3])})
# 按dist进行排序
dr = dist_l.sort_values(by = 'dist')[: k]
# 统计
re = dr.loc[:, 'labels'].value_counts()
result.append(re.index[0])
return result
result = k_neighbor(predicted_data,movie_data,3)
print(result)
k-neighbor算法
于 2023-11-14 10:19:53 首次发布