Scikit-learn: Kesalahan impor saat memuat model acar yang ditarik dari Pipeline

Dibuat pada 27 Feb 2020  ·  3Komentar  ·  Sumber: scikit-learn/scikit-learn

Jelaskan bugnya

Mengambil RandomForestClassifier yang ditarik dari Pipeline sklearn tampaknya menghasilkan ModuleNotFoundError saat memuat ke notebook lain. Modul yang salah memang ada, tetapi tidak dapat ditemukan: sklearn.ensemble._forest .

Langkah/Kode untuk Mereproduksi

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()

Di buku catatan lain:

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

Hasil yang diharapkan

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)

Hasil nyata

---------------------------------------------------------------------------
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'

Versi

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: Perbaiki deskripsi

Question

Semua 3 komentar

Tampaknya tidak dapat mengimpor dari sklearn.ensemble._forest . Apakah ini dimaksudkan?

Bisakah Anda memberi tahu menggunakan versi scikit-learn mana yang Anda gunakan untuk mengasinkan pipa dan versi mana yang Anda coba hapus. Saya berasumsi bahwa Anda mencoba untuk menghilangkan acar di 0.21.3 sambil mengasinkan di 0.22.1
Anda kemudian dapat memperbarui. Namun, perlu diketahui bahwa kami tidak menganggapnya sebagai bug karena kami tidak mendukung pickling/unpickling di berbagai versi scikit-learn

Itulah masalahnya. Saya tidak menyadari bahwa saya telah memulai notebook baru di kernel yang berbeda. Terima kasih banyak atas respon yang cepat.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat