I am trying to learn python for Machine Learning and I just copied an example from the test book to my IDEL program. Here is the code, copied from here
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
sqDistances = sqDiffMat.sum(axis = 1)
distances = sqDistances ** 0.5
sortedDistIndicies = distances.argsort()
# Voting with lowest k distances
classCount={}
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
# Decompose into a list of tuples and sort by second item
sortedClassCount = sorted(classCount.iteritems(),
key=operator.itemgetter(1), reverse=True)
return sortedClassCount[0][0]
group, labels = createDataSet()
classify0([0,0], group, labels, 3)
Then I compel it in IDLE but I am keep getting the following error message in Python Shell. (I am using version 3.4.3)
The error message is:
Traceback (most recent call last):
File "/Users/Python/KNN.py", line 32, in <module>
classify0([0,0], group, labels, 3)
File "/Users/Python/KNN.py", line 26, in classify0
sortedClassCount = sorted(classCount.itemgetter(),
AttributeError: 'dict' object has no attribute 'itemgetter'
I just don't understand why this is not working...and I don't even see where this 'dict' object is...Please help!