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)
我有一个包含 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)