20170601更新
1. 原博客在Python2.7环境下安装成功,xgboost版本为0.4,本次安装升级为0.6。
2. 在Python3.5/3.6环境中有一些问题,包括第一个python setup.py install报错,下面有更新说明。
3. 在Python3.5/3.6环境中,import xgboost as xgb会出现OSError: [WinError 1114] 动态链接库(DLL)初始化例程失败。这个比较棘手,换个思路
从 http://www.lfd.uci.edu/~gohlke/pythonlibs/下载 xgboost whl 文件
注意要和本机版本匹配, 比如. "xgboost-0.6-cp35-cp35m-win_amd64.whl"说明安装的是python 3.5,机器是64位的。
下载地址是:
- xgboost‑0.6‑cp35‑cp35m‑win32.whl
- xgboost‑0.6‑cp35‑cp35m‑win_amd64.whl
- xgboost‑0.6‑cp36‑cp36m‑win32.whl
- xgboost‑0.6‑cp36‑cp36m‑win_amd64.whl
然后使用pip安装,具体安装步骤,参考下面的具体更新。
Windows下安装xgboost有时候很简单,有时候却很麻烦,一不小心,经常会报一些编译错误。这里是我的一点小经验,测试过两次,都能够正常运行,分享给大家,希望能够有帮助。如果是急用的,一刻也不想等的,直接到这篇文章的结尾,到【参考】5找人家在X64位下编译好的。
常见错误:
Makefile:97: recipe for target 'build/logging.o' failed
mingw32-make: [build/logging.o] Error 1
mingw32-make: Waiting for unfinished jobs....Makefile:97: recipe for target 'build/common/common.o' failed
mingw32-make: [build/common/common.o] Error 1
cc1plus.exe: sorry, unimplemented: 64-bit mode not compiled inMakefile:97: recipe for target 'build/learner.o' failed
mingw32-make: [build/learner.o] Error 1Makefile:97: recipe for target 'build/c_api/c_api_error.o' failed
mingw32-make: [build/c_api/c_api_error.o] Error 1
【第一步:准备环境】
因为中间涉及到一些编译工作,我们先准备一个编译环境。此处需要下载一个软件,从下面两个链接都可以下载:
https://sourceforge.net/projects/mingw-w64/?source=typ_redirect
http://pan.baidu.com/s/1bpwUjgV
该文件的描述是:
The mingw-w64 project is a complete runtime environment for gcc to support binaries native to Windows 64-bit and 32-bit operating systems. 可以看出是一个gcc的运行环境。
【安装前必读】
1.选择x86-64架构,按照下图选择其他参数
2.安装该文件,需要注意的是,中间有一步需要手动选择。需要手动选择openmp,这个默认是不安装的,但是此处需要,点上。OpenMP(Open Multi-Processing)是一套支持跨平台共享内存方式的多线程并发的编程API,使用C,C++和Fortran语言,可以在大多数的处理器体系和操作系统中运行,包括Solaris, AIX, HP-UX, GNU/Linux, Mac OS X, 和Microsoft Windows。包括一套编译器指令、库和一些能够影响运行行为的环境变量。
3. 进入安装目录C:\TDM-GCC-64\bin(默认目录,如果自己修改了,自动去找这个目录就好)下,将mingw2-make改成make,以便后面用着方便,还有如果Path环境变量没有自动添加,把C:\TDM-GCC-64\bin这个安装目录加入环境变量(再次提醒自定义的改一下目录)
4. 如果没有Git的,此处也先下载安装,Git Shell的安装极为简单,可以自行百度或者Google。
5. 安装Python,推荐安装Anaconda。
【第二步,下载xgboost并编译】
首先,打开Git Shell,依次执行如下命令:
git clone --recursive https://github.com/dmlc/xgboost
cd xgboost
git checkout 9a48a40//新版本这一步可以省略
git submodule init
git submodule update
cp make/mingw64.mk config.mk
cp make/mingw64.mk dmlc-core/config.mk
make lib/librabit_empty.a -j4
cd
../dmlc-core
make -j4
make -j4
【第三步,安装到Python包中】
cd python-package
python setup.py install
更新:
如果是Python3.x这个地方会报错
error: Error: setup script specifies an absolute path:
C:\Users\yuhul\xgboost\python-package\xgboost\..\..\lib\libxgboost.dll
setup() arguments must *always* be /-separated paths relative to the
setup.py directory, *never* absolute paths.
需要把该目录下setup.py第38行include_package_data=True改为include_package_data=False
【第四步,导入xgboost包】
help(xgb)
更新:
import xgboost as xgb时报错:OSError: [WinError 1114] 动态链接库(DLL)初始化例程失败。
这个地方Python3.x会报错,需要重新下载新的xgboost,替换Anaconda里面的老的xgboost。
在我的电脑中,D:\Anaconda3\Lib\site-packages目录下有xgboost-0.4-py3.5.egg这个目录,安装新的xgboost会删除掉它。
安装方法是进入下载的xgboost-0.6-cp35-cp35m-win_amd64.whl所在的目录,执行如下命令
pip install xgboost-0.6-cp35-cp35m-win_amd64.whl
说明,建议pip的版本在8.1以上,建议更新到最新版本9.0.2
【第五步,使用程序测试】
cd ..//或者直接进入xgboost目录
cd demo
cd guide-python
python basic_walkthrough.py
【参考】
1. https://zh.wikipedia.org/wiki/OpenMP
2. https://github.com/dmlc/xgboost/issues/1267
3. https://github.com/dmlc/xgboost/issues/1049
4. http://blog.csdn.net/eddy_zheng/article/details/50184563
5. http://blog.csdn.net/eddy_zheng/article/details/50496194
6. https://stackoverflow.com/questions/33749735/how-to-install-xgboost-package-in-python-windows-platform/35119904#35119904