k-neighbor算法

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值