Cluster computing 使用NLTK KMeans群集时具有AssertionError

Cluster computing 使用NLTK KMeans群集时具有AssertionError,cluster-computing,nltk,k-means,Cluster Computing,Nltk,K Means,我试图使用NLTK KMeans集群来集群一些向量。我有大约10维向量,当我尝试对它们进行聚类时,NLTK有时会出现如下错误: Traceback (most recent call last): File "/home/yhz82415/workspace/Grouping/src/Driver.py", line 27, in <module> main() File "/home/yhz82415/workspace/Grouping/src/Driver.py

我试图使用NLTK KMeans集群来集群一些向量。我有大约10维向量,当我尝试对它们进行聚类时,NLTK有时会出现如下错误:

Traceback (most recent call last):
  File "/home/yhz82415/workspace/Grouping/src/Driver.py", line 27, in <module>
    main()
  File "/home/yhz82415/workspace/Grouping/src/Driver.py", line 20, in main
    KMeans(numClusters, dictionary)
  File "/home/yhz82415/workspace/Grouping/src/Tools.py", line 78, in KMeans
    clusters=clusterer.cluster(vectors, True)
  File "/usr/local/lib/python2.7/dist-packages/nltk/cluster/util.py", line 51, in cluster
    self.cluster_vectorspace(vectors, trace)
  File "/usr/local/lib/python2.7/dist-packages/nltk/cluster/kmeans.py", line 70, in cluster_vectorspace
    self._cluster_vectorspace(vectors, trace)
  File "/usr/local/lib/python2.7/dist-packages/nltk/cluster/kmeans.py", line 109, in _cluster_vectorspace
    new_means = map(self._centroid, clusters)
  File "/usr/local/lib/python2.7/dist-packages/nltk/cluster/kmeans.py", line 149, in _centroid
    assert len(cluster) > 0
AssertionError
回溯(最近一次呼叫最后一次):
文件“/home/yhz82415/workspace/Grouping/src/Driver.py”,第27行,在
main()
文件“/home/yhz82415/workspace/Grouping/src/Driver.py”,第20行,在main中
KMeans(numClusters,字典)
文件“/home/yhz82415/workspace/Grouping/src/Tools.py”,第78行,以KMeans表示
clusters=cluster.cluster(向量,真)
文件“/usr/local/lib/python2.7/dist-packages/nltk/cluster/util.py”,第51行,在集群中
self.cluster_向量空间(向量,跟踪)
文件“/usr/local/lib/python2.7/dist packages/nltk/cluster/kmeans.py”,第70行,在cluster\u向量空间中
self.\u cluster\u向量空间(向量、轨迹)
文件“/usr/local/lib/python2.7/dist packages/nltk/cluster/kmeans.py”,第109行,在向量空间中
新的_平均值=映射(自质心,簇)
文件“/usr/local/lib/python2.7/dist-packages/nltk/cluster/kmeans.py”,第149行,在质心处
断言len(集群)>0
断言错误
错误并不总是会出现,有时会,有时不会

我已经试过了演示代码,效果很好

有人有线索吗


提前感谢

根据我对源代码的了解(尽管它可能是nltk的不同版本),assert语句似乎位于函数
\u centroid
中。此函数的目的是计算簇的质心。如果一个簇没有点,那么计算一个质心就没有意义了,所以质心的第一行检查这个条件

现在,如果一个集群中有0个点,它可能意味着很多事情,这取决于您正在做什么。可能这是一个错误条件,可能这意味着可以处理该群集,可能您希望使用其他群集的点重新填充该群集。。。。无论什么因此,这是用户可能想知道的,但不一定要作为错误处理,因为它不一定是错误条件

顺便说一句,我正在检查的源代码的副本是