我应该缩放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)

因此,对于大多数特征(均值和单位方差为零)的大多数特征,我的数据集几乎都具有高斯分布。然后我应用了 polynomialFeatures ():

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需要对数据进行“缩放”(这通常意味着使用类似MinMaxScaler()的值来更改值的范围。

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

解决方法

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

查找更多详细信息here

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

选中this

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