Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from numpy import *
- import operator
- def createDataSet():
- group = 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]
- '''将其填充和数据集一样形状,并求差 '''
- a = tile(inX, (dataSetSize, 1))
- diffMat = a - dataSet
- '''求差后,每一个元素平方'''
- sqDiffMat = diffMat ** 2
- '''求距离数组中每一组元素的和,即实际距离的平方'''
- sqDistances = sqDiffMat.sum(axis=1)
- '''距离开方'''
- distances = sqDistances ** 0.5
- '''距离排序'''
- sortedDistIndicies = distances.argsort()
- classCount = {}
- for i in range(k):
- voteIlabel = labels[sortedDistIndicies[i]]
- classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
- sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
- return sortedClassCount[0][0]
- if __name__ == '__main__':
- group, labels = createDataSet()
- classify0([0, 0], group, labels, 3)
Add Comment
Please, Sign In to add comment