使用OneHotEncoder和sklearn_pandas DataFrameMapper

时间:2015-05-03 06:18:32

标签: python scikit-learn

我正在尝试使用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一起使用,或者不可能。

1 个答案:

答案 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,可以传递一维数组,而在第二种情况下   它将是一个具有一列的二维数组,即一列   矢量。