Guest User

Untitled

a guest
Apr 21st, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. from numpy import *
  2. import operator
  3.  
  4.  
  5. def createDataSet():
  6. group = array([[1.0, 1, 1], [1.0, 1.0], [0, 0], [0, 0.1]])
  7. labels = ['A', 'A', 'B', 'B']
  8. return group, labels
  9.  
  10.  
  11. def classify0(inX, dataSet, labels, k):
  12. '''得到数组的形状和其行数 '''
  13. dataSetSize = dataSet.shape[0]
  14. '''将其填充和数据集一样形状,并求差 '''
  15.  
  16. a = tile(inX, (dataSetSize, 1))
  17.  
  18. diffMat = a - dataSet
  19. '''求差后,每一个元素平方'''
  20. sqDiffMat = diffMat ** 2
  21. '''求距离数组中每一组元素的和,即实际距离的平方'''
  22. sqDistances = sqDiffMat.sum(axis=1)
  23. '''距离开方'''
  24. distances = sqDistances ** 0.5
  25. '''距离排序'''
  26. sortedDistIndicies = distances.argsort()
  27.  
  28. classCount = {}
  29. for i in range(k):
  30. voteIlabel = labels[sortedDistIndicies[i]]
  31. classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
  32.  
  33. sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
  34. return sortedClassCount[0][0]
  35.  
  36.  
  37. if __name__ == '__main__':
  38. group, labels = createDataSet()
  39. classify0([0, 0], group, labels, 3)
Add Comment
Please, Sign In to add comment