【问题标题】:Dummy variable levels not present in unseen data未见数据中不存在虚拟变量级别
【发布时间】:2020-04-11 23:42:33
【问题描述】:

我已经训练了一个包含 5 个类别变量级别的逻辑回归模型,并且所有级别对模型都很重要。

但是,在未见过的数据上,分类变量的级别数为 3。 因此,经过训练的模型无法预测看不见的数据,因为它无法找到某些级别。

我使用了一种热编码来转换分类变量。 如何解决这个问题?

用于转换为训练集中虚拟变量的代码:

   metadata_employeegroup = pd.get_dummies(df['metadata_employeegroup'],prefix='metadata_employeegroup',drop_first=True)
   df = pd.concat([df,metadata_employeegroup],axis=1)

基于 RFE,只有一些因子水平对模型是显着的。因此,在训练模型时,我会根据这些列对训练集进行子集

logsk.fit(X_train[col], y_train)
y_pred = logsk.predict_proba(X_test[col])

这里 col 只包含 3 个级别的 metadata_employeegroup。说 L1、L2、L3。

在看不见的数据上,我采用相同的方法来创建虚拟变量。 但是 metadata_employeegroup 的级别是 L1 和 L2。 训练好的模型无法找到 L3 级别并抛出错误。

【问题讨论】:

  • 你应该发布一些数据和代码,否则仍然不清楚你做了什么,错误是什么。只要您的编码在训练和测试之间保持一致,测试数据中缺少某些级别就可以了。因此,我首先要检查的是您的编码是否一致。例如,如果您使用 5 个哑元对训练集进行编码,那么您也应该使用 5 个哑元作为测试集(即使其中 2 个哑元始终为零)
  • 我已经添加了一些代码,并详细解释了所面临的问题。你能看看吗?

标签: python machine-learning logistic-regression one-hot-encoding dummy-variable


【解决方案1】:

对于看不见的数据中缺失的分类变量的级别,通过添加这些缺失的级别并将所有记录的值保持为 0 在数据中创建新特征。

我可以用这个One Hot Encoding Tutorial解决

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2015-09-30
    相关资源
    最近更新 更多