首页 > 解决方案 > 如何使用训练数据的标签指定分类列的标签?

问题描述

所以我使用一些数据来制作随机森林模型。有多个分类列,我使用 sklearn LabelEncoder 将它们更改为数字。例如 'male' 和 'female' 的标签分别为 '0' 和 '1'。然后我使用模型来预测单个数据。在预测数据之前,我还将分类更改为数值。然后我意识到即使分类数据不同,单个数据的标签也总是相同的。例如(单个数据),男性和女性被标记为'0',其他也相同。这使我的模型无法使用。我应该只是制作标签手册还是有一些想法?

一些代码

label = LabelEncoder()
train_data['gender'] = label.fit_transform(train_data['gender'])
train_data['ever_married'] = label.fit_transform(train_data['ever_married'])
train_data['work_type'] = label.fit_transform(train_data['work_type'])
train_data['Residence_type'] = label.fit_transform(train_data['Residence_type'])
train_data['smoking_status'] = label.fit_transform(train_data['smoking_status'])

标签: pythonmachine-learningscikit-learnrandom-forest

解决方案


我认为那是因为您总是在同一个编码器实例上使用 fit_transform 方法

您应该使用该方法为每个类别使用不同fit的标签编码器,然后使用该编码器及其transform方法编码器转换您的单个实例

encoder_gender = LabelEncoder()
train_data_gender = encoder_gender.fit_transform(train_data['gender'])
encoder_gender.transform(single_data)

如果您在不同类别上fit_transform使用相同的编码器实例(label在您的情况下)调用 ,那么您每次都会更改该编码器的含义及其编码数据的方式


推荐阅读