zoukankan      html  css  js  c++  java
  • KNN 算法分类电影类型

    需求:怎样用KNN算法来分类电影是动作片还是爱情片。

    分类标准:统计电影中打斗镜头和接吻镜头的次数

    '''

    KNN算法:
    1.计算测试数据于训练数据之间的距离
    2.按照距离的远近排序(距离由近到远)
    3.选取距离最近的K个点
    4.统计K个点分别对应类别出现的概率
    5.概率最高的就是测试数据类别

    通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题
    KNN通过依据k个对象中占优的类别进行决策,而不是单一的对象类别决策


    '''

    KNN算法:
    1.计算测试数据于训练数据之间的距离
    2.按照距离的远近排序(距离由近到远)
    3.选取距离最近的K个点
    4.统计K个点分别对应类别出现的概率
    5.概率最高的就是测试数据类别

    通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题
    KNN通过依据k个对象中占优的类别进行决策,而不是单一的对象类别决策



    '''
    import numpy as np

    # 构建数据
    def creatDataSet():
    # 喜剧片 科幻片 爱情片 动作片
    group = np.array([[3,10,23,114],
    [2,5,23,160],
    [1,9,8,154],
    [101,10,12,11],
    [99,5,7,8,],
    [98,2,10,5],
    [4,99,14,10],
    [6,100,11,23],
    [9,100,1,1],
    [1,4,99,3],
    [4,5,78,6],
    [1,4,88,9]])
    labels = ["动作片","动作片","动作片","喜剧片","喜剧片","喜剧片","科幻片","科幻片","科幻片","爱情片","爱情片","爱情片"]
    return group, labels

    def classify(input, dataSet, labels, k):
    # 获得样本的行数
    dataSize = dataSet.shape[0]
    print(dataSet.shape[0])
    # 利用欧式距离公式计算距离
    # nump.tile() 就是把数组沿各个方向复制
    print(input)
    kdiff = np.tile(input, (dataSize, 1)) - dataSet
    sqdiff = kdiff**2
    # 行向量分别相加,从而得到新的一个行向量
    sqnumdiff = np.sum(sqdiff, axis=1)
    dist = sqnumdiff**0.5
    # 将距离进行排序
    soreDistIndex = np.argsort(dist)
    classCount = {}
    for i in range(k):
    print(soreDistIndex[i])
    voteLabel = labels[soreDistIndex[i]]
    print(voteLabel)
    # 对选取的K个样本所属的类别个数进行统计
    classCount[voteLabel] = classCount.get(voteLabel, 0) + 1
    # 选取出现的类别次数最多的类别
    maxCount = 0
    for key, value in classCount.items():
    if value > maxCount:
    maxCount = value
    classes = key

    return classes

    if __name__ == "__main__":
    dataSet, labels = creatDataSet()
    # 测试数据
    input = np.array([9,90,500,4])
    k = 3
    output = classify(input, dataSet, labels, k)
    print("测试数据为:", input, "分类结果为:", output)


  • 相关阅读:
    用 Python 带你看各国 GDP 变迁
    Fluent Interface(流式接口)
    probing privatePath如何作用于ASP.NET MVC View
    Word插入htm文件导致文本域动态增加的一个问题
    Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法
    Ubuntu下Chrome运行Silverlight程序
    Windows Phone Bing lock screen doesn't change解决方法
    SPClaimsUtility.AuthenticateFormsUser的证书验证问题
    Web Service Client使用Microsoft WSE 2.0
    Visual Studio 2013安装Update 3启动crash的解决方法
  • 原文地址:https://www.cnblogs.com/lcl15/p/8126349.html
Copyright © 2011-2022 走看看