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_true
與label_pred
對調會回傳相同的分數值。當真實的 ground truth 未知時,這可用於衡量同一數據集上兩個獨立標籤分配策略的一致性。請在 使用者指南 中閱讀更多資訊。
- 參數:
- labels_true形狀為 (n_samples,) 的類陣列 (array-like)
作為參考的真實類別標籤 (ground truth class labels)。
- labels_pred形狀為 (n_samples,) 的類陣列 (array-like)
要評估的群集標籤。
- beta浮點數 (float),預設值為 1.0
賦予
homogeneity
與completeness
的權重比例。如果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...