Adi*_*ama 14 python encoding scikit-learn one-hot-encoding
这是我的问题,我希望有人能帮我弄清楚..
解释一下,我的数据集中有 10 多个类别列,每个类别都有 200-300 个类别。我想将它们转换为二进制值。为此,我使用第一个标签编码器将字符串类别转换为数字。标签编码器代码和输出如下所示。

在标签编码器之后,我再次使用了来自 scikit-learn 的 One Hot Encoder 并且它有效。但问题是,我需要一个热编码器后的列名。例如,在编码前具有分类值的 A 列。A = [1,2,3,4,..]
编码后应该是这样的
A-1、A-2、A-3
任何人都知道如何在一次热编码后将列名分配给(旧列名 - 值名称或编号)。这是我的一种热编码及其输出;

我需要带名称的列,因为我训练了一个 ANN,但是每次出现数据时,我都无法一次又一次地转换所有过去的数据。所以,我想每次都添加新的。还是谢谢..
Ven*_*lam 15
您可以使用.get_feature_names()属性获取列名 。
>>> ohenc.get_feature_names()
>>> x_cat_df.columns = ohenc.get_feature_names()
Run Code Online (Sandbox Code Playgroud)
详细示例在这里。
小智 11
这个例子可以帮助未来的读者:
import pandas as pd
from sklearn.preprocessing import OneHotEncoder
train_X = pd.DataFrame({'Sex':['male', 'female']*3, 'AgeGroup':[0,15,30,45,60,75]})
Run Code Online (Sandbox Code Playgroud)
>>>
Sex AgeGroup
0 male 0
1 female 15
2 male 30
3 female 45
4 male 60
5 female 75
Run Code Online (Sandbox Code Playgroud)
>>>
Sex AgeGroup
0 male 0
1 female 15
2 male 30
3 female 45
4 male 60
5 female 75
Run Code Online (Sandbox Code Playgroud)
>>>
AgeGroup Sex_female Sex_male
0 0 0.0 1.0
1 15 1.0 0.0
2 30 0.0 1.0
3 45 1.0 0.0
4 60 0.0 1.0
5 75 1.0 0.0`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13320 次 |
| 最近记录: |