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代表完整標簽

另見:

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

示例

完整標簽既均勻又完整,因此得分為1.0:

>>> from sklearn.metrics.cluster import v_measure_score
>>> v_measure_score([0011], [0011])
1.0
>>> v_measure_score([0011], [1100])
1.0

將所有的類成員分配到同一個集群的標簽是完全不同質的,因此會受懲罰:

>>> print("%.6f" % v_measure_score([0012], [0011]))
0.8...
>>> print("%.6f" % v_measure_score([0123], [0011]))
0.66...

如果類成員完全分散在不同的集群中,則分配完全不完整,因此V-Measure為空:

>>> print("%.6f" % v_measure_score([0000], [0123]))
0.0...

包含完全不同類別的樣本的聚類會完全破壞標簽的同質性,因此:

>>> print("%.6f" % v_measure_score([0011], [0000]))
0.0...