f_regression#

sklearn.feature_selection.f_regression(X, y, *, center=True, force_finite=True)#

单变量线性回归测试返回F统计量和p值。

用于测试单个回归变量效果的快速线性模型, 对许多回归变量依次进行测试。

这分为两个步骤:

  1. 使用 r_regression 计算每个回归变量与目标之间的交叉相关性,如下所示:

    E[(X[:, i] - mean(X[:, i])) * (y - mean(y))] / (std(X[:, i]) * std(y))

  2. 将其转换为F分数,然后转换为p值。

f_regression 源自 r_regression ,如果所有特征都与目标正相关,则会将特征按相同顺序排序。

但请注意,与 f_regression 不同,r_regression 的值在 [-1, 1] 之间,因此可能为负。因此,建议将 f_regression 作为特征选择标准,以识别可能预测性的特征供下游分类器使用,而不考虑与目标变量关联的符号。

此外,f_regression 返回p值,而 r_regression 不返回。

更多信息请参阅 用户指南

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

数据矩阵。

yarray-like,形状为 (n_samples,)

目标向量。

centerbool, 默认=True

是否将数据矩阵 X 和目标向量 y 中心化。默认情况下, Xy 将被中心化。

force_finitebool, 默认=True

是否强制F统计量和相关p值为有限。有两种情况预期F统计量不为有限:

  • 当目标 yX 中的某些特征为常数时。在这种情况下,皮尔逊R相关性未定义,导致在F统计量和p值中得到 np.nan 值。当 force_finite=True 时,F统计量设置为 0.0 ,相关p值设置为 1.0

  • X 中的特征与目标 y 完全相关(或反相关)时。在这种情况下,预期F统计量为 np.inf 。当 force_finite=True 时,F统计量设置为 np.finfo(dtype).max ,相关p值设置为 0.0

Added in version 1.1.

Returns:
f_statisticndarray,形状为 (n_features,)

每个特征的F统计量。

p_valuesndarray,形状为 (n_features,)

与F统计量相关的p值。

See also

r_regression

回归任务中标签/特征之间的皮尔逊R。

f_classif

分类任务中标签/特征之间的ANOVA F值。

chi2

分类任务中非负特征的卡方统计量。

SelectKBest

根据k个最高分选择特征。

SelectFpr

根据假阳性率测试选择特征。

SelectFdr

根据估计的假发现率选择特征。

SelectFwe

根据族系误差率选择特征。

SelectPercentile

根据最高分的百分位选择特征。

Examples

>>> from sklearn.datasets import make_regression
>>> from sklearn.feature_selection import f_regression
>>> X, y = make_regression(
...     n_samples=50, n_features=3, n_informative=1, noise=1e-4, random_state=42
... )
>>> f_statistic, p_values = f_regression(X, y)
>>> f_statistic
array([1.2...+00, 2.6...+13, 2.6...+00])
>>> p_values
array([2.7..., 1.5..., 1.0...])