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_true
与label_pred
将返回相同的分数值。当真正的基本事实未知时,这对于测量同一数据集上两个独立标签分配策略的一致性很有用。阅读更多的 User Guide .
- 参数:
- labels_true形状类似阵列(n_samples,)
用作参考的地面真相类标签。
- labels_pred形状类似阵列(n_samples,)
要评估的集群标签。
- betafloat,默认=1.0
归因于的重量比
homogeneity
vscompleteness
.如果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...