问题来源
p42 3.2把前三点归为红点,后三点归为绿点,对习题3.2中点进行分类
代码
# _*_ coding: utf-8 _*_
import numpy as np
import operator
#训练集创建
def DataSet():
group = np.array([[2,3],[5,4],[9,6],[4,7],[8,1],[7,2]])
#六组二维特征
labels = ['红点','红点','红点','绿点','绿点','绿点']
return group, labels
#做分类结果
def classify(Cet,Data,labels,k):
classcount = {}
Datasize = Data.shape[0]
Chazhi = np.tile(Cet,(Datasize,1)) - Data
Pingfang = Chazhi**2
Qiuhe = Pingfang.sum(axis = 1)
distances = Qiuhe**0.5
sorteddistances = distances.argsort()
for i in range(k):
labelcount = labels[sorteddistances[i]]
classcount[labelcount] = classcount.get(labelcount,0) + 1
sortedclasscount = sorted(classcount.items(),key=operator.itemgetter(1),reverse=True)
return sortedclasscount[0][0]
if __name__=='__main__':
group, labels = DataSet()
test = [3,4.5]
test_class = classify(test,group,labels,5)
print(test_class)