使用Dictvectorizer词汇保存SGD分类器
我正在尝试保存一个训练好的SGD分类器。我使用的是DictVectorizer。但是在加载了这个保存的分类器后,当我用它来进行预测时,出现了以下错误:
AttributeError: 'DictVectorizer' object has no attribute 'vocabulary_'
这个问题怎么解决?我们能保存DictVectorizer的词汇表吗?
谢谢
下面是代码:
vecto= DictVectorizer(sparse=False)
transformer=vecto
X_train=transformer.fit_transform(features(sents))
X_test=transformer.transform(features(test))
y_test=[-1,1]
clf=SGDClassifier(alpha=0.2,loss='hinge',n_jobs=5)
clf=clf.partial_fit(X_train[:2],labels[:2],classes=[-1,1])
clf.partial_fit(X_train[2:3],labels[2:3],classes=[-1,1])
print clf.predict(X_test)
print clf.score(X_test,y_test)
1 个回答
1
你可以使用 pickle
这个库来保存和加载你的 SGDClassifier
和 DictVectorizer
,方法如下:
import pickle
# save SGDClassifier
with open('model.pkl','wb') as f:
pickle.dump(clf,f)
# load SGDClassifier
with open('model.pkl', 'rb') as f:
clf2 = pickle.load(f)
对于你的 DictVectorizer
,也可以用类似的方法:
# save DictVectorizer
with open('transformer.pkl','wb') as f:
pickle.dump(transformer,f)
# load DictVectorizer
with open('transformer.pkl', 'rb') as f:
transformer2 = pickle.load(f)