虽然我已经看到了很多与此相关的问题,但我并没有真正得到答案,可能是因为我是使用 nltk 聚类的新手。我真的需要一个基本的解释来帮助新手进行聚类,尤其是关于 NLTK K-mean 聚类的向量表示以及如何使用它。我有一个像 [cat, dog, kitten, puppy etc] 这样的单词列表和另外两个像 [carnivore, herbivore, pet, etc] 和 [mammal, domestic etc] 这样的单词列表。我希望能够使用第一个作为手段或质心基于第一个单词列表对最后两个单词列表进行聚类。我试过了,我收到了这样的 AssertionError:
clusterer = cluster.KMeansClusterer(2, euclidean_distance, initial_means=means)
File "C:\Python27\lib\site-packages\nltk\cluster\kmeans.py", line 64, in __init__
assert not initial_means or len(initial_means) == num_means
AND
print clusterer.cluster(vectors, True)
File "C:\Python27\lib\site-packages\nltk\cluster\util.py", line 55, in cluster
self.cluster_vectorspace(vectors, trace)
File "C:\Python27\lib\site-packages\nltk\cluster\kmeans.py", line 82, in cluster_vectorspace
self._cluster_vectorspace(vectors, trace)
File "C:\Python27\lib\site-packages\nltk\cluster\kmeans.py", line 113, in _cluster_vectorspace
index = self.classify_vectorspace(vector)
File "C:\Python27\lib\site-packages\nltk\cluster\kmeans.py", line 137, in classify_vectorspace
dist = self._distance(vector, mean)
File "C:\Python27\lib\site-packages\nltk\cluster\util.py", line 118, in euclidean_distance
diff = u - v
TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'
我认为我在矢量表示中有一些意思。矢量表示和示例代码的基本示例将受到高度赞赏。任何使用 nltk 或纯 python 的解决方案都将受到赞赏。提前感谢您的友好回复