0

我有一个数据集,其中包含多个具有字符串格式值的列。现在我需要使用 labelEncoder 将这些文本列转换为数值。在下面的 e,gy 是我的 tain 数据集的目标,A0 到 A13 是不同的特征。还有 50 多个功能,但我在这里提供了一个子集。现在我如何将 labelencoder 应用于从 A0 到 A8 的数据集,并创建一个新的编码数据帧来创建模型?我知道我们可以做类似下面的事情,但这会说只编码一列。我想将编码器应用于从 A0 到 A8 的所有列,然后将数据提供给模型。我怎样才能做到这一点 ?

    from sklearn.preprocessing import LabelEncoder
    gender_encoder = LabelEncoder()
    y = gender_encoder.fit_transform(y)

下面的示例数据

           y       A0 A1  A2 A3 A4  A5 A6 A8  A10  A12  A13
    0     130.81   k  v  at  a  d   u  j  o    0    0    1
    1      88.53   k  t  av  e  d   y  l  o    0    0    0
    2      76.26  az  w   n  c  d   A  j  A    0    0    0
    3      80.62  az  t   n  f  d   A  l  e    0    0    0
    4      78.02  az  v   n  f  d   h  d  n    0    0    0
4

2 回答 2

0

您可以使用 sklearn 中的 ColumnTransformer:

from sklearn.compose import make_column_transformer
from sklearn.preprocessing import OneHotEncoder

col_trans = make_column_transformer((OneHotEncoder(), ["A0:A8"]), remainder = "passthrough")

您可以在 [ ] 中列出各个列并指定如何处理“剩余列”

于 2020-07-31T08:09:21.310 回答
0

您可以使用ColumnTransformerPipeline对所有分类列进行编码。之后您还可以为数值列添加转换。

categorical_features = ['A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A8']
categorical_transformer = Pipeline(steps=[('le', LabelEncoder())])

preprocessor = ColumnTransformer(transformers=[('cat', 
                                                 categorical_transformer, 
                                                 categorical_features)])
pipeline = Pipeline(steps=[('preprocessor', preprocessor)])

pipeline.fit(X_train)
于 2020-07-31T08:10:18.703 回答