在python中获取sklearn中的簇大小

时间:2017-09-11 12:17:42

标签: python machine-learning scikit-learn cluster-analysis dbscan

我正在使用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中的簇大小?

2 个答案:

答案 0 :(得分:2)

您可以Bincount Function in Numpy获取标签的频率。例如,我们将使用example for DBSCAN使用scikit-learn:

#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个值:

top_labels = np.argsort(-counts)[:2]

print top_labels
#Output : [2 1]

#To get their respective frequencies
print counts[top_labels]

答案 1 :(得分:2)

另一种选择是使用<Entry Placeholder="Paste here your value" HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand"> <Entry.Behaviors> <validator:EntryValidatorBehavior x:Name="numberValidator"/> </Entry.Behaviors> </Entry>

numpy.unique