当我将常规 knn 方法应用于我的算法时,我遇到了这个问题:
类型错误:不可散列类型:'numpy.ndarray'
def classify(inx, dataset, labels, k):
dist = tf.sqrt(tf.reduce_sum(tf.square(inx - dataset), axis=1))
k_labels = [labels[index] for index in np.argsort(dist)[0 : k]]
lab = collections.Counter(k_labels).most_common(1)[0][0]
return lab
错误:
File "C:/Users/xjy/untitled0.py", line 166, in classify
lab = collections.Counter(k_labels).most_common(1)[0][0]
File "C:\Users\xjy\Anaconda3\envs\xjy\lib\collections\__init__.py", line 535, in __init__
self.update(*args, **kwds)
File "C:\Users\xjy\Anaconda3\envs\xjy\lib\collections\__init__.py", line 622, in update
_count_elements(self, iterable)
TypeError: unhashable type: 'numpy.ndarray'
如果您k_labels是[array([1., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)]
那么
用
lab = collections.Counter(k_labels[0]).most_common(1)[0][0]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句