【问题标题】:Saving SGD Classifier with Dictvectorizer vocabulary使用 Dictvectorizer 词汇保存 SGD 分类器
【发布时间】:2014-05-13 07:07:34
【问题描述】:

我正在尝试保存经过训练的 SGD 分类器。我正在使用 Divtvectorizer。但是在加载腌制分类器后,当我使用它进行预测时,我收到以下错误

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)

【问题讨论】:

  • 我们可以看看代码吗? vocabulary_ 属性是在训练期间设置的。你是在训练之前还是之后保存矢量化器?
  • 我们可以保存矢量化器吗?如果可以,您能解释一下如何吗??我正在腌制分类器。
  • 分类器和生成分类器训练数据的矢量化器必须始终一起使用。你应该腌制两者。为了节省一些时间,您可以同时输入 Pipeline 并腌制它。
  • 问题是我正在使用 partial_fit 所以不能使用 Pipeline..我知道如何用数据腌制矢量化器来腌制分类器??
  • 你能发布一些代码吗?

标签: python machine-learning nlp scikit-learn sentiment-analysis


【解决方案1】:

您可以使用pickle 库来保存和加载您的SGDClassifer 以及您喜欢的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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2021-07-31
    • 2022-01-10
    • 1970-01-01
    • 2019-07-09
    • 2021-08-12
    • 2019-03-09
    相关资源
    最近更新 更多