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是同质性和完整性的调和平均数。
v = (1 + beta) * homogeneity * completeness / (beta * homogeneity + completeness)
此度量独立于标签的绝对值:类或聚类标签值的排列不会以任何方式改变分数值。
此外,此度量是对称的:交换
label_true
和label_pred
将返回相同的分数值。当不知道真实的真实情况时,这对于测量两种独立的标签分配策略在同一数据集上的 agreement 非常有用。在用户指南中了解更多信息。
- 参数:
- labels_true形状为 (n_samples,) 的类数组
用作参考的真实类标签。
- labels_pred形状为 (n_samples,) 的类数组
要评估的聚类标签。
- beta浮点数,默认为 1.0
分配给
homogeneity
与completeness
的权重比率。如果beta
大于 1,则在计算中completeness
的权重更大。如果beta
小于 1,则homogeneity
的权重更大。
- 返回:
- v_measure浮点数
0.0 到 1.0 之间的分数。1.0 代表完全完整的标签。
另请参见
homogeneity_score
聚类标签的同质性度量。
completeness_score
聚类标签的完整性度量。
normalized_mutual_info_score
归一化互信息。
参考文献
示例
完美的标签既同质又完整,因此得分 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-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.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...
图库示例#
scikit-learn 1.3 的发行亮点
使用谱共聚类算法对双聚类文档进行聚类。
手写数字数据上 K-Means 聚类的演示。
聚类性能评估中偶然性的调整。
DBSCAN 聚类算法的演示。
亲和传播聚类算法的演示。
使用 k-means 对文本文档进行聚类。