python - 如何使用训练数据的标签指定分类列的标签?
问题描述
所以我使用一些数据来制作随机森林模型。有多个分类列,我使用 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'])
解决方案
我认为那是因为您总是在同一个编码器实例上使用 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
在您的情况下)调用 ,那么您每次都会更改该编码器的含义及其编码数据的方式
推荐阅读
- c++ - 使用模板模板函数获取模板参数的数量
- sql - 我想使用 sql 获得成绩的 GWA。我该怎么办?
- symfony - Symfony 使用电子邮件而不是用户名记住我
- api - 从 Google Vision API 响应中删除单词
- javascript - 在邮递员的预请求脚本中计算文件的文件大小
- javascript - 从模板访问数据到 Vue 实例
- php - Laravel:方法参数绕过
- azure-api-management - Azure API 管理 - 仅在设置标记时应用策略
- python-3.x - 如何使用 ctypes 在 Python 中实现 NetUserGetInfo 函数
- webpack - 尝试使用 Webpack 编译 AdminLTE 和 Bootstrap