sklearn.metrics.v_measure_score

sklearn.metrics.v_measure_score(labels_true, labels_pred, *, beta=1.0)

源码

V-度量簇标签给出了真实值。

此分数与使用'arithmetic'选项进行平均的normalized_mutual_info_score相同。

V度量是均匀性和完整性之间的调和均值:

v = (1 + beta) * homogeneity * completeness
     / (beta * homogeneity + completeness)

此指标独立于标签的绝对值:类别或簇标签值的排列不会以任何方式改变得分值。

此度量还对称:将label_true与label_pred互换将返回相同的分值。当未知真实值时,对于测量两个独立标签分配策略在同一数据集上的一致性很有用。

用户指南中阅读更多内容。

参数 说明
labels_true int array, shape = [n_samples]
真实类标签用作参考
labels_pred array-like of shape (n_samples,)
聚类标签以进行评估
beta float
同质性(homogeneity)与完整性(completeness)的比重比。如果beta大于1,则在计算中对完整性的加权更大。如果beta小于1,则同质性的权重会更大。
返回值 说明
v_measure float
分数介于0.0和1.0之间。1.0代表完整标签

另见:

homogeneity_score

completeness_score

normalized_mutual_info_score

参考

1 Andrew Rosenberg and Julia Hirschberg, 2007. V-Measure: A conditional entropy-based external cluster evaluation measure

示例

完整标签既均匀又完整,因此得分为1.0:

>>> from sklearn.metrics.cluster import v_measure_score
>>> v_measure_score([0011], [0011])
1.0
>>> v_measure_score([0011], [1100])
1.0

将所有的类成员分配到同一个集群的标签是完全不同质的,因此会受惩罚:

>>> print("%.6f" % v_measure_score([0012], [0011]))
0.8...
>>> print("%.6f" % v_measure_score([0123], [0011]))
0.66...

如果类成员完全分散在不同的集群中,则分配完全不完整,因此V-Measure为空:

>>> print("%.6f" % v_measure_score([0000], [0123]))
0.0...

包含完全不同类别的样本的聚类会完全破坏标签的同质性,因此:

>>> print("%.6f" % v_measure_score([0011], [0000]))
0.0...