• KNN分类算法


    是机器学习算法的一种。
    大概思想是人以群分,物以类聚。
    在分类时,选择距离预测点最近的前K个点,作为判断预测点类别的依据。
    距离的计算:可以采用欧式距离、曼哈顿距离等等。

    举个例子。电影分类的例子,以唐人街探案为例,参考:https://blog.csdn.net/weixin_45626815/article/details/109188186
    1、有下面的图片中的数据推测《唐人街探案》属于那种电影类型。

    在这里插入图片描述

    import math

    movie_data = {“宝贝当家”: [45, 2, 9, “喜剧片”],
    “美人鱼”: [21, 17, 5, “喜剧片”],
    “澳门风云3”: [54, 9, 11, “喜剧片”],
    “功夫熊猫3”: [39, 0, 31, “喜剧片”],
    “谍影重重”: [5, 2, 57, “动作片”],
    “叶问3”: [3, 2, 65, “动作片”],
    “伦敦陷落”: [2, 3, 55, “动作片”],
    “我的特工爷爷”: [6, 4, 21, “动作片”],
    “奔爱”: [7, 46, 4, “爱情片”],
    “夜孔雀”: [9, 39, 8, “爱情片”],
    “代理情人”: [9, 38, 2, “爱情片”],
    “新步步惊心”: [8, 34, 17, “爱情片”]}

    测试样本 唐人街探案": [23, 3, 17, “?片”]

    #下面为求与数据集中所有数据的距离代码:
    x = [23, 3, 17]
    KNN = []
    for key, v in movie_data.items():
    d = math.sqrt((x[0] - v[0]) ** 2 + (x[1] - v[1]) ** 2 + (x[2] - v[2]) ** 2)
    KNN.append([key, round(d, 2)])

    输出所用电影到 唐人街探案的距离

    print(KNN)

    #按照距离大小进行递增排序
    KNN.sort(key=lambda dis: dis[1])

    #选取距离最小的k个样本,这里取k=5;
    KNN=KNN[:5]
    print(KNN)

    #确定前k个样本所在类别出现的频率,并输出出现频率最高的类别
    labels = {“喜剧片”:0,“动作片”:0,“爱情片”:0}
    for s in KNN:
    label = movie_data[s[0]]
    labels[label[3]] += 1
    labels =sorted(labels.items(),key=lambda l: l[1],reverse=True)
    print(labels,labels[0][0],sep=‘\n’)
    ————————————————
    版权声明:本文为CSDN博主「zhh_lf」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_45626815/article/details/109188186

  • 相关阅读:
    文献阅读2
    RestTemplate踩坑 之 ContentType 自动添加字符集
    AI算法优缺点
    shell
    S25FL256S介绍及FPGA实现思路
    Go语言基于Iris+Xorm后台管理系统源码
    【AI 模型】首个 Joy 模型诞生!!!全民生成 Joy 大片
    华为机试 - 可以组成网络的服务器
    nSoftware SecureBlackbox 2022 Python 22.0.8 Crack
    MySQL 表数据多久刷一次盘?
  • 原文地址:https://blog.csdn.net/Hekena/article/details/126413070