Preserving a random forest

I want to save and load the installed random forest classifier, but I get an error.

forest = RandomForestClassifier(n_estimators = 100, max_features = mf_val) forest = forest.fit(L1[0:100], L2[0:100]) joblib.dump(forest, 'screening_forest/screening_forest.pkl') forest2 = joblib.load('screening_forest/screening_forest.pkl') 

Mistake:

  File "C:\Users\mkolarek\Documents\other\TrackerResultAnalysis\ScreeningClassif ier\ScreeningClassifier.py", line 67, in <module> forest2 = joblib.load('screening_forest/screening_forest.pkl') File "C:\Python27\lib\site-packages\sklearn\externals\joblib\numpy_pickle.py", line 425, in load obj = unpickler.load() File "C:\Python27\lib\pickle.py", line 858, in load dispatch[key](self) File "C:\Python27\lib\site-packages\sklearn\externals\joblib\numpy_pickle.py", line 285, in load_build Unpickler.load_build(self) File "C:\Python27\lib\pickle.py", line 1217, in load_build setstate(state) File "_tree.pyx", line 2280, in sklearn.tree._tree.Tree.__setstate__ (sklearn\ tree\_tree.c:18350) ValueError: Did not recognise loaded array layout Press any key to continue . . . 

Do I need to initialize forest2 or something else?

+7
python scikit-learn joblib
source share
1 answer

I solved this with cPickle:

 with open('screening_forest/screening_forest.pickle', 'wb') as f: cPickle.dump(forest, f) with open('screening_forest/screening_forest.pickle', 'rb') as f: forest2 = cPickle.load(f) 

but a joblib solution may also be useful.

+5
source share

All Articles