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

加载预训练Linear SVM预测新数据时特征数量不匹配错误求助

解决方案

问题根源

你遇到的维度不匹配错误,本质是两个问题导致的:

  • 训练阶段拟合好的TfidfVectorizer(也就是vector对象)没被保存,预测时如果重新定义vector,哪怕参数一致,也没法复用训练数据生成的词汇表,导致新数据的特征维度和模型要求完全不符。
  • 调用transform时直接传入单个字符串,TfidfVectorizer会把它拆成字符序列(每个字符当作独立文档),生成的特征数自然和训练时的472082维对不上。

无需重训的解决步骤

1. 补存训练时的TFIDF向量器

回到你当初训练模型的环境,给拟合好的vector添加保存步骤(不用重新运行训练,只要当时的vector对象还在会话中即可):

import joblib
# 保存训练时已完成fit的vector
joblib.dump(vector, "/content/drive/MyDrive/dataset/Classifers/tfidf_vector.sav")

2. 修改预测代码,加载向量器并正确转换数据

把预测代码调整为如下形式:

import joblib

# 同时加载预训练模型和训练时保存的vector
Linear_SVC_classifier = joblib.load("/content/drive/MyDrive/dataset/Classifers/Linear_SVC_classifier.sav")
vector = joblib.load("/content/drive/MyDrive/dataset/Classifers/tfidf_vector.sav")

test_data = input("Enter Data for Testing: ")
# 将单个测试文本包装成列表,避免被当作字符序列处理
newly_testing_data = vector.transform([test_data])
SVM_Prediction_NewData = Linear_SVC_classifier.predict(newly_testing_data)

原理说明

训练时的TfidfVectorizer已经记录了训练数据的所有词汇、ngram组合等特征空间信息,保存后再加载复用,转换新数据时会严格按照训练时的特征维度生成472082维特征,完全匹配模型的输入要求,不需要重新训练模型或处理训练数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:15:46