import numpy as np
import operator
def createDataSet():
#数据集
group = np.array([[1.0,1.1],
[1.0,1.0],
[0,0],
[0,0.1]])
#标签
labels = ['A','A','B','B']
return group, labels
def classify0(inX, dataSet, labels, k):
#数据集的行数,即数据量
dataSetSize = dataSet.shape[0]
#np.tile(a,b):重复a数据b次,eg:np.tile([1,0],3),输出array([1, 0, 1, 0, 1, 0])
diffMat = np.tile(inX, (dataSetSize, 1)) - dataSet
sqDiffMat = diffMat ** 2
#.sum(axis):axis =1 是按行相加,axis = 0是按列相加
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances ** 0.5
#返回distance从小到大的索引值
sortedDistIndicies = distances.argsort()
classCount = {}
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
#各种类型的个数
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
print(classCount)
#dic.items():以列表返回元组数组
#降序排列(按照第二个元素的次序排列,即按类型的数量排序),返回排序的列表
sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse = True)
print(sortedClassCount)
return sortedClassCount[0][0]
group,labels = createDataSet()
print(classify0([0,0.2],group,labels,2))
网友评论