存储 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 以供将来使用的主要内容,如果未能解决你的问题,请参考以下文章
Azure DevOps 自定义任务(在 TypeScript 中):使用文件路径浏览存储库并检索 XML 以供将来处理