python - 虚拟变量水平不存在于未见数据中

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

我已经训练了一个具有 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 来解决

关于python - 虚拟变量水平不存在于未见数据中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59408656/

相关文章:

python - 在 csv 中写入 unicode 数据

python - 在 Django 中初始化 GeopositionField

python - 如何将估计器的拟合参数传递给 RFECV 的拟合?

r - R中的大型固定效应二项式回归

python - 由表达式赋值的类变量

python - 脉冲宽度读取器每次打印相同的值

Python "invalid index to scalar variable"使用 RandomForestClassifier

python - 为什么混淆指标中的正样本量小于实际数据?

machine-learning - sklearn SGDClassifier fit() 与partial_fit()

machine-learning - 我们可以使用逻辑回归来预测数值(连续)变量,即餐厅的收入