0

我正在尝试使用 LabelEncoder 将我的数据集的分类列转换为数字。 数据集

这是转换代码:

for i in cat_columns:
    df[i]=encoder.fit_transform(df[i])

转换后的数据集看起来像转换后的数据

但问题是,每当我尝试转换我的测试数据集时,它都会给出一个错误

y contains previously unseen labels: 'Male'

测试数据转换代码:

for i in cat_columns:
    df1[i]=encoder.transform(df1[i])

测试数据

现在我该如何解决这个问题?

4

1 回答 1

0

我想问题是您使用相同的编码器来适应所有不同的列。相反,您应该使用不同的编码器来拟合每一列。例如,您可以使用字典来存储不同的编码器:

from sklearn import preprocessing

encoders = {}
for i in cat_columns:
    encoders[i] = preprocessing.LabelEncoder()
    df[i] = encoders[i].fit_transform(df[i])
    
for i in cat_columns:
    df1[i] = encoders[i].transform(df1[i])

您遇到的错误 ( previously unseen labels: 'Male') 是由于您尝试gender使用您在上一个 for 循环中创建的最后一个编码器来转换列,在您的情况下可能是smoking_status标签编码器。

于 2021-02-25T09:32:48.063 回答