书2.1.2
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]
diffMat = tile(inX, (dataSetSize,1)) - dataSet
sqDiffMat = diffMat**2
sqDisttances = sqDiffMat.sum(axis=1)
distances = sqDisttances**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]
runfile('C:/Users/zy/.spyder-py3/site_packages/kNN.py', wdir='C:/Users/zy/.spyder-py3/site_packages')
import kNN
group,labels = kNN.createDataSet()
group
Out[4]:
array([[1. , 1.1],
[1. , 1. ],
[0. , 0. ],
[0. , 0.1]])
labels
Out[5]: ['A', 'A', 'B', 'B']
kNN.classify0([0,0], group, labels, 3)
Traceback (most recent call last):
File "<ipython-input-6-dd10108cf6df>", line 1, in <module>
kNN.classify0([0,0], group, labels, 3)
File "C:\Users\zy\.spyder-py3\site_packages\kNN.py", line 26, in classify0
sortedClassCount = sorted(classCount.iteritems(),
AttributeError: 'dict' object has no attribute 'iteritems'
runfile('C:/Users/zy/.spyder-py3/site_packages/kNN.py', wdir='C:/Users/zy/.spyder-py3/site_packages')
Reloaded modules: kNN
kNN.classify0([0,0], group, labels, 3)
Out[8]: 'B'