Python sk-learn分类:在预测时处理缺失的分类特征

Python sk-learn分类:在预测时处理缺失的分类特征,python,scikit-learn,missing-features,Python,Scikit Learn,Missing Features,我在我的项目中训练了一个装袋分级机。由于使用的数据包含分类特征,我使用pandas框架(get_dummies)对它们进行编码。在此之后,我训练分类器 现在我想做一个预测。它返回了以下错误: ValueError: Number of features of the model must match the input. Model n_features is 12 and input n_features is 6. 我明白我为什么会犯这个错误。 模型所需的功能:12 预测数据集中的给定特征

我在我的项目中训练了一个装袋分级机。由于使用的数据包含分类特征,我使用pandas框架(get_dummies)对它们进行编码。在此之后,我训练分类器

现在我想做一个预测。它返回了以下错误:

ValueError: Number of features of the model must match the input. Model n_features is 12 and input n_features is 6.
我明白我为什么会犯这个错误。 模型所需的功能:12

预测数据集中的给定特征:6

由于编码,在本例中,训练数据集扩展到12个特征。 我用于预测的编码数据只有6个特征,因为它只是一行数据,在编码过程中根本不会扩散

此示例显示了问题:

原始训练数据集

Age| Color  
35 |'Orange'
55 |'Black' 
75 |'Red' 
熊猫得到_假人后:

X                              
Age| Orange | Black| Red       
35 | 1      | 0    | 0         
55 | 0      | 1    | 0         
75 | 0      | 0    | 1         
预测数据集

X
Age| Orange|       
35 | 1     |
预测的特征集与模型所需的特征集不匹配,因为它忽略了特征“黑色”和“红色”。我想不出一个好办法来解决这个问题


这是错误的方法造成的错误吗?

对于此应用程序,您应该尝试。它与pandas中的虚拟变量基本相同,但在对训练数据调用
fit
时,它将记住哪些值在哪里,哪些列对应。如果您随后
转换测试数据,它将为培训数据创建一个具有相同数量功能的数组。

很抱歉响应太晚。问题是,我挑选了经过训练的模型供以后使用。使用OneHotEncode,我需要拾取另一个对象来保存信息。这意味着在进行预测时,我需要从文件系统中导入两个数据,这是一个非常关键的时间上下文,可能会运行多达1000个其他预测。真正好的是,如果你能直接得到模型的特征列表,无论如何都要保存在那里。但是似乎没有办法做到这一点不,功能列表没有保存在模型中。模型如何知道您为其提供了哪些功能?OneHotEncoder应该由tiny创建,您可以将其放在同一个pickle文件中。这应该不会产生任何开销。