【问题标题】:How to get the text of cluster centers from scikit-learn KMeans?如何从 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 的相关索引。

【问题讨论】:

    标签: python machine-learning k-means scikit-learn


    【解决方案1】:

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

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

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

    【讨论】:

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