如何强制scikit-learn DictVectorizer不丢弃功能?

Wea*_*Fox 0 python classification scikit-learn

我试图使用scikit-learn进行分类任务.我的代码从数据中提取特征,并将它们存储在字典中,如下所示:

feature_dict['feature_name_1'] = feature_1
feature_dict['feature_name_2'] = feature_2
Run Code Online (Sandbox Code Playgroud)

当我分割数据以便使用sklearn.cross_validation一切正常工作来测试它时.我遇到的问题是当测试数据是新集时,而不是学习集的一部分(尽管它对每个样本具有相同的确切特征).在我将分类器放在学习集上之后,当我尝试调用时,clf.predict我得到了这个错误:

ValueError: X has different number of features than during model fitting.
Run Code Online (Sandbox Code Playgroud)

我假设这与此有关(在DictVectorizer文档中):

在fit或fit_transform期间未遇到的命名要素将被默默忽略.

DictVectorizer 我已经删除了一些功能...我如何禁用/解决此功能?

谢谢

===编辑===

问题是larsMans建议我适应DictVectorizer两次.

And*_*ler 5

您应该fit_transform在训练集上使用,并且仅transform在测试集上使用.