文本文档聚类 - 非统一聚类

时间:2015-02-25 18:12:46

标签: scikit-learn cluster-analysis k-means text-mining tf-idf

我一直在尝试群集一组文本文档。我有一个稀疏的TFIDF矩阵,有大约10k个文档(大数据集的子集),我尝试运行scikit-learn k-means算法,使用不同大小的簇(10,50,100)。休息所有参数都是默认值。

我得到一个非常奇怪的行为,无论我指定了多少个簇,或者即使我改变了迭代次数,批次中也会有1个集群,其中包含大部分文档,并且会有很多集群其中只有1个文件。这是非常不均匀的行为

有谁知道我遇到了什么样的问题?

1 个答案:

答案 0 :(得分:1)

以下是可能出现“错误”的可能事情:

  1. 您的k-means群集初始化点在每次运行中被选为相同的点集。我建议使用'random'作为k-means http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html的init参数。如果这不起作用,则提供给k-意味着您自己的一组随机初始聚类中心。请记住使用seed()方法初始化随机生成器作为当前日期和时间。 https://docs.python.org/2/library/random.html使用当前日期时间作为默认值。

  2. 您的距离函数,即欧几里德距离可能是罪魁祸首。这种可能性较小,但使用余弦相似性运行k-means总是好的,特别是当您将其用于文档相似性时。 scikits目前没有此功能,但你应该看一下:Is it possible to specify your own distance function using scikit-learn K-Means Clustering?

  3. 这两个组合应该会给你很好的集群。