El decapado de un RandomForestClassifier extraído de un canal de sklearn parece dar como resultado un ModuleNotFoundError
cuando se carga en otro cuaderno. El módulo errante existe, pero no se puede encontrar: 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()
En otro cuaderno:
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
EDITAR: descripción de corrección
No parece poder importar desde sklearn.ensemble._forest
. ¿Es esto intencionado?
¿Podría decir qué versión de scikit-learn usó para eliminar la tubería y qué versión está tratando de eliminar? Supongo que está tratando de despegar en 0.21.3 mientras decapa en 0.22.1
A continuación, puede actualizar. Sin embargo, tenga en cuenta que no lo consideramos un error porque no admitimos el decapado / despegado en diferentes versiones de scikit-learn.
Ese era exactamente el problema. No me di cuenta de que había iniciado el nuevo portátil en un kernel diferente. Muchas gracias por la pronta respuesta.