f_regression#
- sklearn.feature_selection.f_regression(X, y, *, center=True, force_finite=True)[source]#
返回 F 统计量和 P 值的单变量线性回归检验。
用于测试单个回归器影响的快速线性模型,可顺序应用于多个回归器。
这分两步完成:
使用
r_regression
计算每个回归器与目标之间的互相关性,如下所示:E[(X[:, i] - mean(X[:, i])) * (y - mean(y))] / (std(X[:, i]) * std(y))
将其转换为 F 值,然后再转换为 P 值。
f_regression
派生自r_regression
,如果所有特征都与目标呈正相关,它将以相同的顺序对特征进行排序。然而请注意,与
f_regression
不同,r_regression
的值介于 [-1, 1] 之间,因此可能为负。因此,推荐使用f_regression
作为特征选择标准,以识别下游分类器的潜在预测特征,而无需考虑与目标变量关联的符号。此外,
f_regression
返回 p 值,而r_regression
则不返回。在用户指南中了解更多信息。
- 参数:
- X{类数组, 稀疏矩阵}, 形状为 (n_samples, n_features)
数据矩阵。
- y类数组, 形状为 (n_samples,)
目标向量。
- center布尔值, 默认为 True
是否对数据矩阵
X
和目标向量y
进行中心化。默认情况下,X
和y
将被中心化。- force_finite布尔值, 默认为 True
是否强制 F 统计量和相关的 P 值有限。在以下两种情况下,F 统计量预计不会是有限的:
当目标
y
或X
中的某些特征为常数时。在这种情况下,皮尔逊 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
。
版本 1.1 新增。
- 返回:
- f_statistic形状为 (n_features,) 的 ndarray
每个特征的 F 统计量。
- p_values形状为 (n_features,) 的 ndarray
与 F 统计量相关的 P 值。
另请参阅
r_regression
回归任务中标签/特征之间的皮尔逊 R。
f_classif
分类任务中标签/特征之间的 ANOVA F 值。
chi2
分类任务中非负特征的卡方统计量。
SelectKBest
根据 k 个最高分数选择特征。
SelectFpr
基于假阳性率测试选择特征。
SelectFdr
基于估计的错误发现率选择特征。
SelectFwe
基于家族错误率选择特征。
SelectPercentile
基于最高分数的百分位数选择特征。
示例
>>> 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.21, 2.67e13, 2.66]) >>> p_values array([0.276, 1.54e-283, 0.11])