mutual_info_classif#

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

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

两个随机变量之间的互信息(Mutual Information,MI)[1] 是一个非负值,用于衡量变量之间的依赖程度。当且仅当两个随机变量相互独立时,互信息为零,值越高则表示依赖程度越高。

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

它可用于单变量特征选择,详情请阅读 用户指南

参数:
Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

特征矩阵。

yarray-like of shape (n_samples,)

目标向量。

discrete_features‘auto’, bool or array-like, default=’auto’

如果是布尔值,则确定是所有特征都视为离散型还是连续型。如果是数组,则应该是一个形状为 (n_features,) 的布尔掩码,或者是离散特征的索引数组。如果为 'auto',则对于稠密 X 设置为 False,对于稀疏 X 设置为 True。

n_neighborsint, default=3

用于估计连续变量互信息时使用的邻居数量,详见 [2][3]。值越高会减少估计的方差,但也可能引入偏差。

copy布尔值, 默认为 True

是否对给定数据进行复制。如果设置为 False,则原始数据将被覆盖。

random_stateint, RandomState instance or None, default=None

确定随机数生成,用于向连续变量添加微小噪声以消除重复值。传递一个整数可在多次函数调用中获得可重现的结果。参见 词汇表

n_jobsint, default=None

用于计算互信息的作业数。并行化在 X 的列上进行。None 表示 1,除非在 joblib.parallel_backend 上下文中。-1 表示使用所有处理器。有关详细信息,请参见 词汇表

1.5 版本新增。

返回:
mindarray, shape (n_features,)

估计出的每个特征与目标之间的互信息(以 nat 为单位)。

注意事项

  1. 使用术语“离散特征”而非“分类特征”,因为它能更准确地描述本质。例如,图像的像素强度是离散特征(但很难说是分类特征),如果将其标记为离散特征,您将获得更好的结果。另请注意,将连续变量视为离散变量或反之,通常会得到不正确的结果,因此请务必注意这一点。

  2. 真实的互信息不能为负值。如果其估计值结果为负,则将其替换为零。

References

[1]

维基百科上的 互信息

[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

示例

>>> from sklearn.datasets import make_classification
>>> from sklearn.feature_selection import mutual_info_classif
>>> X, y = make_classification(
...     n_samples=100, n_features=10, n_informative=2, n_clusters_per_class=1,
...     shuffle=False, random_state=42
... )
>>> mutual_info_classif(X, y)
array([0.589, 0.107, 0.196, 0.0968 , 0.,
       0.   , 0.   , 0.   , 0.     , 0.])