存储 TfidfVectorizer 以供将来使用

Posted

技术标签:

【中文标题】存储 TfidfVectorizer 以供将来使用【英文标题】:Storing TfidfVectorizer for future use 【发布时间】:2019-04-27 03:41:29 【问题描述】:

我需要存储一个 TfidfVectorizer 以供将来使用。在this post之后,我在下面做了 -

tfidf_vect = TfidfVectorizer(analyzer='word', token_pattern=r'\w1,', max_features=5000)
pickle.dump(tfidf_vect, open("vectorizer.pickle", "wb"))

然后在单独的烧瓶服务上,我在下面做

@app.route('/cuisine/api/json',methods=['POST'])
def getCuisine():
    content=jsonify(request.json)
    test = pd.io.json.json_normalize(request.json)
    tfidf_vect = pickle.load(open("vectorizer.pickle", "rb"))
    test['ingredients'] = [str(map(makeString, x)) for x in test['ingredients']]
    test_transform = tfidf_vect.transform(test['ingredients'].values)
    le = preprocessing.LabelEncoder()
    X_test = test_transform
    y_test = le.fit_transform(test['cuisine'].values)

但是我遇到了错误

sklearn.exceptions.NotFittedError: TfidfVectorizer - Vocabulary wasn't fitted.

不知道我错过了什么。谁能推荐一下?

【问题讨论】:

【参考方案1】:

你忘了先拟合你的模型:

tfidf_vect = TfidfVectorizer(analyzer='word', token_pattern=r'\w1,', max_features=5000)
tfidf_vect.fit() <-- pass your training data!
pickle.dump(tfidf_vect, open("vectorizer.pickle", "wb"))

【讨论】:

以上是关于存储 TfidfVectorizer 以供将来使用的主要内容,如果未能解决你的问题,请参考以下文章

Julia:在运行时生成代码并将其存储以供将来评估/执行

Azure DevOps 自定义任务(在 TypeScript 中):使用文件路径浏览存储库并检索 XML 以供将来处理

我应该在哪里保存客户端的 JWT 以供将来请求?

保存 ML 模型以供将来使用

保存 ML 模型以供将来使用

如何使用 PayPal-Ruby-SDK 生成授权码以供将来付款?