You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XGBRegressor时遭遇AttributeError问题的解决咨询

解决XGBRegressor在Python 3.10中出现的AttributeError: module 'collections' has no attribute 'Mapping'问题

问题场景

在Python 3.10.12版本的Jupyter Notebook中运行XGBRegressor代码:

from xgboost import XGBRegressor #xgb regressor module

xgb = XGBRegressor(n_estimators = 3000,learning_rate=0.01)
xgb.fit(X_train,y_train)

运行后抛出如下错误:

AttributeError                            Traceback (most recent call last)
Cell In[287], line 4
      1 from xgboost import XGBRegressor #xgb regressor module
      3 xgb = XGBRegressor(n_estimators = 3000,learning_rate=0.01)
----> 4 xgb.fit(X_train,y_train)
      5 pred_xgb = xgb.predict(X_test)
      6 s6 = r2_score(Y_test,pred_xgb)

File F:\Anaconda\lib\site-packages\xgboost\sklearn.py:320, in XGBModel.fit(self, X, y, sample_weight, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set)
    317     else:
    318         params.update({'eval_metric': eval_metric})
---> 320 self._Booster = train(params, trainDmatrix,
    321                       self.n_estimators, evals=evals,
    322                       early_stopping_rounds=early_stopping_rounds,
    323                       evals_result=evals_result, obj=obj, feval=feval,
    324                       verbose_eval=verbose, xgb_model=xgb_model)
    326 if evals_result:
    327     for val in evals_result.items():

File F:\Anaconda\lib\site-packages\xgboost\training.py:200, in train(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks, learning_rates)
    196     warnings.warn("learning_rates parameter is deprecated - use callback API instead",
    197                   DeprecationWarning)
    198     callbacks.append(callback.reset_learning_rate(learning_rates))
---> 200 return _train_internal(params, dtrain,
    201                        num_boost_round=num_boost_round,
    202                        evals=evals,
    203                        obj=obj, feval=feval,
    204                        xgb_model=xgb_model, callbacks=callbacks)

File F:\Anaconda\lib\site-packages\xgboost\training.py:32, in _train_internal(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks)
     29     for eval_metric in eval_metrics:
     30         params += [('eval_metric', eval_metric)]
---> 32 bst = Booster(params, [dtrain] + [d[0] for d in evals])
     33 nboost = 0
     34 num_parallel_tree = 1

File F:\Anaconda\lib\site-packages\xgboost\core.py:862, in Booster.__init__(self, params, cache, model_file)
    859 self.handle = ctypes.c_void_p()
    860 _check_call(_LIB.XGBoosterCreate(dmats, c_bst_ulong(len(cache)),
    861                                  ctypes.byref(self.handle)))
---> 862 self.set_param({'seed': 0})
    863 self.set_param(params or {})
    864 if model_file is not None:

File F:\Anaconda\lib\site-packages\xgboost\core.py:995, in Booster.set_param(self, params, value)
    985 def set_param(self, params, value=None):
    986     """Set parameters into the Booster.
    987 
    988     Parameters
   (...)
    993        value of the specified parameter, when params is str key
    994     """
---> 995     if isinstance(params, collections.Mapping):
    996         params = params.items()
    997     elif isinstance(params, STRING_TYPES) and value is not None:

AttributeError: module 'collections' has no attribute 'Mapping'

解决方案

  • 问题原因:Python 3.10及以上版本中,collections.Mapping已被移除,官方将其迁移到collections.abc.Mapping,而当前使用的XGBoost版本未适配该变化,导致报错。

  • 方法1:升级XGBoost到兼容版本(推荐)
    在终端或Jupyter Notebook的代码单元格中执行以下命令升级:

    pip install --upgrade xgboost
    

    若使用Anaconda环境,可改用:

    conda update xgboost
    
  • 方法2:临时兼容处理(仅应急使用)
    在所有代码最开头添加以下两行,手动为collections模块补充Mapping属性:

    import collections.abc
    collections.Mapping = collections.abc.Mapping
    

    注意:这种方法属于临时补丁,可能引发其他未知问题,优先选择升级XGBoost。

内容的提问来源于stack exchange,提问作者User

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:45:04