2017-08-07 76 views
0

我创建了一个我想嵌入到我的nodejs web应用中的sklearn模型。我已经使用python3创建了模型,并使用joblib将其打包到一个pkl文件中。酸洗sklearn模型并在web应用中使用它们

from sklearn.externals import joblib 
joblib.dump(clf, 'RandomForest_jul30.pkl', protocol=2) 

我使用NPM包“child_process”运行一个Python脚本,我将数据加载到与解包与joblib.loads的PKL文件虽然它引发错误:

ValueError: unsupported pickle protocol: 3 

我试图改变我正在使用的Python版本,虽然我仍然得到类似的错误或版本相关的错误。

编辑:当使用Python 3运行错误是:

/usr/lib/python3/dist-packages/sklearn/base.py:315: UserWarning: Trying to unpickle estimator DecisionTreeClassifier from version 0.18.1 when using version 0.18. This might lead to breaking code or invalid results. Use at your own risk. 
    UserWarning) . . . KeyError: 2 

回答

0

尝试使用cPickle

import cPickle as pkl 
pkl.dump(clf,open('Clf.clf','wb+')) 
+0

我有点困惑。有些资源说cPickle已经过时了,或者不再是cPickle –

+0

在python3中它被称为_pickle它只是普通的pickle而是更快 –

+0

用这个库解压文件就像用joblib或pickle解包一样吗? –