LabelEncoding大量分类数据

LabelEncoding large amounts of categorical data

我有一个包含 39 个分类特征和 27 个数字特征的数据集。我正在尝试对分类数据进行编码,并且需要能够再次对每一列进行逆变换和调用变换。有没有比定义 39 个单独的 LabelEncoder 实例,然后分别 fit_transform 到每个列更漂亮的方法?

我觉得我遗漏了一些明显的东西,但我想不通!

enc = LabelEncoder
cat_feat = [col for col in input_df2.columns if input_df2[col].dtype == 'object']
cat_feat = np.asarray(cat_feat)

le1 =LabelEncoder()
le2 =LabelEncoder()
le3 =LabelEncoder()
...
#extended to le39

def label(input):
       input.iloc[:, 1] = le1.fit_transform(input.iloc[:, 1])
       input.iloc[:, 3] = le1.fit_transform(input.iloc[:, 3])
       input.iloc[:, 4] = le1.fit_transform(input.iloc[:, 4])
       ... 
       return input

DataFrame.apply 就是为了这个。它将为数据帧的每一列(或每一行,如果你传递它axis=1)调用指定的函数:

encoders = []

def apply_label_encoder(col):
    le = LabelEncoder()
    encoders.append(le)
    le.fit_transform(col)
    return 

input_df.iloc[:, 1:] = input_df.iloc[:, 1:].apply(apply_label_encoder)