3

在我的项目中,我训练了一个 BaggingClassifier。由于使用的数据包含分类特征,我使用 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' 

在熊猫 get_dummies 之后:

X                              
Age| Orange | Black| Red       
35 | 1      | 0    | 0         
55 | 0      | 1    | 0         
75 | 0      | 0    | 1         

预测数据集

X
Age| Orange|       
35 | 1     |

预测的特征集不适合模型所需的集,因为它错过了特征“黑色”和“红色”。而且我想不出一个很好的方法来解决这个问题。

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

4

1 回答 1

0

对于此应用程序,您应该尝试sklearn.preprocessing.OneHotEncoder。它基本上与 pandas 中的虚拟变量相同,但是当调用fit您的训练数据时,它会记住那里的哪些值以及对应的列。如果你然后transform你的测试数据,它将为训练数据创建一个具有相同数量特征的数组。

于 2015-05-06T14:28:15.943 回答