AttributeError:模块“xgboost”没有属性“XGBRegressor”

Posted

技术标签:

【中文标题】AttributeError:模块“xgboost”没有属性“XGBRegressor”【英文标题】:AttributeError: module ‘xgboost’ has no attribute ‘XGBRegressor’ 【发布时间】:2017-02-21 15:19:42 【问题描述】:

我正在尝试使用 spyder 和 python 运行 xgboost,但我不断收到此错误:

代码如下:

import xgboost as xgb 

xgb.XGBRegressor(max_depth=3, learning_rate=0.1, n_estimators=100, silent=True, 
                 objective='reg:linear', gamma=0, min_child_weight=1, 
                 max_delta_step=0, subsample=1, colsample_bytree=1, 
                 seed=0, missing=None)

错误是

Traceback (most recent call last):

  File "<ipython-input-33-d257a9a2a5d8>", line 1, in <module>
    xgb.XGBRegressor(max_depth=3, learning_rate=0.1, n_estimators=100, silent=True,

AttributeError: module 'xgboost' has no attribute 'XGBRegressor'

我有 Python 3.5.2 :: Anaconda 4.2.0 (x86_64)

我该如何解决这个问题?

【问题讨论】:

如果你把print(dir(xgb))放在你的import语句之后,你会得到什么? print(dir(xgb)) ['doc', 'loader', 'name', ' '、'路径'、'规范'] 【参考方案1】:

我们可能有同样的问题。

我通过明确告诉 Python 在哪里可以找到 xgboost 库来解决它。

原因是我有多个名为 xgboost.py 的脚本。 Python 可能错误地导入了其中一个,因此找不到“XGBRegressor”的定义。

这是我使用的命令:

export PYTHONPATH=PATH_TO_YOUR_setup.py_file

对我来说,PATH_TO_YOUR_setup.py_file 是 ~/xgboost/python-package

【讨论】:

【参考方案2】:

由于您的 dir 调用基本上缺少所有内容,我怀疑无论您从哪里开始脚本,都有一个 xgboost 子文件夹,其中有一个空的 __init__.py,这是您的 import 首先找到的.

【讨论】:

我检查了保存 .py 文件的文件夹结构,其中没有任何 xgboost 文件夹。有没有办法检查或获取调用 xgboost 的路径。 我在 Mac 上,我在整个磁盘上对 xgboost 进行了文件夹搜索,但看不到名为 xgboost 的文件夹。 python包存放在磁盘的什么位置? 在黑暗中有点过头了。如果你使用 anaconda,它应该将包放在[your anaconda install folder]/lib/python3.5/site-packages【参考方案3】:

我在 windows10 64 位(秋季创建者更新)上使用 Python 3.6.2 和 Anaconda 1.6.8 时遇到了完全相同的问题

为了让它工作,这是我所做的:

1/ 在选定的环境中从 anaconda 中卸载 xgboost。

2/手动删除C:\ProgramData\Anaconda3中的xgboost目录

3/ 从This page下载xgboost

4/ 从 Anaconda 启动命令提示符(当然是从您希望 xgboost 进入的环境)

5/ CD 到您下载 whl 文件的目录并输入:pip install xgboost‑0.6+20171121‑cp36‑cp36m‑win_amd64.whl(或您下载的文件的确切名称)

我做了所有这些步骤,xgboost 工作正常

【讨论】:

它也适用于 Windows 吗?您提供的链接似乎只有.whl for windows。 我只在 w10 上使用过,它工作正常,但我不知道是否适用于其他操作系统【参考方案4】:

就我而言,我很容易解决这个问题

from xgboost import XGBRegressor

【讨论】:

【参考方案5】:

我必须确保遵循 xgboost 网站上的所有下载说明。安装和编译后,我忘了运行这些。 https://xgboost.readthedocs.io/en/latest/build.html#python-package-installation

【讨论】:

【参考方案6】:

可能有很多文件同名xgboost。这就是为什么python会尝试加载其中一个而不是原始包文件。

提示 检查您的工作目录,看看是否有任何名称为xgboost.py 的py 文件。 如果是这样,请将名称更改为其他名称。

【讨论】:

以上是关于AttributeError:模块“xgboost”没有属性“XGBRegressor”的主要内容,如果未能解决你的问题,请参考以下文章

python模块安装(xgboost)

ImportError:没有名为 xgboost 的模块

AttributeError:模块 'dbus' 没有属性 'lowlevel'

AttributeError:模块'keras'没有属性'initializers'

AttributeError:模块'asyncio'没有属性'run'

AttributeError:模块'mysql'没有属性'connector'