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代表完整标签 |
另见:
参考
示例
完整标签既均匀又完整,因此得分为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.66...
如果类成员完全分散在不同的集群中,则分配完全不完整,因此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...