我正在使用sklearn的DBSCAN对我的数据进行聚类,代码如下所示。
# 应用DBSCAN(sims == 我的数据,列表的列表形式)
db1 = DBSCAN(min_samples=1, metric='precomputed').fit(sims)
db1_labels = db1.labels_
db1n_clusters_ = len(set(db1_labels)) - (1 if -1 in db1_labels else 0)
# 返回聚类的数量(例如,10个聚类)
print('估计的聚类数量: %d' % db1n_clusters_)
现在我想获取按大小(每个聚类中的数据点数量)排序的前3个聚类。请告诉我如何在sklearn中获取聚类大小?
回答:
另一种方法是使用numpy.unique
:
db1_labels = db1.labels_
labels, counts = np.unique(db1_labels[db1_labels>=0], return_counts=True)
print(labels[np.argsort(-counts)[:3]])