python - 使用列转换器的 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),然后缩放(标准化或规范化)整个事物(编码数据)还是缩放然后编码
解决方案
我建议先执行某种编码,然后缩放所有值。这不仅可以帮助您保留列,而且这些编码值将在相同的比例下缩放。
推荐阅读
- python - 这些方法在过滤和分组 Pandas 数据帧方面有什么区别?
- r - 鼠标功能没有获取数据列来估算
- ruby - Microsoft Azure 不通过 Oauth2 流返回电子邮件
- python - 如何在 django 中为每个不同的用户设置速率限制规则
- python - Python中的NameError与函数的返回变量
- javascript - 如何在不影响进程的空格的情况下替换js中的文本
- javascript - 将字符串转换为整数 BigInt
- swift - SwiftUI:如何让按钮在 safari 中打开 URL?
- php - 按加入实体排序 - 学说查询生成器
- api - Reassured api 测试的登录问题