Das Picken eines RandomForestClassifiers, der aus einer Sklearn-Pipeline gezogen wurde, scheint beim Laden in ein anderes Notebook zu einem ModuleNotFoundError
zu führen. Das fehlerhafte Modul existiert, kann aber nicht gefunden werden: sklearn.ensemble._forest
.
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import make_pipeline
import pickle
import numpy as np
pipeline = make_pipeline(
# Other steps in pipeline as well
RandomForestClassifier(),
)
# Create some fake data
X_train = np.array([[2,8,5],[4,7,2],[1,9,4]])
y_train = np.array([26, 29, 18])
# Train the model
pipeline.fit(X_train, y_train)
# Pickle the model
model = pipeline.named_steps['randomforestclassifier']
outfile = open("model.pkl", "wb")
pickle.dump(model, outfile)
outfile.close()
In einem anderen Notizbuch:
from sklearn.ensemble import RandomForestClassifier
import pickle
# Attempt to load the pickled model in another file / notebook:
infile = open("model.pkl", "rb")
model = pickle.load(infile)
infile.close()
# It's lonely over here
model
RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,
criterion='gini', max_depth=None, max_features='auto',
max_leaf_nodes=None, max_samples=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=100,
n_jobs=None, oob_score=False, random_state=None,
verbose=0, warm_start=False)
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-20-c8d1783e8b58> in <module>
5 # Attempt to load the pickled model in another file / notebook:
6 infile = open("model.pkl", "rb")
----> 7 model = pickle.load(infile)
8 infile.close()
ModuleNotFoundError: No module named 'sklearn.ensemble._forest'
System:
python: 3.7.4 (default, Oct 9 2019, 16:55:50) [GCC 7.4.0]
executable: /usr/local/bin/python3.7
machine: Linux-4.15.0-88-generic-x86_64-with-debian-buster-sid
Python deps:
pip: 19.3
setuptools: 40.8.0
sklearn: 0.21.3
numpy: 1.17.2
scipy: 1.3.1
Cython: None
pandas: 0.25.1
EDIT: Beschreibung korrigieren
Scheint nicht in der Lage zu sein, von sklearn.ensemble._forest
importieren zu können. Ist das beabsichtigt?
Könnten Sie use mitteilen, welche Version von scikit-learn Sie zum Beizen der Pipeline verwendet haben und welche Version Sie versuchen zu entbeizen. Ich gehe davon aus, dass Sie versuchen, in 0,21,3 zu entbeizen, während Sie in 0,22,1 beizen
Sie können dann einfach aktualisieren. Beachten Sie jedoch, dass wir dies nicht als Fehler betrachten, da wir das Beizen/Entbeizen in verschiedenen scikit-learn-Versionen nicht unterstützen
Genau das war das Thema. Mir war nicht bewusst, dass ich das neue Notebook in einem anderen Kernel gestartet hatte. Vielen Dank für die prompte Antwort.