使用python和scikit-learn的DBSCAN:make_blobs返回的整数实验是什么?

时间:2013-04-04 18:39:32

标签: python scikit-learn dbscan

我正在尝试理解scikit(http://scikit-learn.org/0.13/auto_examples/cluster/plot_dbscan.html)实现的DBSCAN算法的示例。

我改变了行

X, labels_true = make_blobs(n_samples=750, centers=centers, cluster_std=0.4)

使用X = my_own_data,因此我可以将自己的数据用于DBSCAN。

现在,变量labels_truemake_blobs的第二个返回参数,用于计算结果的某些值,如下所示:

print "Homogeneity: %0.3f" % metrics.homogeneity_score(labels_true, labels)
print "Completeness: %0.3f" % metrics.completeness_score(labels_true, labels)
print "V-measure: %0.3f" % metrics.v_measure_score(labels_true, labels)
print "Adjusted Rand Index: %0.3f" % \
    metrics.adjusted_rand_score(labels_true, labels)
print "Adjusted Mutual Information: %0.3f" % \
    metrics.adjusted_mutual_info_score(labels_true, labels)
print ("Silhouette Coefficient: %0.3f" %
       metrics.silhouette_score(D, labels, metric='precomputed'))

如何从我的数据labels_true计算X?在这个案例中,scikit究竟与label有什么关系?

感谢您的帮助!

1 个答案:

答案 0 :(得分:11)

labels_true是指向标签的“真正”分配:它们应该属于哪个群集。这是可用的,因为make_blobs知道它从哪个“blob”生成点。

你不能为你自己的任意数据X得到它,除非你有点某种真正的标签(在这种情况下你不会做任何聚类)。这只是展示了一些衡量聚类在一个虚假案例中表现得如何,你知道真正答案的程度。