Python 有没有一种简单的方法来标记编码,然后使用列转换器进行热编码?

Python 有没有一种简单的方法来标记编码,然后使用列转换器进行热编码?,python,scikit-learn,Python,Scikit Learn,我正在使用sklearn的列转换器 我认为这是一个很好的工具来管理不同的定标器。让生活变得容易多了。但是,我不确定是否有方法进行分类值,因为我需要首先使用标签编码器,然后使用热编码对整数进行编码。有什么东西可以同时为我做这两件事吗?我更喜欢在一个列转换器中完成所有缩放。管理起来容易多了。一个选项是使用pd.get_dummies(…)从pandas: In [10]: df = pd.DataFrame({'a': ['A', 'B', 'C']*3}) In [11]: df Out[11]

我正在使用sklearn的列转换器


我认为这是一个很好的工具来管理不同的定标器。让生活变得容易多了。但是,我不确定是否有方法进行分类值,因为我需要首先使用标签编码器,然后使用热编码对整数进行编码。有什么东西可以同时为我做这两件事吗?我更喜欢在一个列转换器中完成所有缩放。管理起来容易多了。

一个选项是使用
pd.get_dummies(…)
pandas

In [10]: df = pd.DataFrame({'a': ['A', 'B', 'C']*3})

In [11]: df
Out[11]:
   a
0  A
1  B
2  C
3  A
4  B
5  C
6  A
7  B
8  C

In [12]: pd.concat([df, pd.get_dummies(df['a'], prefix='a')], axis=1)
Out[12]:
   a  a_A  a_B  a_C
0  A    1    0    0
1  B    0    1    0
2  C    0    0    1
3  A    1    0    0
4  B    0    1    0
5  C    0    0    1
6  A    1    0    0
7  B    0    1    0
8  C    0    0    1
可以在不将分类值预处理为
int
s的情况下处理分类值:

from sklearn.preprocessing import OneHotEncoder

df = pd.DataFrame({'col1': ['a', 'b', 'c']})
ohe = OneHotEncoder(sparse=False)
ohe.fit_transform(df['col1'].values.reshape(-1, 1))
输出:

array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])