1

今のところk最近傍法で分類するために、私は少しの機械学習(およびPython)を学ぼうとしています。このエラーが発生します(何が起こっているのですか?):

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 に答える