【发布时间】:2018-03-26 04:45:17
【问题描述】:
我正在尝试创建一个简单的基于 Flask 的 Web 应用程序,用户可以在其中输入一些文本并接收其情绪分类。我无法加载使用 scikit-learn 训练模型后保存的 pickle 文件。我要加载的文件是tfidf_vectorizer_train.pkl,当我对load_tfidf_model 进行函数调用时,它应该已经加载了。每当我在本地运行应用程序时,都会出现以下错误
AttributeError: 'NoneType' 对象没有属性 'transform'
我怀疑这是由于模型加载失败并且全局变量tfidf_model 保持为 None 类型。
如果有帮助,当前目录看起来像
├── ml_app.py
├── models
│ └── tfidf_vectorizer_train.pkl
├── templates
│ └── main.html
其中ml_app.py 包含以下代码
from flask import Flask, request, render_template
from sklearn.externals import joblib
app = Flask(__name__)
models_directory = 'models'
tfidf_model = None
def load_tfidf_model():
global tfidf_model
tfidf_model = joblib.load('{}/tfidf_vectorizer_train.pkl'.format(models_directory))
@app.route('/')
def my_form():
return render_template('main.html')
@app.route('/', methods=['POST'])
def my_form_post():
text = request.form['text']
# clean using tfidf
comment_term_doc = tfidf_model.transform([text])
processed_text = comment_term_doc.toarray()
return render_template('main.html', text=text, processed_text=processed_text)
if __name__ == '__main__':
try:
load_tfidf_model()
print("Model loaded")
except Exception as e:
print("Model loading failed")
print(str(e))
app.run()
【问题讨论】:
标签: python-3.x flask scikit-learn