Fork me on GitHub

sklearn.metrics.mutual_info_score

sklearn.metrics.mutual_info_score(labels_true, labels_pred, contingency=None, max_n_classes=5000)[source]

Mutual Information between two clusterings

The Mutual Information is a measure of the similarity between two labels of the same data. Where P(i) is the probability of a random sample occurring in cluster U_i and P'(j) is the probability of a random sample occurring in cluster V_j, the Mutual Information between clusterings U and V is given as:

MI(U,V)=\sum_{i=1}^R \sum_{j=1}^C P(i,j)\log\frac{P(i,j)}{P(i)P'(j)}

This is equal to the Kullback-Leibler divergence of the joint distribution with the product distribution of the marginals.

This metric is independent of the absolute values of the labels: a permutation of the class or cluster label values won’t change the score value in any way.

This metric is furthermore symmetric: switching label_true with label_pred will return the same score value. This can be useful to measure the agreement of two independent label assignments strategies on the same dataset when the real ground truth is not known.

Read more in the User Guide.

Parameters:

labels_true : int array, shape = [n_samples]

A clustering of the data into disjoint subsets.

labels_pred : array, shape = [n_samples]

A clustering of the data into disjoint subsets.

contingency: None or array, shape = [n_classes_true, n_classes_pred] :

A contingency matrix given by the contingency_matrix function. If value is None, it will be computed, otherwise the given value is used, with labels_true and labels_pred ignored.

max_n_classes: int, optional (default=5000) :

Maximal number of classes handled by the mutual_info_score metric. Setting it too high can lead to MemoryError or OS freeze

Returns:

mi: float :

Mutual information, a non-negative value

See also

adjusted_mutual_info_score
Adjusted against chance Mutual Information
normalized_mutual_info_score
Normalized Mutual Information

Examples using sklearn.metrics.mutual_info_score

Previous