【发布时间】:2013-11-15 05:09:18
【问题描述】:
我正在尝试使用 scikit-learn 进行分类任务。 我的代码从数据中提取特征,并将它们存储在字典中,如下所示:
feature_dict['feature_name_1'] = feature_1
feature_dict['feature_name_2'] = feature_2
当我拆分数据以便使用sklearn.cross_validation 对其进行测试时,一切正常。我遇到的问题是当测试数据是一个新集合,而不是学习集合的一部分(尽管它对每个样本都有相同的确切特征)。在我将分类器放在学习集上之后,当我尝试调用 clf.predict 时,我得到了这个错误:
ValueError: X has different number of features than during model fitting.
我假设这与此有关(在 DictVectorizer 文档之外):
在 fit 或 fit_transform 期间未遇到的命名特征将被 默默地忽略。
DictVectorizer 已经删除了一些我猜想的功能...如何禁用/解决此功能?
谢谢
=== 编辑 ===
问题在于 larsMans 建议我两次拟合 DictVectorizer。
【问题讨论】:
-
忽略看不见的特征应该防止在训练和测试时具有不同的形状。请显示重现错误的minimal example。您可能已经安装了两次
DictVectorizer。
标签: python classification scikit-learn