Python Xgboost GridSearchCV 被杀,如何修复?

Posted

技术标签:

【中文标题】Python Xgboost GridSearchCV 被杀,如何修复?【英文标题】:Python Xgboost GridSearchCV killed, how to fix? 【发布时间】:2017-02-24 04:30:36 【问题描述】:

我是 Python 上的 xgboost 新手,今天我试图按照这里的教程进行操作:https://jessesw.com/XG-Boost/。

然后我使用自己的数据尝试了 xgboost,它在不使用 gridsearch 的情况下也能正常工作。然后我按照教程进行了网格搜索,但看起来它不起作用。这是我的代码:

cv_params = 'max_depth': [3, 5, 7], 'min_child_weight': [1, 3, 5]
ind_params = 'learning_rate': 0.1, 'n_estimators': 500, 'seed': 0,
          'subsample': 0.8, 'colsample_bytree': 0.8,
          'objective': 'reg:linear'

optimized_GBM = GridSearchCV(xgb.XGBClassifier(**ind_params),
                         cv_params,
                         cv=5, n_jobs=2, verbose=2)

optimized_GBM.fit(train_x, train['label'])

我得到了这个输出:

Fitting 5 folds for each of 9 candidates, totalling 45 fits
[CV] max_depth=3, min_child_weight=1................................      
//anaconda/bin/python.app: line 3:   906 Killed: 9        //anaconda/python.app/Contents/MacOS/python "$@"

任何建议将不胜感激!

【问题讨论】:

你能在其他系统上检查一下吗?似乎 python 解释器崩溃了。 @IbraimGaniev 刚刚在另一台计算机上运行了相同的代码,但结果相同 已解决。由于这是一个回归问题,我们应该使用 XGBRegressor() 而不是 XGBClassifier()。之前在使用 R,所以没有意识到 Python 中的区别。 【参考方案1】:

就我而言,原因在于 colsample_by_tree。当特征总数小于 10 时为 0.1。

失败的原因是一个断言,当树试图在具有 n 个样本和 0 个特征的数据集上学习时。

【讨论】:

以上是关于Python Xgboost GridSearchCV 被杀,如何修复?的主要内容,如果未能解决你的问题,请参考以下文章

如果我使用 GridsearchCV,如何在 Xgboost 中使用 model.evals_result()?

python GridSearch列表

python 调整超参数算法gridsearch

使用 python 中的 hypopt 包在 GridSearch 函数中指定评分指标

火炉炼AI机器学习017-使用GridSearch搜索最佳参数组合

gridsearchcv怎么调参