【发布时间】:2014-09-04 22:06:31
【问题描述】:
我的问题是我的 pandas 数据框中有这么多列,我正在尝试使用 sklearn-pandas 库中的数据帧映射器应用 sklearn 预处理,例如
mapper= DataFrameMapper([
('gender',sklearn.preprocessing.LabelBinarizer()),
('gradelevel',sklearn.preprocessing.LabelEncoder()),
('subject',sklearn.preprocessing.LabelEncoder()),
('districtid',sklearn.preprocessing.LabelEncoder()),
('sbmRate',sklearn.preprocessing.StandardScaler()),
('pRate',sklearn.preprocessing.StandardScaler()),
('assn1',sklearn.preprocessing.StandardScaler()),
('assn2',sklearn.preprocessing.StandardScaler()),
('assn3',sklearn.preprocessing.StandardScaler()),
('assn4',sklearn.preprocessing.StandardScaler()),
('assn5',sklearn.preprocessing.StandardScaler()),
('attd1',sklearn.preprocessing.StandardScaler()),
('attd2',sklearn.preprocessing.StandardScaler()),
('attd3',sklearn.preprocessing.StandardScaler()),
('attd4',sklearn.preprocessing.StandardScaler()),
('attd5',sklearn.preprocessing.StandardScaler()),
('sbm1',sklearn.preprocessing.StandardScaler()),
('sbm2',sklearn.preprocessing.StandardScaler()),
('sbm3',sklearn.preprocessing.StandardScaler()),
('sbm4',sklearn.preprocessing.StandardScaler()),
('sbm5',sklearn.preprocessing.StandardScaler())
])
我只是想知道是否还有另一种更简洁的方法可以一次预处理多个变量而无需明确写出它们。
另一件我觉得有点烦人的事情是,当我将所有 pandas 数据框转换为 sklearn 可以使用的数组时,它们会丢失列名特征,这使得选择变得非常困难。有谁知道在将 pandas 数据帧更改为 np 数组时如何将列名保留为键?
非常感谢!
【问题讨论】:
-
我只是创建一个新的编码列并将它们传递给 scikit 学习如果你想要漂亮的列名,你可以编写一个缩放函数来获取列并根据类型应用适当的编码器并生成通过添加前缀 _encoded 或类似的新列名称
-
嗨@EdChum 非常感谢您的回复!但我仍然无法通过 prefix_encoded 部分。请您发布一些关于此的代码吗?非常感谢你的帮助! :)
标签: python pandas scikit-learn sklearn-pandas