将 OneHotEncoder 与 sklearn_pandas DataFrameMapper 结合使用
using OneHotEncoder with sklearn_pandas DataFrameMapper
我正在尝试使用 sklearn_pandas DataFrameMapper。这会接收列名称以及该列所需的预处理转换函数。像这样,
mapper = sklearn_pandas.DataFrameMapper([
('hour',None),
('season',sklearn.preprocessing.OneHotEncoder()),
('holiday',None)
])
season 是我的 pandas DataFrame 中的一个 int64 列。
这给了我以下错误 - 要解压的值太多。
我知道 OneHotEncoder 采用二维样本而不是一维样本。
我如何才能将此 OneHotEncoder 与 sklearn_pandas 一起使用,还是不可能。
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)
])
来自文档:
The difference between specifying the column selector as 'column'
(as
a simple string) and ['column']
(as a list with one element) is the
shape of the array that is passed to the transformer. In the first
case, a one dimensional array with be passed, while in the second case
it will be a 2-dimensional array with one column, i.e. a column
vector.
我正在尝试使用 sklearn_pandas DataFrameMapper。这会接收列名称以及该列所需的预处理转换函数。像这样,
mapper = sklearn_pandas.DataFrameMapper([
('hour',None),
('season',sklearn.preprocessing.OneHotEncoder()),
('holiday',None)
])
season 是我的 pandas DataFrame 中的一个 int64 列。
这给了我以下错误 - 要解压的值太多。 我知道 OneHotEncoder 采用二维样本而不是一维样本。
我如何才能将此 OneHotEncoder 与 sklearn_pandas 一起使用,还是不可能。
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)
])
来自文档:
The difference between specifying the column selector as
'column'
(as a simple string) and['column']
(as a list with one element) is the shape of the array that is passed to the transformer. In the first case, a one dimensional array with be passed, while in the second case it will be a 2-dimensional array with one column, i.e. a column vector.