【问题标题】:scikit k-means: Find data-points that belong to resulting cluster of specific centroidsscikit k-means:查找属于特定质心生成集群的数据点
【发布时间】:2019-11-26 17:13:11
【问题描述】:

所以,我有以下 sn-p 在 k-means 上工作以生成 2 个集群。 虽然,我们能够找到 2 个结果聚类的质心以及每个聚类标签有多少数据点的计数, 有没有办法知道质心为特定值或大于某个值的每个集群的数据点。

from sklearn.cluster import KMeans
import numpy as np
x = np.random.random(100)
# print(x)
km = KMeans(n_clusters=2)
# km = KMeans(n_clusters=3, verbose=1)

estimator = km.fit(x.reshape(-1,1))
print("centroids: ", km.cluster_centers_)
print("labels: ", km.labels_)
mydict = {i: np.where(km.labels_ == i)[0] for i in range(km.n_clusters)}
print(mydict)

输出:

centroids:  [[0.78049437]
 [0.28805844]]
labels:  [0 0 1 0 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1
 1 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 1 1 0
 0 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 0 1 0 0]
{0: array([ 0,  1,  3,  5,  6,  7, 10, 11, 18, 20, 22, 23, 25, 28, 30, 31, 33,
       34, 35, 40, 42, 44, 49, 55, 57, 58, 59, 62, 66, 67, 68, 69, 70, 73,
       74, 78, 80, 86, 89, 91, 92, 96, 98, 99]), 1: array([ 2,  4,  8,  9, 12, 13, 14, 15, 16, 17, 19, 21, 24, 26, 27, 29, 32,
       36, 37, 38, 39, 41, 43, 45, 46, 47, 48, 50, 51, 52, 53, 54, 56, 60,
       61, 63, 64, 65, 71, 72, 75, 76, 77, 79, 81, 82, 83, 84, 85, 87, 88,
       90, 93, 94, 95, 97])}

简而言之,字典中的键现在是我想成为集群中心的集群标签。如下所示:

{0.78049437: array[0, 1, 3, 5..]}
{0.28805844: array[40, 42, 44, 49, ..]}

感谢任何帮助。

【问题讨论】:

    标签: python numpy scikit-learn cluster-analysis k-means


    【解决方案1】:

    对您的字典理解稍作改动即可:

    my_dict = {km.cluster_centers_[i, 0]: np.where(km.labels_ == i)[0] for i in range(km.n_clusters)}
    

    【讨论】:

      【解决方案2】:

      请注意,k-means 侧重于寻找中心,而不是分割阈值。所以它不是一维数据的特别好的方法(不是很快,因为算法是为多变量数据设计的)。我宁愿在核密度估计中找到最小值来识别分裂点,并将结果范围描述为 (min,max) 区间。

      【讨论】:

        猜你喜欢
        • 2013-09-18
        • 2020-01-16
        • 2022-01-01
        • 1970-01-01
        • 2016-11-24
        • 2018-05-09
        • 2021-04-19
        • 2020-02-21
        • 2018-09-26
        相关资源
        最近更新 更多