2017-08-07 3 views
0

J'ai créé un modèle sklearn que je voudrais intégrer dans mon application web nodejs. J'ai créé le modèle avec python3 et l'ai empaqueté dans un fichier pkl avec joblib.Pickling sklearn modèles et les utiliser dans l'application web

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

J'utilise paquet NPM "child_process" pour exécuter un script python que je charger les données dans et décompressez le fichier PKL avec joblib.loads bien qu'il jette l'erreur:

ValueError: unsupported pickle protocol: 3 

I J'ai essayé de changer quelle version de python j'utilise bien que j'obtiens toujours des erreurs semblables ou des erreurs liées à la version.

Edit: lorsqu'il est exécuté avec Python 3 l'erreur est:

/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 

Répondre

0

Essayez d'utiliser cPickle

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

Je suis un peu confus. Certaines ressources disent cPickle est obsolète et ou n'est plus cPickle –

+0

dans python3 il est appelé _pickle c'est juste le pickle normal mais plus rapide –

+0

Le déballage des fichiers avec cette bibliothèque est-il le même que le déballage avec joblib ou pickle? –