Python 如何为列车和测试集分别标记多列编码

Python 如何为列车和测试集分别标记多列编码,python,scikit-learn,Python,Scikit Learn,我正在建立一个随机森林模型,在我的训练数据集中有3个分类变量。sklearn RandomForest不允许在模型中使用分类变量 我使用Labelencoder()在火车集上使用fit_变换将这些变量转换为数值变量,但在测试集上运行变换时出错 from sklearn.preprocessing import LabelEncoder le = LabelEncoder() X_train.apply(le.fit_transform) X_test.apply(le.transform)

我正在建立一个随机森林模型,在我的训练数据集中有3个分类变量。sklearn RandomForest不允许在模型中使用分类变量

我使用Labelencoder()在火车集上使用fit_变换将这些变量转换为数值变量,但在测试集上运行变换时出错

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
X_train.apply(le.fit_transform)

X_test.apply(le.transform)
我收到以下错误消息:


ValueError:(“y包含新标签:[“女性”“男性”],“发生在索引性别”)

似乎您的
Sex
列中有一个输入错误,其中一个值似乎是
[“女性”“男性”]
而不是
[“女性”,“男性”]
(请注意,在前者中,这两个值不是用逗号分隔的,因此不能作为单独的元素来读取)。请确保在应用
train\u test\u split
或以任何方式分割数据之前先修复该错误。例如,您可以查看
df.Sex.unique()
(其中
df
是您的数据集),并确保只有期望值
[“男性”、“女性”]

潜在的错误是
LabelEncoder
X\u测试中发现了一个在
X\u序列中找不到的值,因此它不知道如何转换它(因为您只在
X\u序列中找到的值上安装
LabelEncoder
)。只有在数据集中存在非常罕见的值时才会发生这种情况(在这种情况下,您可能需要重新考虑数据,或以适当的方式重新处理数据),但如果您想完全避免这种情况,一个可行的选择是在将数据拆分为
训练
测试

之前安装
LabelEncoder
。请提供一个解决方案,以便有人能够找出如何重现您的问题并确定解决方案。