看不见的数据中不存在虚拟变量水平
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
我已经训练了一个具有 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