【发布时间】: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