def classify0(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0]
diffMat = np.tile(inX, (dataSetSize,1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
sortedDistIndicies = distances.argsort()
#print(sortedDistIndicies)
#print(len(sortedDistIndicies))
classCount={}
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
voteIlabel=voteIlabel[0]####这一步不做就会报错
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
#print('step:',i,' voteIlabel:',voteIlabel)
#print(classCount)
sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
#print('result:',sortedClassCount[0][0])
return sortedClassCount[0][0]
def autoNorm(dataSet):
minVals = dataSet.min(axis=0)
maxVals = dataSet.max(axis=0)
ranges = maxVals - minVals
normDataSet = np.zeros(np.shape(dataSet))
m = dataSet.shape[0]
normDataSet = dataSet - np.tile(minVals, (m,1))
normDataSet = normDataSet/np.tile(ranges, (m,1)) #element wise divide
return normDataSet, ranges, minVals