You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CountVectorizer+SGDClassifier预测时n_features不匹配的ValueError如何解决

问题原因

  • 冗余代码:你训练模型的全流程没有用到预先定义的Keras Tokenizer,预测阶段添加的tokenizer.fit_on_texts(test)、word_index = tokenizer.word_index属于无效代码,直接删除即可。
  • 核心错误:你在预测阶段实际调用了cv.fit_transform(test)(可从报错栈第9行确认),而CountVectorizer在训练时已经基于训练集学习到了固定的2494维词汇表,对测试样本重新fit会生成仅匹配单条测试数据的12维新词汇表,和模型要求的输入维度不匹配,触发报错。

修复方案

将预测代码修改为如下即可:

sentence="Drill was not in operation in the mine at the time of visit."
test=preprocess_text(sentence)
test=test.lower()
test=[test] 
# 直接用训练好的CountVectorizer做特征转换,不要重新fit
test1=cv.transform(test)
output=sgd.predict(test1)
print(output)

注意事项

  • 所有特征预处理工具(CountVectorizer、TfidfTransformer等)都遵循「仅在训练集fit一次,训练和预测阶段统一调用transform做转换」的规则,禁止在测试、预测数据上调用fit或fit_transform,避免特征维度不匹配的问题。
  • 如果你后续需要切换为基于Tokenizer的深度学习模型,再保留Tokenizer相关逻辑,同样需要保证Tokenizer仅在训练集上fit一次,预测阶段不要重复fit。

内容的提问来源于stack exchange,提问作者Chinmay Datar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:27:01