训练基于词袋模型的贝叶斯分类器遇到的一些问题
在网上找了判断垃圾邮件的代码,套到自己的数据上,判断爬到的文本记录是否与主题相关。
一、ValueError dimension mismatch ,在Stack Overflow上找到解决步骤:
1.vector.fit_transform()只用在训练集上,对测试集直接用vector.transform().
bow_train_features = vector.fit_transform(train_X)
bow_test_features = vector.transform(test_X)
但是我的程序修改了之后还是报dimension mismatch的错
2. vector没有保存,在程序里创建了两次。用pickle.dump()将矢量保存
vector = CountVectorizer(min_df=1, ngram_range=(1,1))
with open('vect.pkl', 'wb') as f:
pickle.dump(vector, f, pickle.HIGHEST_PROTOCOL)
我顺便顺便把分类器也保存了
with open('model.pkl', 'wb') as f:
pickle.dump(clf, f, pickle.HIGHEST_PROTOCOL)
保存时需要注意,矢量和分类器都需要在模型训练完毕后保存,否则就保存了初始化的属性。保存后 程序可以正常运行。
程序正常运行