sklearn.feature_selection.mutual_info_classif

sklearn.feature_selection.mutual_info_classif(X, y, *, discrete_features='auto', n_neighbors=3, copy=True, random_state=None)

[源码]

估计离散目标变量的互信息。

两个随机变量之间的互信息(MI)[1]是一个非负值,用于衡量变量之间的相关性。当且仅当两个随机变量是独立时它等于零,较高的值则意味着较高的依赖性。

该函数依赖于基于k近邻距离熵估计的非参数方法,如[2]和[3]中所述。两种方法都基于[4]中最初提出的想法。

它可用于单变量特征选择,请参阅 用户指南中的更多内容。

参数 说明
X array_like or sparse matrix, shape (n_samples, n_features)
特征矩阵。
y array_like, shape (n_samples,)
目标向量。
discrete_features {‘auto’, bool, array_like}, default ‘auto’
如果是布尔值,则确定是考虑所有特征是离散特征还是连续特征。如果是数组,则它应该是形状为(n_features)的布尔掩码,或者是具有离散特征索引的数组。如果为'auto',则为密集X指定为False,为稀疏X指定为True。
n_neighbors int, default 3
用于连续变量的MI估计的邻居数,请参见[2]和[3]。较高的值会减少估计的方差,但可能会带来偏差。
copy bool, default True
是否复制给定的数据。如果设置为False,则初始数据将被覆盖。
random_state int, RandomState instance or None, optional, default None
确定随机数生成,以将小噪声添加到连续变量中以删除重复值。在多个函数调用之间传递同一个整数以获得可重复的结果。请参阅词汇表
返回值 说明
mi ndarray, shape (n_features,)
每个特征和目标之间的估计相互信息。

  1. 使用术语“离散特征”而不是将它们命名为“分类”,因为它可以更准确地描述特征。例如,图像的像素强度是离散特征(但很难分类),如果将其这样标记,将获得更好的结果。还要注意,将连续变量视为离散变量,通常会产生错误的结果,反之亦然,因此请注意这一点。
  2. 真正的相互信息不能是负的。如果其估计结果为负,则将其替换为零。

参考

1 Mutual Information on Wikipedia.

2(1,2) A. Kraskov, H. Stogbauer and P. Grassberger, “Estimating mutual information”. Phys. Rev. E 69, 2004.

3(1,2) B. C. Ross “Mutual Information between Discrete and Continuous Data Sets”. PLoS ONE 9(2), 2014.

4 L. F. Kozachenko, N. N. Leonenko, “Sample Estimate of the Entropy of a Random Vector:, Probl. Peredachi Inf., 23:2 (1987), 9-16