3

我正在使用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并尝试使用 in 加载持久对象,joblib.loadviews.py它不起作用,我导入了util模块但收到错误:

ImportError: No module named util

有人可以解决这个问题吗?谢谢

4

1 回答 1

2

看起来像包/pythonpath 问题。系统需要知道在哪里设置您的模块。你有__init.py__inmy_appanalytic文件夹吗?该__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 包的详细信息,请查看此处。并注意命名空间问题。

于 2015-06-23T02:26:23.627 回答