如何将 ids 映射到各自的集群?

How to get a mapping of ids to their respective cluster?

我暂时使用 DBSCAN 对随机数据进行了聚类分析。但是,最后我想要这样的映射:

[Cluster, Total_users]
[A,10]
[B,6]
[C,60]

起点是我的这段代码,但最后,输出缺少这个列表。有人知道我该怎么做吗?

from sklearn.cluster import DBSCAN

data = np.array([[-37.530, 3.109, -16.452],
                    [40.247, 5.483, -15.209],
                    [-31.920, 12.584, -12.916],
                    [-32.760, 14.072, -13.749],
                    [-37.100, 1.953, -15.720],
                    [-32.143, 12.990, -13.488],
                    [-41.077, 4.651, -15.651], 
                    [-34.219, 13.611, -13.090],
                    [-33.117, 15.875, -13.738]])


model = DBSCAN(eps=2.5, min_samples=2)
model.fit_predict(data)
pred = model.fit_predict(data)

print("number of cluster found: {}".format(len(set(model.labels_))))

你可以使用

from collections import Counter, defaultdict
print(Counter(model.labels_))

输出会像

Counter({1: 5, 0: 2, -1: 2})

其中,

标签 0 有 2 个元素
标签 1 有 5 个元素

and -1 在 dbscan 中有两个均值离群值。

或者, 您可以使用

import pandas as pd
pd.Series(pred).value_counts()


 1    5
-1    2
 0    2
dtype: int64

如@Quang Hoang 所建议,输出相同。