【问题标题】:MinMax Scaler using column transformer ( the transformed columns are shifted front)MinMax Scaler 使用列转换器(转换后的列向前移动)
【发布时间】:2021-07-31 01:42:51
【问题描述】:

我正在尝试建立一个关于房价的模型 - 高级回归技术数据集 (1460, 80)。它具有 37 个数值特征和 43 个分类特征。

我想先缩放数值特征。 One_hot_encode 分类特征。 我正在使用 MinMax 缩放器和 Column 转换器。

缩放数据后,DataFrame 不保留列名

这是我的代码

columns_transform_sc=make_column_transformer((MinMaxScaler(),['MSSubClass',
 'LotFrontage',
 'LotArea',
 'OverallQual',
 'OverallCond',
 'YearBuilt',
 'YearRemodAdd',
 'MasVnrArea',
 'BsmtFinSF1',
 'BsmtFinSF2',
 'BsmtUnfSF',
 'TotalBsmtSF',
 '1stFlrSF',
 '2ndFlrSF',
 'LowQualFinSF',
 'GrLivArea',
 'BsmtFullBath',
 'BsmtHalfBath',
 'FullBath',
 'HalfBath',
 'BedroomAbvGr',
 'KitchenAbvGr',
 'TotRmsAbvGrd',
 'Fireplaces',
 'GarageYrBlt',
 'GarageCars',
 'GarageArea',
 'WoodDeckSF',
 'OpenPorchSF',
 'EnclosedPorch',
 '3SsnPorch',
 'ScreenPorch',
 'PoolArea',
 'MiscVal',
 'MoSold',
 'YrSold']),remainder="passthrough")

sc_df=columns_transform_sc.fit_transform(x_train)

我将原始数据帧的(x_train) 列用于缩放数据帧(sc_df)。

sc_df=pd.DataFrame(sc_df,index=x_train.index,columns=x_train.columns)

我面临的问题是列转换器将所有已转换的列移到前面并将直通列移回,我不能使用 x_train.columns 替换 sc_df.columns

所有类别功能都已移回。有没有办法保留获取列名的列名

还有 我应该先编码分类特征(one_hot_encode 或 label_encode),然后缩放(标准化或规范化)整个事物(编码数据)还是缩放然后编码

【问题讨论】:

    标签: python pandas scikit-learn transform minmax


    【解决方案1】:

    我认为您可以 - 有时必须先进行缩放。我建议试试这个:

    qt = QuantileTransformer(n_quantiles=50, output_distribution='normal', random_state=0)
    df.Betrag = qt.fit_transform(df.Betrag.values.reshape(-1, 1))
    

    注意:您可以直接将一列替换为具有已知标准语法的列切片,以选择 Pandas DataFrame 列的子集:

    age_sex = titanic[["Age", "Sex"]]
    

    在这种情况下,如果我们假设这些列是确定的列,您可以将 age_sex 传递给 fit 和 transform 函数。更重要的是,您不仅限于 QuantileTransformer。该代码应该适用于所有 Transformer。

    编辑:抱歉,快速旁注:如果您将仅具有一个特定特征的张量传递给 QuantileTransformer,则重塑操作是必要的。在多特征张量和另一个transformer的情况下,应该是必要的。

    【讨论】:

    • 谢谢你我明白了
    【解决方案2】:

    我建议先执行某种编码,然后缩放所有值。这不仅可以帮助您保留列,而且这些编码值将在相同的比例下缩放。

    【讨论】:

      猜你喜欢
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 2021-07-26
      • 2016-08-28
      • 2023-03-07
      • 2020-06-12
      相关资源
      最近更新 更多