我有一个非常大的文本信息数据集(大约350万条)。我使用tf-idf-vector来表示这个数据集中的每条消息。我想把同一主题的消息聚在一起,但我不知道实际的聚簇,甚至不知道它们的数量。
所以我搜索了一下,发现optics、dbscan或hdbscan可以完成这项工作,但是没有实现它们 mllib
. 根据spark的说法 mllib
以下是 K-means
, Gaussian mixture
, Power iteration clustering (PIC)
, Latent Dirichlet allocation (LDA)
, Bisecting k-means
以及 Streaming k-means
.
所以我的问题是,它们都需要k作为输入,而我没有。spark中有没有实现的聚类算法可以自己找到聚类的数目?
1条答案
按热度按时间aiqt4smr1#
有点太长了,不能发表评论。我在这里解释一下。
你有消息属于哪个主题的数据吗?然后,您可以简单地按该主题进行分组,以将具有类似主题的所有消息分组。
这是一回事。如果您正试图从数据集本身派生主题(k),那么您需要更多的统计信息来构建一个合理的功能集来对它们进行聚类。然后你可以通过改变它来得出关于k的结论,并找到误差最小的最佳k。有一种著名的方法叫做
elbow method
.看看这个。https://www.geeksforgeeks.org/ml-determine-the-optimal-value-of-k-in-k-means-clustering/#:~:text=there%20a%20popular%20method,在%20cluster中减少了%20elements%20。