問題描述
Pickle 找不到我不使用的模塊? (Pickle can't find module that I am not using?)
我有一個使用這些模塊生成模型的腳本。
import pandas as pd
import seaborn as sns
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn import metrics
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.model_selection import RandomizedSearchCV
from sklearn.metrics import accuracy_score
from sklearn.ensemble import GradientBoostingClassifier
from imblearn.over_sampling import RandomOverSampler
from datetime import datetime
import pickle
然後當我解開模型時,我得到:
ImportError: No module named _gb
我非常困惑,問題可能是什麼是嗎?
我試過了& 我可以在 Python shell 中手動導入所有這些模塊
非常感謝
File "/data/keenek1/production/ncx3_nps.py", line 232, in <module>
model_det = pickle.load(file)
File "/app/anaconda2/lib/python2.7/pickle.py", line 1384, in load
return Unpickler(file).load()
File "/app/anaconda2/lib/python2.7/pickle.py", line 864, in load
dispatch[key](self)
File "/app/anaconda2/lib/python2.7/pickle.py", line 1096, in load_global
klass = self.find_class(module, name)
File "/app/anaconda2/lib/python2.7/pickle.py", line 1130, in find_class
__import__(module)
ImportError: No module named _gb
參考解法
方法 1:
This happens when saving and loading occur in different environments.
I believe for Pickle to work correctly all modules related to the model have to have the same version when pickling and unpickling; python version and the operating system have to be the same.
No module named _gb
error specifically can occur when a model saved in Windows is loaded in Linux environment.