# -*- coding: UTF-8 -*-
import numpy as np
import operator
def createDataSet():
#四组二维特征
group = np.array([[1,101],[5,89],[108,5],[115,8]])
#四组特征的标签
labels = ['爱情片','爱情片','动作片','动作片']
return group, labels
def classify0(test, group, labels, k):
#得到作差后的新数组
diffmat=test-group
sqdiffmat=diffmat**2
#sum()所有元素相加,sum(0)所有列相加得到新的列表,sum(1)所有行相加
dis1=sqdiffmat.sum(axis=1)
dis=dis1**0.5
#返回一个列表的顺序排序索引
sorted_disindex=dis.argsort()
classCount={} #创建空字典
for i in range(k):
#取出前k个元素的类别
votelabel = labels[sorted_disindex[i]]
#dict.get(key,default=None),字典的get()方法,返回指定键的值,如果值不在字典中返回默认值。
#计算类别次
classCount[votelabel]=classCount.get(votelabel,0) + 1
# #key=operator.itemgetter(1)根据字典的值进行排序
#key=operator.itemgetter(0)根据字典的键进行排序
#reverse降序排序字典
sortedclassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
return sortedclassCount[0][0]
if __name__ == '__main__':
#创建数据集
group, labels = createDataSet()
#测试集
test = [101,20]
#kNN分类
test_class = classify0(test, group, labels, 3)
#打印分类结果
print(test_class)
机器学习实战之KNN分类器实现
猜你喜欢
转载自blog.csdn.net/qq_42422981/article/details/84249959
今日推荐
周排行