SVC报错提示X有538个特征但期望输入1291个特征如何解决?
问题修复方案
错误根因
- 训练阶段调用TF-IDF的
fit_transform()方法会基于训练集文本生成固定词表,最终得到1291维特征,SVC模型训练时会固定接收该维度的输入 - 测试阶段你错误地对测试集再次调用
fit_transform(),该操作会基于测试集的小样本重新生成词表,最终得到的特征维度只有538,和模型要求的输入维度不匹配,因此触发报错
你之前尝试的from sklearn import *和当前问题完全无关,因此无法生效。
修复方法
测试集向量化时,直接使用训练阶段已经拟合好词表的vectorizer调用transform()方法,不要重新执行拟合逻辑。
修正后的代码片段
首先是向量化部分的修正:
# 向量化 from sklearn.feature_extraction.text import TfidfVectorizer vectorizer = TfidfVectorizer() x_train = vectorizer.fit_transform(x_train.values.astype('U')) # 测试集仅做转换,不重新拟合词表 x_test = vectorizer.transform(x_test.values.astype('U'))
另外你的代码最后调用了classification_report但未导入对应的模块,还需要在导入部分增加:
from sklearn.metrics import classification_report
内容的提问来源于stack exchange,提问作者Vaishnavi Gupta
相关产品推荐
相关产品推荐

