【问题标题】:How to get a mapping of ids to their respective cluster?如何将 id 映射到各自的集群?
【发布时间】:2020-01-14 15:43:12
【问题描述】:

我现在使用 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_))))

【问题讨论】:

  • pd.Series(pred).value_counts()?

标签: python-3.x pandas cluster-analysis


【解决方案1】:

你可以使用

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

输出会是这样的

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

在哪里,

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

和 -1 表示 dbscan 中的异常值。

或者, 你可以使用

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


 1    5
-1    2
 0    2
dtype: int64

正如@Quang Hoang 所建议的,它给出了相同的输出。

【讨论】:

  • Aunsid 和 Quang Hoang 感谢你们的帮助!它有效!
猜你喜欢
  • 2023-02-22
  • 2022-01-22
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 2015-07-13
  • 2021-03-05
  • 1970-01-01
相关资源
最近更新 更多