我正在尝试使用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 笔记本,并复制了抛出异常的代码。代码在新笔记本中运行正常。叹。案件结案。
答案 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
还原为原来的版本,但仍然没有运气(即使确保以正确的顺序安装一个又一个)。
导致该问题的原因是将numpy
从1.17.4
更新为1.18.0
。
还原它为我解决了(不确定原因)
这是Ubuntu上的python 3.6
答案 2 :(得分:0)
我遇到了同样的问题。所有已经给出的答案都不起作用。我也尝试降级 numpy 版本,因为据说它在其他一些论坛上有效
我最终重新安装了 Anaconda,然后再次安装了 pip 安装了 xgboost。这奏效了。