互信息回归#
- sklearn.feature_selection.mutual_info_regression(X, y, *, discrete_features='auto', n_neighbors=3, copy=True, random_state=None, n_jobs=None)[source]#
- 估计连续目标变量的互信息。 - 两个随机变量之间的互信息 (MI) [1] 是一个非负值,它衡量变量之间的依赖性。当且仅当两个随机变量独立时,它等于零;值越高表示依赖性越高。 - 该函数依赖于基于 k 近邻距离的熵估计的非参数方法,如 [2] 和 [3] 中所述。这两种方法都基于最初在 [4] 中提出的思想。 - 它可以用于单变量特征选择,更多信息请阅读 用户指南。 - 参数:
- X类数组或稀疏矩阵,形状 (n_samples, n_features)
- 特征矩阵。 
- y形状为 (n_samples,) 的类数组
- 目标向量。 
- discrete_features{'auto', bool, array-like},默认为 'auto'
- 如果为布尔值,则确定是否将所有特征视为离散或连续。如果为数组,则它应该是一个形状为 (n_features,) 的布尔掩码,或者一个包含离散特征索引的数组。如果为 'auto',则对于密集 - X赋值为 False,对于稀疏- X赋值为 True。
- n_neighborsint,默认为 3
- copybool,默认为 True
- 是否复制给定的数据。如果设置为 False,则初始数据将被覆盖。 
- random_stateint、RandomState 实例或 None,默认为 None
- 确定用于向连续变量添加少量噪声以去除重复值的随机数生成。传递一个整数以在多次函数调用中获得可重复的结果。参见 词汇表。 
- n_jobsint,默认为 None
- 用于计算互信息的作业数。并行化是在 - X的列上完成的。- None表示 1,除非在- joblib.parallel_backend上下文中。- -1表示使用所有处理器。更多详细信息,请参见 词汇表。- 1.5 版本中新增。 
 
- 返回:
- mindarray,形状 (n_features,)
- 以 nat 单位估计每个特征与目标之间的互信息。 
 
 - 备注 - 使用术语“离散特征”代替“分类特征”,因为它更准确地描述了本质。例如,图像的像素强度是离散特征(但很难说是分类特征),如果将它们标记为离散特征,则会得到更好的结果。还要注意,将连续变量视为离散变量反之亦然通常会产生不正确的结果,因此请注意这一点。 
- 真实的互信息不能为负。如果其估计值为负,则将其替换为零。 
 - 参考文献 [4]- L. F. Kozachenko, N. N. Leonenko,“随机向量的熵的样本估计”,Probl. Peredachi Inf., 23:2 (1987), 9-16 - 示例 - >>> from sklearn.datasets import make_regression >>> from sklearn.feature_selection import mutual_info_regression >>> X, y = make_regression( ... n_samples=50, n_features=3, n_informative=1, noise=1e-4, random_state=42 ... ) >>> mutual_info_regression(X, y) array([0.1..., 2.6... , 0.0...]) 
 
    