64位Windows下安装xgboost详细参考指南(支持Python2.x和3.x)

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架构,按照下图选择其他参数
64位Windows下安装xgboost详细参考指南(支持Python2.x和3.x)_第1张图片
2.安装该文件,需要注意的是,中间有一步需要手动选择。需要手动选择openmp,这个默认是不安装的,但是此处需要,点上。OpenMP(Open Multi-Processing)是一套支持跨平台共享内存方式的多线程并发的编程API,使用C,C++和Fortran语言,可以在大多数的处理器体系和操作系统中运行,包括Solaris, AIX, HP-UX, GNU/Linux, Mac OS X, 和Microsoft Windows。包括一套编译器指令、库和一些能够影响运行行为的环境变量。

64位Windows下安装xgboost详细参考指南(支持Python2.x和3.x)_第2张图片
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

cd  rabit
make lib/librabit_empty.a -j4

cd  ../dmlc-core
make -j4

cd ..
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包】
import xgboost as xgb
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

你可能感兴趣的:(机器学习,Python)