【问题标题】:Should I scale box cox data for pca?我应该为 pca 缩放 box cox 数据吗?
【发布时间】:2020-12-07 09:02:11
【问题描述】:

我已经使用 power transformer 转换了我的数据集(有 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() 吗?

【问题讨论】:

    标签: python transformation scaling pca


    【解决方案1】:

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

    了解更多详情here

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

    检查this

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

    【讨论】:

    • 谢谢!您的回答和提供的链接非常有帮助:)
    猜你喜欢
    • 2012-12-17
    • 1970-01-01
    • 2021-02-16
    • 2014-12-11
    • 2022-01-06
    • 2015-07-13
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多