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)[源代码]#
估计离散目标变量的互信息。
Mutual information (MI) [1] between two random variables is a non-negative value, which measures the dependency between the variables. It is equal to zero if and only if two random variables are independent, and higher values mean higher dependency.
该函数依赖于非参数方法,该方法基于k近邻距离的熵估计,如中所述 [2] 和 [3]. 这两种方法都基于最初提出的想法 [4].
它可以用于单变量特征选择,在 User Guide .
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
特征矩阵。
- y形状类似阵列(n_samples,)
目标载体。
- discrete_features“自动”,布尔或类数组,默认=“自动”
如果是布尔,则确定是将所有特征视为离散还是连续。如果是数组,那么它应该是具有形状(n_features)的布尔屏蔽,或者是具有离散特征索引的数组。如果“自动”,则将其分配为False,表示密集
X
对于稀疏,则为TrueX
.- n_neighborsint,默认=3
- copy布尔,默认=True
是否复制给定数据。如果设置为False,初始数据将被覆盖。
- random_stateint,RandomState实例或无,默认=无
确定随机数生成,以向连续变量添加小噪音以删除重复值。传递int以获得跨多个函数调用的可重复结果。看到 Glossary .
- n_jobsint,默认=无
用于计算互信息的作业数。并行化是在
X
.None
意思是1,除非在a中joblib.parallel_backend
上下文-1
意味着使用所有处理器。看到 Glossary 了解更多详细信息。Added in version 1.5.
- 返回:
- mindarray,shape(n_features,)
以nat为单位的每个特征和目标之间的估计互信息。
注意到
使用“离散特征”一词而不是将它们命名为“分类”,因为它更准确地描述了本质。例如,图像的像素强度是离散特征(但很难分类),如果将它们标记为这样,您会得到更好的结果。另请注意,将连续变量视为离散变量,反之亦然,通常会给出不正确的结果,因此请注意这一点。
真正的互信息不可能是负的。如果它的估计结果是负的,它被替换为零。
引用
[1]Mutual Information 在维基百科上。
[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.58..., 0.10..., 0.19..., 0.09... , 0. , 0. , 0. , 0. , 0. , 0. ])