【问题标题】:using OneHotEncoder with sklearn_pandas DataFrameMapper使用 OneHotEncoder 和 sklearn_pandas DataFrameMapper
【发布时间】:2015-11-29 02:22:03
【问题描述】:

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

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

season 是我的 pandas DataFrame 中的一个 int64 col。

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

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

【问题讨论】:

  • 你能提供一个堆栈跟踪吗?

标签: python scikit-learn


【解决方案1】:

sklearn-pandas正式版在处理一维数组和变换时存在一些问题。尝试以下叉子: 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'](作为一个包含一个元素的列表)是 传递给变压器的阵列的形状。在第一 情况下,传递一个一维数组,而在第二种情况下 它将是一个具有一列的二维数组,即一列 向量。

【讨论】:

    猜你喜欢
    • 2016-02-24
    • 2021-11-01
    • 2017-03-14
    • 1970-01-01
    • 2017-08-01
    • 2019-02-23
    • 2020-07-15
    • 2017-01-17
    • 2020-09-13
    相关资源
    最近更新 更多