Man*_*jee 10 python machine-learning xgboost data-science amazon-sagemaker
我正在尝试从 pickle 文件加载序列化的 xgboost 模型。
import pickle
def load_pkl(fname):
with open(fname, 'rb') as f:
obj = pickle.load(f)
return obj
model = load_pkl('model_0_unrestricted.pkl')
Run Code Online (Sandbox Code Playgroud)
打印模型对象时,我在 linux(AWS Sagemaker Notebook)中收到以下错误
~/anaconda3/envs/python3/lib/python3.6/site-packages/xgboost/sklearn.py in get_params(self, deep)
436 if k == 'type' and type(self).__name__ != v:
437 msg = 'Current model type: {}, '.format(type(self).__name__) + \
--> 438 'type of model in file: {}'.format(v)
439 raise TypeError(msg)
440 if k == 'type':
~/anaconda3/envs/python3/lib/python3.6/site-packages/sklearn/base.py in get_params(self, deep)
193 out = dict()
194 for key in self._get_param_names():
--> 195 value = getattr(self, key)
196 if deep and hasattr(value, 'get_params'):
197 deep_items = value.get_params().items()
AttributeError: 'XGBClassifier' object has no attribute 'use_label_encoder'
Run Code Online (Sandbox Code Playgroud)
您能帮忙解决这个问题吗?
它在我本地的 mac 上运行良好。
参考:xgboost:1.4.1安装日志(Mac)
Collecting xgboost
Downloading xgboost-1.4.1-py3-none-macosx_10_14_x86_64.macosx_10_15_x86_64.macosx_11_0_x86_64.whl (1.2 MB)
Run Code Online (Sandbox Code Playgroud)
但无法在 AWS 上工作
参考:xgboost:1.4.1安装日志(SM笔记本,linux机器)
Collecting xgboost
Using cached xgboost-1.4.1-py3-none-manylinux2010_x86_64.whl (166.7 MB)
Run Code Online (Sandbox Code Playgroud)
谢谢
小智 8
看来您升级了 xgboost。您可以考虑通过以下方式降级到 1.2.0:
pip install xgboost==1.2.0
Run Code Online (Sandbox Code Playgroud)
小智 3
我尝试在 ubuntu 上运行的笔记本上进行测试,它似乎工作正常,但是你能检查一下你是如何初始化分类器的吗?这是我尝试过的:
\nimport numpy as np\nimport pickle\nfrom scipy.stats import uniform, randint\n\nfrom sklearn.datasets import load_breast_cancer, load_diabetes, load_wine\nfrom sklearn.metrics import auc, accuracy_score, confusion_matrix, mean_squared_error\nfrom sklearn.model_selection import cross_val_score, GridSearchCV, KFold,RandomizedSearchCV, train_test_split\n\nimport xgboost as xgb\ncancer = load_breast_cancer()\nX = cancer.data\ny = cancer.target\nxgb_model = xgb.XGBClassifier(objective="binary:logistic", random_state=45)\nxgb_model.fit(X, y)\npickle.dump(xgb_model, open("xgb_model.pkl", "wb"))\nRun Code Online (Sandbox Code Playgroud)\n使用您的函数加载模型并输出:
\ndef load_pkl(fname):\n with open(fname, 'rb') as f:\n obj = pickle.load(f)\n return obj\n\nmodel = load_pkl('xgb_model.pkl')\nmodel\nRun Code Online (Sandbox Code Playgroud)\n以下是输出:
\nXGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,\n importance_type='gain', interaction_constraints='',\n learning_rate=0.300000012, max_delta_step=0, max_depth=6,\n min_child_weight=1, missing=nan, monotone_constraints='()',\n n_estimators=100, n_jobs=8, num_parallel_tree=1, random_state=45,\n reg_alpha=0, reg_lambda=1, scale_pos_weight=1, subsample=1,\n tree_method='exact', validate_parameters=1, verbosity=None)\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\x8b
\n| 归档时间: |
|
| 查看次数: |
16583 次 |
| 最近记录: |