我使用sklearn.externals.joblib
将分类器模型持久保存到磁盘上,实际上在较低级别使用pickle
模块。
我创建了一个名为CountVectorizer
的自定义StemmedCountVectorizer
类,并将其保存在util.py
中,然后在脚本中用它来保存模型
import util
from sklearn.externals import joblib
vect = util.StemmedCountVectorizer(stop_words='english', ngram_range=(1,1))
bow = vect.fit_transform(sentences)
joblib.dump(vect, 'vect.pkl')
这是我使用Flask的项目结构:
|- sentiment/
|- run.py
|- my_app/
|- analytic/
|- views.py
|- util. py
|- vect.pkl
我使用python run.py
运行应用并尝试在joblib.load
中使用views.py
加载持久对象,但它不起作用,我导入了util
模块但我收到了错误:
ImportError: No module named util
任何人都能解决这个问题吗?感谢
答案 0 :(得分:2)
看起来像包/ pythonpath问题。系统需要知道模块的位置。您在__init.py__
和my_app
文件夹中有analytic
吗? __init__.py
文件将磁盘上的目录标记为Python包目录。结构应该是这样的
|- sentiment/
|- run.py
|- my_app/
|- __init__.py
|- analytic/
|- __init__.py
|- views.py
|- util. py
|- vect.pkl
然后在run.py
中,尝试使用
import my_app.analytic.utils
或
from my_app.analytic.utils import <yourClassName>
有关python包的详细信息,请检查here。 并注意名称空间问题。