XGBoost无法找到sklearn

时间:2018-03-18 21:58:46

标签: python scikit-learn xgboost

我正在尝试使用XGBoost并被一个我无法弄清楚的错误阻止。我在活动环境中安装了sklearn,可以通过在同一笔记本中训练sklearn RandomForestClassifier 来验证它。当我尝试训练XGBoost模型时,我收到错误XGBoostError: sklearn needs to be installed in order to use this module

这有效:

clf = RandomForestClassifier(n_estimators=200, random_state=0, n_jobs=-1)

抛出异常:

clf = xgb.XGBClassifier(max_depth=3, n_estimators=300, learning_rate=0.05).fit(train_X, train_y)

更新:创建一个PyCharm模块,其中完全相同的代码并导入并执行,没有异常。所以这似乎是一个Jupyter笔记本问题。 PyCharm指向与笔记本相同的Anaconda环境。

更新2:创建了一个 new 笔记本,并复制了抛出异常的代码。代码在新笔记本中运行正常。叹。案件结案。

3 个答案:

答案 0 :(得分:2)

遇到同样的问题,我在安装sklearn 后安装了xgboost ,而我的jupyter笔记本正在运行。通过重新启动我的Jupyter笔记本服务器,xgboost能够找到sklearn安装。

在我已安装sklearn 安装xgboost 然后启动我的jupyter笔记本而没有问题的另一个新环境中进行了测试。

答案 1 :(得分:0)

我在一个更复杂的项目中遇到了同样的错误,在发布新版本后突然失败了。

幸运的是,我有每个版本的docker映像,并且能够使用pip freeze来查看更改了。

在两个版本中,我都使用xgboost==0.81 在有效的版本中,我有scikit-learn==0.21.3,在新版本中,它是scikit-learn==0.22

令人惊讶的是,这就是导致问题的原因。我尝试卸载并重新安装xgboost,并将scikit-learn还原为原来的版本,但仍然没有运气(即使确保以正确的顺序安装一个又一个)。

导致该问题的原因是将numpy1.17.4更新为1.18.0。 还原它为我解决了(不确定原因)

这是Ubuntu上的python 3.6

答案 2 :(得分:0)

我遇到了同样的问题。所有已经给出的答案都不起作用。我也尝试降级 numpy 版本,因为据说它在其他一些论坛上有效

我最终重新安装了 Anaconda,然后再次安装了 pip 安装了 xgboost。这奏效了。