【问题标题】:y contains previously unseen labels: 'Male' in Label encodery 包含以前看不见的标签:标签编码器中的“男性”
【发布时间】:2021-05-27 14:47:57
【问题描述】:

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

这里是转换代码:

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

转换后的数据集看起来像dataset after transformation

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

y contains previously unseen labels: 'Male'

测试数据转换代码:

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

test data

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

【问题讨论】:

    标签: python pandas scikit-learn label-encoding


    【解决方案1】:

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

    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') 是由于您尝试使用您在上一个 for 循环中创建的最后一个编码器来转换 gender 列,在您的情况下可能是 smoking_status 标签编码器。

    【讨论】:

      猜你喜欢
      • 2021-05-29
      • 2020-02-03
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 2019-06-30
      相关资源
      最近更新 更多