如何从 scikit-learn KMeans 中获取聚类中心的文本?

Posted

技术标签:

【中文标题】如何从 scikit-learn KMeans 中获取聚类中心的文本?【英文标题】:How to get the text of cluster centers from scikit-learn KMeans? 【发布时间】:2012-07-05 21:45:54 【问题描述】:

我有一个适合sklearn.cluster.KMeans的字符串列表:

X = TfidfVectorizer().fit_transform(docs)
km = KMeans().fit(X)

现在我想以原始字符串表示形式获取集群中心。我知道km.cluster_centers_,但不知道如何获取docs 的相关索引。

【问题讨论】:

【参考方案1】:

k-means 中没有聚类中心的“原始表示”;它们实际上不是输入集中的点(矢量化文档),而是多个点的手段。由于词袋表示破坏了术语的顺序,因此无法将此类方法转换回文档。

一种可能的近似方法是取一个质心向量,然后在其上使用TfidfVectorizer.inverse_transform 来找出其中哪些项具有非零 tf-idf 值。

您可以使用k-medoids 算法实现您想要的,该算法确实将实际输入点分配为质心,但这在 scikit-learn 中没有实现。

【讨论】:

您可以使用 Affinity Propagation 算法,该算法也将实际数据点作为聚类中心返回。 @cjohnson318:好点。不过,我从未在文本上尝试过这种算法。 @larsmans:感谢您的澄清和指向 k-medoids 的指针! @larsmans:我刚刚发现了它,所以它是我最喜欢的新算法,适用于所有事情。我喜欢它,因为您不需要知道要查找的集群数量,但对于此应用程序,先验指定集群数量可能更合适。我不确定。 @mathias 但是由于 KMeans 确实返回了质心,您只需计算数据集中每个点到每个中心的欧几里得距离,然后返回最接近质心的实际数据点。

以上是关于如何从 scikit-learn KMeans 中获取聚类中心的文本?的主要内容,如果未能解决你的问题,请参考以下文章

Scikit-learn,KMeans:如何使用 max_iter

kmeans scikit-learn 教程

k-means+python︱scikit-learn中的KMeans聚类实现( + MiniBatchKMeans)

[机器学习与scikit-learn-23]:算法-聚类-KMeans算法的工作原理

使用 GridSearchCV scikit-learn 在管道中的 KMeans

Scikit-learn kmeans 聚类