使用Dictvectorizer词汇保存SGD分类器

1 投票
1 回答
787 浏览
提问于 2025-04-18 00:58

我正在尝试保存一个训练好的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 这个库来保存和加载你的 SGDClassifierDictVectorizer,方法如下:

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)

撰写回答