在python的sklearn中获取集群大小

2024-09-30 14:27:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用sklearn DBSCAN对我的数据进行如下聚类。在

#Apply DBSCAN (sims == my data as list of lists)
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)
#Returns the number of clusters (E.g., 10 clusters)
print('Estimated number of clusters: %d' % db1n_clusters_)

现在我想从大小(每个集群中的数据点数量)中得到前3个集群。请告诉我如何获取sklearn中的簇大小?在


Tags: of数据numberdatalabelsmy集群聚类
2条回答

你可以Bincount Function in Numpy得到标签的频率。例如,我们将使用scikit learn使用example for DBSCAN

#Store the labels
labels = db.labels_

#Then get the frequency count of the non-negative labels
counts = np.bincount(labels[labels>=0])

print counts
#Output : [243 244 245]

然后使用argsort in numpy获得前3个值。在我们的示例中,由于只有3个簇,因此我将提取前2个值:

^{pr2}$

另一个选择是使用numpy.unique

db1_labels = db1.labels_
labels, counts = np.unique(db1_labels[db1_labels>=0], return_counts=True)
print labels[np.argsort(-counts)[:3]]

相关问题 更多 >