v_measure_score#

sklearn.metrics.v_measure_score(labels_true, labels_pred, *, beta=1.0)[源代码]#

给定基本事实的V测量集群标记。

该分数与 normalized_mutual_info_score'arithmetic' 平均选项。

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

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

该指标与标签的绝对值无关:类或集群标签值的排列不会以任何方式改变得分值。

该指标还具有对称性:切换 label_truelabel_pred 将返回相同的分数值。当真正的基本事实未知时,这对于测量同一数据集上两个独立标签分配策略的一致性很有用。

阅读更多的 User Guide .

参数:
labels_true形状类似阵列(n_samples,)

用作参考的地面真相类标签。

labels_pred形状类似阵列(n_samples,)

要评估的集群标签。

betafloat,默认=1.0

归因于的重量比 homogeneity vs completeness .如果 beta 大于1, completeness 在计算中权重更大。如果 beta 小于1, homogeneity 权重更强。

返回:
v_measure浮子

评分在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 <https://aclweb.org/anthology/D/D07/D07-1043.pdf> _

示例

完美的标签既同质又完整,因此评分为1.0::

>>> from sklearn.metrics.cluster import v_measure_score
>>> v_measure_score([0, 0, 1, 1], [0, 0, 1, 1])
np.float64(1.0)
>>> v_measure_score([0, 0, 1, 1], [1, 1, 0, 0])
np.float64(1.0)

将所有类成员分配到相同集群的标签是完整的,但不是同质的,因此受到处罚::

>>> print("%.6f" % v_measure_score([0, 0, 1, 2], [0, 0, 1, 1]))
0.8...
>>> print("%.6f" % v_measure_score([0, 1, 2, 3], [0, 0, 1, 1]))
0.66...

具有纯集群且成员来自相同类的标签是同质的,但不必要的分裂会损害完整性,因此也会惩罚V-测量:

>>> print("%.6f" % v_measure_score([0, 0, 1, 1], [0, 0, 1, 2]))
0.8...
>>> print("%.6f" % v_measure_score([0, 0, 1, 1], [0, 1, 2, 3]))
0.66...

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

>>> print("%.6f" % v_measure_score([0, 0, 0, 0], [0, 1, 2, 3]))
0.0...

包含来自完全不同类别的样本的聚类完全破坏了标签的均匀性,因此:

>>> print("%.6f" % v_measure_score([0, 0, 1, 1], [0, 0, 0, 0]))
0.0...