我正在尝试使用sklearn_pandas DataFrameMapper。这将获取列名以及该列所需的预处理Transformation函数。像这样,
mapper = sklearn_pandas.DataFrameMapper([
('hour',None),
('season',sklearn.preprocessing.OneHotEncoder()),
('holiday',None)
])
season是我的pandas DataFrame中的int64 col。
这给了我以下错误 - 要解压缩的值太多。 我知道OneHotEncoder采用2-D样本而不是1-D样本。
如何将此OneHotEncoder与sklearn_pandas一起使用,或者不可能。
答案 0 :(得分:2)
sklearn-pandas
的官方版本在处理一维数组和转换时存在一些问题。尝试以下fork:
https://github.com/dukebody/sklearn-pandas
但是,我认为您可以使用LabelBinarizer
(如sklearn_pandas
示例中)代替OneHotEncoder
来完成您想要的任务。
更新2015-11-28
在sklearn-pandas>=0.0.12
中,您可以解决以下问题:
mapper = sklearn_pandas.DataFrameMapper([
('hour',None),
(['season'],sklearn.preprocessing.OneHotEncoder()),
('holiday',None)
])
来自文档:
将列选择器指定为
'column'
(如 一个简单的字符串)和['column']
(作为一个元素的列表)是 传递给变换器的数组的形状。在第一个 case,可以传递一维数组,而在第二种情况下 它将是一个具有一列的二维数组,即一列 矢量。