1.直接上代码
import numpy as np
#import operator
import math
def createDataSet():
group = np.array([[1.0, 2.0], [1.2,0.1], [0.1,1.4], [0.3,3.5]])
labels = ['A', 'A', 'B', 'B']
return group, labels
def classify(testData, trainData, trainlabel, k):
dataSize = trainData.shape[0]
#calu distacne
#tile, repeat data
diff = np.tile(testData, (dataSize, 1)) - trainData
sdiff = diff ** 2
#get sum result per row
sumSdiff = np.sum(sdiff, axis = 1)
dist = sumSdiff ** 0.5
# sort,return index,up
sortedIndexUp = np.argsort(dist)
#use dictory,key = label, value = nums
labelDict = {}
for i in range(k):
tL = trainlabel[sortedIndexUp[i]]
labelDict[tL] = labelDict.get(tL, 0) + 1
defaultValue = 0
for k, v in labelDict.items():
if v > defaultValue:
defaultValue = v
classes = k
return classes
if __name__ == "__main__":
group, lables = createDataSet()
testData = [1.1, 0.3]
k = 3
cla = classify(testData, group, lables, k)
print("predict calssify=", cla)import numpy as np
#import ope