python - Pickle 找不到我不使用的模块?
问题描述
我有一个使用这些模块生成模型的脚本。
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
解决方案
当保存和加载发生在不同的环境中时,就会发生这种情况。
我相信为了让 Pickle 正常工作,与模型相关的所有模块在酸洗和解酸时必须具有相同的版本;python版本和操作系统必须相同。
No module named _gb
当保存在 Windows 中的模型在 Linux 环境中加载时,可能会发生错误。
推荐阅读
- asp.net - 使用 .net 和 vb,我如何处理会话和动态变量?
- linear-algebra - 并行求解多个小型线性系统
- database - 侦听数据库更新的工具
- xml - 动态 XSLT - 从网页而不是命令行运行转换
- c# - 单击时文本框的 Visual Studio 2015 C# 颜色对话框
- c# - 在 Mac 上运行的 .NET Core 上出现 X509Chain 错误
- django - 使用 MPTT 在 Post 之后将多个 ModelMutipleChoiceField 的值复制为一个
- java - 返回布尔值的 Java 10 ifPresentOrElse
- android - AOSP 构建错误忍者失败:退出状态 1
- git - 跨所有新文件和修改文件的 Git grep(提交前)