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