我正在尝试使用 sklearn_pandas DataFrameMapper。这将接收列名称以及该列所需的预处理转换函数。像这样,

mapper = sklearn_pandas.DataFrameMapper([
    ('hour',None),
    ('season',sklearn.preprocessing.OneHotEncoder()),
    ('holiday',None)
])

季节是我的 Pandas DataFrame 中的 int64 col。

这给了我以下错误 - 要解压缩的值太多。
我知道 OneHotEncoder 需要一个二维样本而不是一维样本。

我如何才能将这个 OneHotEncoder 与 sklearn_pandas 一起使用,或者是不可能的。

最佳答案

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)
])

从文档:

关于python - 使用 OneHotEncoder 和 sklearn_pandas DataFrameMapper,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30010853/

10-12 21:25