v_measure_score#
- sklearn.metrics.v_measure_score(labels_true, labels_pred, *, beta=1.0)[source]#
给定地面实况的 V-measure 聚类标签。
此分数与
normalized_mutual_info_score相同,其中平均选项为'arithmetic'。V-measure 是同质性(homogeneity)和完整性(completeness)的调和平均值
v = (1 + beta) * homogeneity * completeness / (beta * homogeneity + completeness)
此度量独立于标签的绝对值:类或簇标签值的排列不会以任何方式改变分数。
此指标还具有对称性:将
label_true与label_pred互换将返回相同的分数。当真实的基本事实未知时,这对于衡量同一数据集上两种独立标签分配策略的一致性非常有用。在 用户指南 中了解更多信息。
- 参数:
- labels_true形状为 (n_samples,) 的类数组
用作参考的真实类别标签。
- labels_pred形状为 (n_samples,) 的类数组
要评估的簇标签。
- betafloat, default=1.0
分配给
homogeneity与completeness的权重比例。如果beta大于 1,则completeness在计算中被赋予更高的权重。如果beta小于 1,则homogeneity被赋予更高的权重。
- 返回:
- v_measurefloat
分数介于0.0和1.0之间。1.0表示完全完整的标签。
另请参阅
homogeneity_score聚类标签的同质性指标。
completeness_score聚类标记的完整性指标。
normalized_mutual_info_score归一化互信息(Normalized Mutual Information)。
References
示例
完美的标签既是同质的又是完整的,因此分数为 1.0
>>> from sklearn.metrics.cluster import v_measure_score >>> v_measure_score([0, 0, 1, 1], [0, 0, 1, 1]) 1.0 >>> v_measure_score([0, 0, 1, 1], [1, 1, 0, 0]) 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.67
具有来自相同类别的成员的纯净聚类的标签具有同质性,但不必要的分裂会损害完整性,因此也会惩罚 V-measure
>>> 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.67
如果类别成员完全分散在不同的聚类中,则分配是完全不完整的,因此 V-Measure 为零
>>> 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