1

我正在尝试学习一点机器学习(和 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]
4

3 回答 3

2

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

于 2013-02-01T15:44:51.780 回答
1

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

于 2013-02-01T15:47:20.110 回答
-1

您没有正确传递变量。

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

未设置组

于 2014-08-25T19:53:51.320 回答