• 机器学习实战之KNN分类器实现


     1 # -*- coding: UTF-8 -*-
     2 import numpy as np
     3 import operator 
     4 
     5 def createDataSet():
     6     #四组二维特征
     7     group = np.array([[1,101],[5,89],[108,5],[115,8]])
     8     #四组特征的标签
     9     labels = ['爱情片','爱情片','动作片','动作片']
    10     return group, labels  
    11 
    12     
    13 def classify0(test, group, labels, k):
    14     #得到作差后的新数组
    15     diffmat=test-group
    16     sqdiffmat=diffmat**2
    17     #sum()所有元素相加,sum(0)所有列相加得到新的列表,sum(1)所有行相加
    18     dis1=sqdiffmat.sum(axis=1)    
    19     dis=dis1**0.5
    20     #返回一个列表的顺序排序索引
    21     sorted_disindex=dis.argsort()   
    22 
    23     classCount={}  #创建空字典
    24     for i in range(k):
    25         #取出前k个元素的类别
    26         votelabel = labels[sorted_disindex[i]]
    27         #dict.get(key,default=None),字典的get()方法,返回指定键的值,如果值不在字典中返回默认值。
    28         #计算类别次
    29         classCount[votelabel]=classCount.get(votelabel,0) + 1
    30         # #key=operator.itemgetter(1)根据字典的值进行排序
    31         #key=operator.itemgetter(0)根据字典的键进行排序
    32         #reverse降序排序字典
    33     sortedclassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
    34     return  sortedclassCount[0][0]
    35 
    36    
    37 if __name__ == '__main__':    
    38     #创建数据集
    39     group, labels = createDataSet()
    40     #测试集
    41     test = [101,20]
    42     #kNN分类
    43     test_class = classify0(test, group, labels, 3)
    44     #打印分类结果
    45     print(test_class)
  • 相关阅读:
    javamail发送邮件
    java复制文件夹中的所有文件和文件夹到另一个文件夹中
    jsp中使用out和response.getOutputStream的方法
    PHP数组用法
    PHP中的session
    java中list按照某个属性排序方法
    java读取xml文件内容
    C#实现验证码
    java实现验证码功能
    Java IO(四)------字节输入输出流
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/12725333.html
Copyright © 2020-2023  润新知