Python中的元组错误怎么样?

时间:2013-02-01 15:42:07

标签: python numpy

我正在尝试学习一点机器学习(和python),现在用k-Nearest Neighbors进行分类。我收到这个错误(发生了什么?):

dataSetSize = dataSet.shape[0]
TypeError: 'tuple' object is not callable

检查可调用:

>>> callable(group)
False
>>> callable(labels)
False
>>> g = group()

他们是假的,但如何使他们成为真的?

数据:

>>> group
array([[ 1. ,  1.1],
       [ 1. ,  1. ],
       [ 0. ,  0. ],
       [ 0. ,  0.1]])
>>> labels
['A', 'A', 'B', 'B']

当我在我的组变量上执行此操作时,我得到了这个:

group.shape[0]
4

我对此功能的调用:

>>> kNN.classify0([0, 0], group, labels, 3)



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
     sortedDistIndices = distances.argsort()
     classCount = {}
     for i in range(k):
       voteIlabel = labels[sortedDistIndices[i]]
       classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
     sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
     return sortedClassCount[0][0]

3 个答案:

答案 0 :(得分:2)

这意味着它不可调用。如果您尝试从整数调用某些内容,则会出现相同的错误。您最有可能致电dataSet[0].shape。很难知道,因为我不知道dataSet [0]

的位置

答案 1 :(得分:1)

使用内置的callable函数检查对象是否可调用:
callabe(object) =>如果object是可调用的,则返回True

答案 2 :(得分:-1)

您没有正确传递变量。

kNN.classify0([2,2], group, labels, 3)

未设置组