v_measure_score#

sklearn.metrics.v_measure_score(labels_true, labels_pred, *, beta=1.0)[原始碼]#

給定真實標籤,V 測度叢集標籤。

此分數與使用 'arithmetic' 選項進行平均的 normalized_mutual_info_score 相同。

V-measure 是同質性 (homogeneity) 和完整性 (completeness) 之間的調和平均數。

v = (1 + beta) * homogeneity * completeness
     / (beta * homogeneity + completeness)

此指標與標籤的絕對值無關:類別或群集標籤值的排列方式不會以任何方式改變分數值。

此外,此指標是對稱的:將 label_truelabel_pred 對調會回傳相同的分數值。當真實的 ground truth 未知時,這可用於衡量同一數據集上兩個獨立標籤分配策略的一致性。

請在 使用者指南 中閱讀更多資訊。

參數:
labels_true形狀為 (n_samples,) 的類陣列 (array-like)

作為參考的真實類別標籤 (ground truth class labels)。

labels_pred形狀為 (n_samples,) 的類陣列 (array-like)

要評估的群集標籤。

beta浮點數 (float),預設值為 1.0

賦予 homogeneitycompleteness 的權重比例。如果 beta 大於 1,則在計算中 completeness 的權重會較高。如果 beta 小於 1,則 homogeneity 的權重會較高。

回傳值:
v_measure浮點數 (float)

介於 0.0 和 1.0 之間的分數。1.0 代表完全完整的標籤。

另請參閱

同質性分數 (homogeneity_score)

群集標籤的同質性指標。

完整性分數 (completeness_score)

群集標籤的完整性指標。

正規化互信息分數 (normalized_mutual_info_score)

標準化互信息 (Normalized Mutual Information)。

參考文獻

範例

完美的標籤既是同質的又是完整的,因此分數為 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...