• 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)


  • 相关阅读:
    【转】大型高性能ASP.NET系统架构设计
    【原创】构建高性能ASP.NET站点 第五章—性能调优综述(后篇)
    表关联键上创建索引的重要性
    NorthScale Memcached Server尝试总结
    转:80后的80条幽默有哲理的语录
    利用AOP重构代码
    Sandcastle Help File Builder
    酒店项目OO设计
    泛型委托在项目中的应用
    SQL CTE能帮助我做什么
  • 原文地址:https://www.cnblogs.com/lcl15/p/8126349.html
Copyright © 2020-2023  润新知