【问题标题】:Python xgboost: kernel diedPython xgboost:内核死了
【发布时间】:2021-08-19 21:01:32
【问题描述】:

我的 Jupyter notebook 的 python 内核一直在死机。我之前已经成功运行了以下所有代码。目前,有问题。首先,我将向您展示我能够成功运行的代码块:

import xgboost as xgb
xgtrain = xgb.DMatrix(data = X_train_sub.values, label = Y_train.values)       # create dense matrix of training values
xgtest  = xgb.DMatrix(data = X_test_sub.values,  label = Y_test.values)        # create dense matrix of test values
param   = {'max_depth':2, 'eta':1, 'silent':1, 'objective':'binary:logistic'}  # specify parameters via map

我的数据很小的地方:

X_train_imp_sub.shape
(1365, 18)

但是,我笔记本的内核一直死在这个块上:

xgmodel = xgb.train(param,  xgtrain, num_boost_round = 2)                      # train the model
predictions = xgmodel.predict(xgtest)                                          # make prediction
from sklearn.metrics import accuracy_score                                   
accuracy = accuracy_score(y_true = Y_test, 
                          y_pred = predictions.round(), 
                          normalize = True) # If False, return # of correctly classified samples. Else, return fraction of correctly classified samples
print("Accuracy: %.2f%%" % (accuracy * 100.0))

当我将其拆分并逐行运行时,内核似乎在xgb.train() 行上死掉了。

数据很小。 xgboost 参数应该是保守的(即num_boost_round = 2max_depth:2eta:1,并且计算量不高。不知道发生了什么。

如前所述,我之前已经能够成功运行这两个块。我已经关闭了所有其他笔记本并重新启动了我的计算机,但没有运气。我正在 Macbook Pro 上通过 Anaconda Navigator 启动 jupyter

-- 更新-- 当我在xgboost 训练单元下方选择一个单元时,然后选择:Cells --> Run All Above,内核将始终在xgboost 训练行上死掉。这连续发生了约 40-50 次。我尝试了很多次,因为我正在对代码进行更改,以为我会在稍后解决xgboost 问题。

后来,我一个接一个地运行相同的单元格,xgboost 在我第一次尝试时以及之后的每次尝试时都完成得很好。我不知道为什么会发生这种情况,但很高兴知道。

【问题讨论】:

  • 你能确定是哪个命令导致内核崩溃吗?最后一个代码单元非常多样化。它会在训练、预测或准确计算中消失吗?
  • @MykhailoLisovyi 它会有所不同。在我的笔记本中,我打破了单元格,试图确定违规代码。但是,没有一条线路会始终导致失败。有时在第 1 行失败,有时在第 1+t 行失败
  • 我遇到了同样的问题,你是怎么解决这个问题的?如果您能告诉我解决方案,那就太好了

标签: python xgboost


【解决方案1】:

我遇到了类似的问题。这为我解决了问题。

import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'
from xgboost import XGBClassifier

【讨论】:

  • 很好的解决方案,这是 xgboost 和 matplotlib 普遍存在的问题
【解决方案2】:

我有同样的问题。愚蠢的是它工作正常,只是突然决定要发疯!我尝试了@PandaRocks 的解决方案。那没起效。我尝试重新启动东西。 甚至看到了一些关于删除库文件的内容here

最终通过使用conda 重新安装XGBoost 解决了这个问题,正如here 解释的那样:

$ conda install -c conda-forge xgboost

【讨论】:

    【解决方案3】:

    检查数据中是否有“Inf”值。使用“pct_change()”时经常出现这种情况。 xgBoost 在使用 Inf 值时会导致内核崩溃。

    【讨论】:

      【解决方案4】:

      以上解决方案都不适合我。

      我试过了:

      • 删除 libiomp5.dylib

      • 导入操作系统 os.environ['KMP_DUPLICATE_LIB_OK']='真' 从 xgboost 导入 XGBClassifier

      • 使用 brew install libomp 更新 libomp

      我的代码在以下行失败:

      # Create the XGBoost DMatrix
      dtrain = xgb.dask.DaskDMatrix(client, X_train, y_train)
      

      我正在开发 2020Macbook Pro、OS11.3.1、Python 3.9。

      非常欢迎任何其他建议!

      【讨论】:

      • 我有相同的 macbook pro 与 OS 11.2.1 和 Python v3.7。 conda 安装为我修复了它。如果您还没有以其他方式修复它,我建议您降级 python 版本。
      • 谢谢@TCArlen -- conda 安装是什么意思?你是说 Omid S. 的回答吗?
      • 是的,没错。通过pip卸载xgboost,然后根据Omid S.的回答安装
      猜你喜欢
      • 2021-10-24
      • 1970-01-01
      • 2013-07-04
      • 2021-04-20
      • 2016-01-03
      • 2016-03-31
      • 2018-03-04
      • 2019-05-16
      • 2018-10-05
      相关资源
      最近更新 更多