xgboost系列:windows和linux下xgboost安装指南

来源:互联网 发布:我国的顶级域名 编辑:程序博客网 时间:2024/06/06 00:30

前言:

帮某人装了一下 xgboost,顺带记录了一下windows下xgboost的安装,考虑到windows下使用pip命令安装下载包速度慢,所以这里是直接下载安装的。linux下不管是编译还是直接安装都很简单,但是windows下的编译就比较麻烦。。。

值得一提的是,很多人都是下载源码来进行编译然后安装,这样的安装不能说不好,但是麻烦,像我们这种偷懒的人,用别人编译好的dll库就好了,没必要自己编译了。不然又要下载mingw来进行编译,此外还需要处理一些依赖问题,本文直接使用别人编译好的dll进行安装,此外也介绍了一些其他安装方法。



一、windows下的使用别人编译好的库文件进行安装(简单)

(0)前提是,你得下载好anaconda,并且安装之,我的下载地址如下(python3 windows 64位)

https://repo.continuum.io/archive/Anaconda3-4.4.0-Windows-x86_64.exe


(1)下载xgboost源码(这里直接用官方最新的源码,这里我们不需要用git clone --recursive,因为用的是编译好的dll,因此不需要下载那么完整,只需要python-package完整即可),你可以通过下面的连接下载源码即可。

https://github.com/dmlc/xgboost/archive/master.zip


(3)解压下载好的源码

解压之后,进入文件夹,找到master\python-package\xgboost目录


(4)下载windows下的编译好的xgboost库文件

这里我选择的是2017年6月10号编译的dll,也就是当前源码对应的那一天的dll

http://ssl.picnet.com.au/xgboost/20170610/x64/libxgboost.dll

大家请在页面:http://www.picnet.com.au/blogs/guido/post/2016/09/22/xgboost-windows-x64-binaries-for-download/

选择最新编译的dll,因为最新的dll与xgboost的源码更为适配。


下载好之后将这个库文件放入到master\python-package\xgboost目录

注意:如果你有NVIDIA的GPU,可以下载http://ssl.picnet.com.au/xgboost/20170610/x64_gpu/libxgboost.dll,这个是GPU版本的动态链接库


(5)安装xgboost即可

进入master\python-package目录,执行以下命令行

python setup.py install


即可完成安装

然后你进入python之后import xgboost即可使用。


问题1:我的windows下有其他版本的python,我该怎么办?

这个问题好办,你可以临时设置PATH的环境变量为下面的路径,这样就可以指定使用哪个python了,如果你的python在C:\Program Files\Python 3.5目录的话。

原理:因为如果PATH变量中如果有多个版本python的路径的话,最后一个路径就是实际生效的。

set PATH=%PATH%;C:\Program Files\Python 3.5

问题2:如何卸载之前安装的xgboost

pip uninstall xgboost


二、windows下源码编译并进行安装(复杂)

为了保持完整性,还是介绍一下windows下通过源码进行编译的步骤,不过我不大喜欢在windows下使用mingw进行编译,主要是windows下没有一个较好的包管理工具,并不能处理一些依赖的包,依赖安装起来较为复杂,可能依赖的包也需要进行编译。这就是为什么我不喜欢在windows下编译一些linux下的工具的原因。


(0)下载好anaconda,并且安装之,我的下载地址如下(python3 windows 64位)

https://repo.continuum.io/archive/Anaconda3-4.4.0-Windows-x86_64.exe

(1)下载git,并安装之(这里我下载的是windows 64位版本的),具体大家可以在这个页面选择。https://git-scm.com/download/win
https://github.com/git-for-windows/git/releases/download/v2.13.0.windows.1/Git-2.13.0-64-bit.exe

(2)使用git下载代码(这里需要用git clone --recursive来处理链接
如果你有shadowsocks代理的话,你可以先给git设置代理,这样下载会快一些。
git config --global http.proxy 'socks5://127.0.0.1:1080'
打开终端,输入
git clone --recursive https://github.com/dmlc/xgboost
然后进入xgboost目录执行
git submodule init
git submodule update



(3)下载mingw,请到如下页面下载mingw-get-setup.exe
https://sourceforge.net/projects/mingw/files/Installer/


三、linux下使用pip直接进行安装(简单)

很简单,一个命令解决问题(注意,这里我考虑到国外的网速使用的是国内USTC的源)

sudo -H pip install -i  https://mirrors.ustc.edu.cn/pypi/web/simple xgboost



四、windows下最偷懒的安装方法(支持python3.5和3.6版本,windows 32位和64位系统)(最简单)

(1)首先下载xgboost编译好的whl包

下载路径为:http://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost

请你根据自己python的版本以及你操作系统的版本来下载对应的whl包

如何确定python版本:

进入python之后,就会显示python的版本,比如我的机器是2.7.11的,并且操作系统是64位的(当然,我的python是不被支持的,所以也安装不了:)  )

Python 2.7.11 |Anaconda 2.4.1 (64-bit)| (default, Dec  7 2015, 14:10:42) [MSC v.1500 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.Anaconda is brought to you by Continuum Analytics.Please check out: http://continuum.io/thanks and https://anaconda.org

xgboost‑0.6‑cp35‑cp35m‑win32.whl             这个是python3.5,windows 32位的包

xgboost‑0.6‑cp35‑cp35m‑win_amd64.whl   这个是python3.5,windows 64位的包
xgboost‑0.6‑cp36‑cp36m‑win32.whl             这个是python3.5,windows 32位的包
xgboost‑0.6‑cp36‑cp36m‑win_amd64.whl   这个是python3.6,windows 64位的包

(2)安装xgboost

下载好后进入whl包的目录下执行,可以将下面的文件名替换为你自己下载的文件名,安装即可。

pip install xgboost‑0.6‑cp36‑cp36m‑win_amd64.whl


五、Linux下开启CUDA和OpenMP进行编译安装(简单)


(1)下载代码
git clone --recursive https://github.com/dmlc/xgboost

(2)配置
进入xgboost/make目录,打开config.mk
1) 开启openmp多线程和CUDA

USE_OPENMP = 1
PLUGIN_UPDATER_GPU ?= ON


2) 配置显卡的计算能力,如果你开启了CUDA的话
返回xgboost/目录,打开Makefile找到如下行,将其中的数值设置为 你自己显卡的计算能力,比如我的显卡是gtx titanx maxwell的,因此计算能力是52
具体查看你自己的显卡是什么计算能力,可以参考https://developer.nvidia.com/cuda-gpus#collapse4

COMPUTE ?= 52

(3)编译
make all -j$(nproc)

(4)编译python包
make pippack -j$(nproc)
make pypack -j$(nproc)

(5)安装python包
进入xgboost/xgboost-python
sudo python setup.py install


后续:

谢谢乐乐指出下载代码需要git clone --recursive,这里由于我之前是在linux下是通过确实是通过git clone  --recursive下载代码,并复制到windows的,所以没有注意这一点。

下面解释一下git的recursive,它是指处理git上的链接,并从链接上也下载代码,如果不加就会少下载一部分链接的代码。



enjoy it, by xizero00 updated 2017/6/12

http://blog.csdn.net/xizero00