首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AttributeError:'XGBModel‘对象没有属性’回调‘

AttributeError:'XGBModel‘对象没有属性’回调‘
EN

Stack Overflow用户
提问于 2022-04-18 12:54:12
回答 3查看 4.8K关注 0票数 1

追溯(最近一次调用):文件"D:\Miniconda3\envs\ppy39\lib\site-packages\flask\app.py",第2073行,在wsgi_app response = self.full_dispatch_request()文件"D:\Miniconda3\envs\ppy39\lib\site-packages\flask\app.py",第1518行中,在full_dispatch_request rv = self.handle_user_exception(e)文件"D:\Miniconda3\envs\ppy39\lib\site-packages\flask\app.py",第1516行中在"D:\Miniconda3\envs\ppy39\lib\site-packages\flask\app.py",的full_dispatch_request rv = self.dispatch_request()文件第1502行中,在dispatch_request返回的文件"C:\Users\admin\Desktop\VScode\WorkProjects\2022\Product_Classification\retention_ml.py",第169号行中,在output_result中

文件"D:\Miniconda3\envs\ppy39\lib\site-packages\xgboost\sklearn.py",行result_28 = xgboost_reg_281.predict(datacol_reg_28)第1047行,在“预测是否self._can_use_inplace_predict():文件”第983行中,在_can_use_inplace_predict预测器=self.get_params().get(“预测器”)中,(无)文件"D:\Miniconda3\envs\ppy39\lib\site-packages\xgboost\sklearn.py",第636行( get_params params.update(cp.class.get_params(cp,deep)) (文件"D:\Miniconda3\envs\ppy39\lib\site-packages\xgboost\sklearn.py",第633行,在get_params params =Super().get_params(深层) "D:\Miniconda3\envs\ppy39\lib\site-packages\sklearn\base.py",第205行中在get_params值= getattr(self,key) AttributeError:'XGBModel‘对象没有属性’回调‘

EN

回答 3

Stack Overflow用户

发布于 2022-04-19 07:06:43

检查您的xgboost库版本。我将从xgboost==1.5.0 env保存的模型加载到xgboost==1.6.0 env,并在对模型进行操作时得到了相同的错误。我把xgboost降级到1.5.0,一切都很好。我怀疑自1.6.0以来,模型保存格式正在发生变化,因为它警告我使用泡菜转储加载二进制模型文件。

票数 5
EN

Stack Overflow用户

发布于 2022-04-21 23:00:56

我们做了:

代码语言:javascript
运行
复制
!pip install xgboost==1.5.0

它运行得很完美

票数 2
EN

Stack Overflow用户

发布于 2022-07-08 09:53:19

如果您想使用xgboost版本1.6,只需执行以下操作:

代码语言:javascript
运行
复制
new_attrs = ['grow_policy', 'max_bin', 'eval_metric', 'callbacks', 'early_stopping_rounds', 'max_cat_to_onehot', 'max_leaves', 'sampling_method']

for attr in new_attrs:
    setattr(xgb_model, attr, None)

这将设置1.6中的所有参数,而不是1.5中的参数。所有这些都是可选的,据我所知,没有一个是可以选择的。结果一致。

如果您收到关于模型是旧版本(并且使用泡菜)的抱怨,您可以使用旧的xgboost版本创建虚拟环境,用新版本创建环境。然后,在旧版本中,做:

代码语言:javascript
运行
复制
import pickle

with open("xgb_model_1_5.p", "rb") as rf:
    xgb = pickle.load(rf)
    bst = xgb.get_booster()
    bst.save_model("booster")

然后在1.6虚拟环境中:

代码语言:javascript
运行
复制
import pickle

with open("xgb_model_1_5.p", "rb") as rf:
    xgb = pickle.load(rf)
    bst = xgb.get_booster()
    bst.load_model("booster")

with open("xgb_model_1_6.p", "wb") as wf:
    pickle.dump(xgb, wf)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71912084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档