在 Python 中 SelectKBest 之前需要标准化

use*_*352 5 python feature-extraction

我需要从数据集中为回归任务选择一些特征。但是数值来自不同的范围。

from sklearn.datasets import load_boston
from sklearn.feature_selection import SelectKBest, f_regression

X, y = load_boston(return_X_y=True)
X_new = SelectKBest(f_regression, k=2).fit_transform(X, y)
Run Code Online (Sandbox Code Playgroud)

为了提高回归模型的性能,我是否需要在SelectKBest方法之前对 X 进行归一化?

kil*_*n95 1

答案是,这取决于您的数据——所以您应该尝试一下,看看是否有帮助!以下是变换每个变量的均值 0 和方差 1 的快速方法:

from sklearn.datasets import load_boston
from sklearn.feature_selection import SelectKBest, f_regression
from sklearn.preprocessing import StandardScaler

X, y = load_boston(return_X_y=True)

scaler_x = StandardScaler().fit(X)
X = scaler_x.transform(X)

X_new = SelectKBest(f_regression, k=2).fit_transform(X, y)
Run Code Online (Sandbox Code Playgroud)