【问题标题】:Distance between clusters kmeans sklearn python集群之间的距离kmeans sklearn python
【发布时间】:2019-01-14 17:24:08
【问题描述】:

我正在使用 sklearn 的 k-means 聚类来聚类我的数据。现在我想知道我的集群之间的距离,但找不到。我可以计算每个质心之间的距离,但想知道是否有一个函数可以得到它,以及是否有办法获得每个簇之间的最小/最大/平均链接距离。我的代码很简单:

km = KMeans(n_clusters = 5, random_state = 1)
km.fit(X_tfidf )

clusterkm = km.cluster_centers_

clusters = km.labels_.tolist()

谢谢!

【问题讨论】:

    标签: python scikit-learn distance k-means


    【解决方案1】:

    km.inertia_ 是 sklearn 的度量,KMeans 是距离平方和。

    来自 sklearn 网站: 惯性_:浮动 样本到它们最近的聚类中心的距离平方和,如果提供,则按样本权重加权。 https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案2】:

    不幸的是,您将不得不自己计算集群中心上的这些距离。 Scikit 没有提供开箱即用的方法。这是一个类似的问题设置:

    from sklearn.datasets import load_iris
    from sklearn.cluster import KMeans
    from sklearn.metrics.pairwise import euclidean_distances
    
    X, y = load_iris(return_X_y=True)
    km = KMeans(n_clusters = 5, random_state = 1).fit(X)
    

    以及如何计算距离:

    dists = euclidean_distances(km.cluster_centers_)
    

    然后要获得您感兴趣的统计数据,您只需计算距离矩阵的上(或下)三角角:

    import numpy as np
    tri_dists = dists[np.triu_indices(5, 1)]
    max_dist, avg_dist, min_dist = tri_dists.max(), tri_dists.mean(), tri_dists.min()
    

    【讨论】:

    • dists = euclidean_distances(km.cluster_centers_) 这正是我所需要的,谢谢!
    猜你喜欢
    • 2019-06-11
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2017-10-17
    • 2016-04-10
    • 2019-11-30
    • 2017-04-11
    相关资源
    最近更新 更多