首页 > 解决方案 > 使用列转换器的 MinMax Scaler(转换后的列向前移动)

问题描述

我正在尝试建立一个关于房价的模型 - 高级回归技术数据集(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),然后缩放(标准化或规范化)整个事物(编码数据)还是缩放然后编码

标签: pythonpandasscikit-learntransformminmax

解决方案


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


推荐阅读