看不见的数据中不存在虚拟变量水平

Dummy variable levels not present in unseen data

我已经训练了一个具有 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 级别并引发错误。

对于未见数据中缺失的分类变量水平,通过添加那些缺失水平并在所有记录中将值保持为 0 来在数据中创建新特征。

我能够使用这个解决 One Hot Encoding Tutorial