mutual_info_score#
- sklearn.metrics.mutual_info_score(labels_true, labels_pred, *, contingency=None)[source]#
两个聚类之间的互信息。
互信息(Mutual Information)是衡量同一数据的两个标签之间相似度的一种度量。其中 \(|U_i|\) 是簇 \(U_i\) 中的样本数量,\(|V_j|\) 是簇 \(V_j\) 中的样本数量,聚类 \(U\) 和 \(V\) 之间的互信息定义为
\[MI(U,V)=\sum_{i=1}^{|U|} \sum_{j=1}^{|V|} \frac{|U_i\cap V_j|}{N} \log\frac{N|U_i \cap V_j|}{|U_i||V_j|}\]此度量独立于标签的绝对值:类或簇标签值的排列不会以任何方式改变分数。
此指标具有对称性:将 \(U\) (即
label_true) 与 \(V\) (即label_pred) 互换会得到相同的分数。当真实的基本事实未知时,这对于衡量同一数据集上两种独立的标签分配策略的一致性非常有用。在 用户指南 中阅读更多内容。
- 参数:
- labels_true形状为 (n_samples,) 的类数组对象,dtype=integral
将数据划分为不相交子集的一种聚类,在上述公式中称为 \(U\)。
- labels_pred形状为 (n_samples,) 的类数组对象,dtype=integral
将数据划分为不相交子集的另一种聚类,在上述公式中称为 \(V\)。
- contingency{array-like, sparse matrix} of shape (n_classes_true, n_classes_pred), default=None
由
contingency_matrix函数给出的列联表。如果值为None,则会计算它;否则使用给定的值,并忽略labels_true和labels_pred。
- 返回:
- mifloat
互信息,一个非负值,使用自然对数以 nats 为单位进行测量。
另请参阅
adjusted_mutual_info_score针对偶然互信息进行调整。
normalized_mutual_info_score归一化互信息。
注意事项
使用的对数是自然对数(以 e 为底)。
示例
>>> from sklearn.metrics import mutual_info_score >>> labels_true = [0, 1, 1, 0, 1, 0] >>> labels_pred = [0, 1, 0, 0, 1, 1] >>> mutual_info_score(labels_true, labels_pred) 0.0566