首页 > 解决方案 > 我应该为 pca 缩放 box cox 数据吗?

问题描述

我已经使用电源变压器转换了我的数据集(有 9 列)以产生具有标准化的高斯分布。

from sklearn.preprocessing import PowerTransformer
pt = PowerTransformer(method='yeo-johnson',standardize=True)
#you can get the original data back using inverse_transform(X)

X_train=pt.fit_transform(X_train)

#fit the model only on the train set and transform the test set
X_test=pt.transform(X_test)

所以现在我的数据集对于大多数具有零均值和单位方差的特征几乎都是高斯分布。然后我应用了多项式特征():

from sklearn.preprocessing import PolynomialFeatures 
  
poly = PolynomialFeatures(degree = 4) 
X_poly = poly.fit_transform(X_train) 
  
LR2 = LinearRegression() 
LR2.fit(X_poly, y_train) 

添加多项式特征后,我有 2380 列可能导致过度拟合,因此我想使用PCA进行降维,但我在某处读到 PCA 需要“缩放”数据(这通常意味着使用类似的东西更改值的范围最小最大缩放器())。

那么在将 PCA 应用于 boxcox 转换(和标准化)数据集之前,我应该使用 MinMaxScaler() 吗?

标签: pythontransformationscalingpca

解决方案


标准化在 PCA 中很重要,因为它是一种方差最大化的练习。它将您的原始数据投影到最大化方差的方向上。下面的第一个图显示了在我们尚未对数据进行归一化的不同主成分中解释的总方差量。如您所见,组件一似乎解释了数据中的大部分差异。

在此处查找更多详细信息

在您的情况下,您正在使用标准化的幂变换(将均值和标准设置为 0 和 1),设置为True. 归一化(将变量范围设置在 0 到 1 之间)通常在 PCA 之前不受欢迎,因为它在处理数据和异常值的现有偏度方面没有多大作用。

检查这个

因此,如果您的功能已经标准化,我建议不需要 Min Max Scaler。


推荐阅读