v_measure_score#
- sklearn.metrics.v_measure_score(labels_true, labels_pred, *, beta=1.0)#
V-measure 聚类标签给定一个真实标签。
这个分数与
normalized_mutual_info_score
使用'arithmetic'
选项进行平均的结果相同。V-measure 是同质性和完整性之间的调和平均数:
v = (1 + beta) * homogeneity * completeness / (beta * homogeneity + completeness)
这个度量独立于标签的绝对值:类或聚类标签值的排列不会以任何方式改变分数值。
这个度量还是对称的:交换
label_true
和label_pred
将返回相同的分数值。这在真实标签未知时,测量两种独立的标签分配策略在同一数据集上的协议时非常有用。更多信息请参阅 用户指南 。
- Parameters:
- labels_truearray-like of shape (n_samples,)
用作参考的真实类标签。
- labels_predarray-like of shape (n_samples,)
要评估的聚类标签。
- betafloat, default=1.0
权重分配给
homogeneity
和completeness
的比例。如果beta
大于 1,计算中completeness
的权重更大。如果beta
小于 1,homogeneity
的权重更大。
- Returns:
- v_measurefloat
0.0 到 1.0 之间的分数。1.0 表示完全完整的标签。
See also
homogeneity_score
聚类标签的同质性度量。
completeness_score
聚类标签的完整性度量。
normalized_mutual_info_score
标准化互信息。
References
Examples
完美的标签既同质又完整,因此得分为 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, 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...
Gallery examples#
scikit-learn 1.3 版本发布亮点
使用谱协同聚类算法对文档进行双聚类
DBSCAN聚类算法演示
亲和传播聚类算法示例
手写数字数据上的K-Means聚类演示
聚类性能评估中的机会调整
使用k-means聚类文本文档