2.2 搭建XGBoost运行环境
XGBoost支持多种操作系统,如Linux、Windows、MacOS等,并支持多种语言版本,如Python、R、Scala、Java等。XGBoost的安装方式分为两种,一种是直接通过pip安装(适用于Ptyhon),另一种是通过源码编译安装。
1.通过pip安装
通过pip安装Python包既简单又方便。如果读者准备在Python环境下使用XGBoost,即可以采用此方法。只需执行如下命令:
pip install xgboost
若Python版本为3.X,则执行命令为pip3 install xgboost。安装完毕后,即可在Python中直接引用XGBoost包,代码如下:
import xgboost as xgb
通过pip安装的是PyPI(Python Package Index)中已预编译好的XGBoost包,目前提供了Linux 64位和Windows 64位两种。
2.通过源码编译安装
虽然通过pip安装XGBoost比较方便,但这种方法只适用于Python环境下,且其安装的XGBoost可能并非最新版本。若用户在其他语言环境或需要安装XGBoost最新版本,则可直接通过编译源码安装。源码编译安装XGBoost主要分为两个步骤:①通过C++代码构建共享库(Linux/OSX中为libxgboost.so,Windows中为xgboost.dll);②安装相应语言包。
(1)构建共享库
构建共享库需要支持C++11的C++编译器(g++4.8版本及以上),若C++编译器不满足条件,则需先安装C++编译器,此处不做详述。用户可以通过修改XGBoost项目中的make/config.mk文件来配置编译选项,然后通过make命令进行编译。
1)Linux环境。在Linux环境下,首先通过Git将XGBoost项目从github上克隆下来。因为XGBoost使用Git submodules来管理依赖,因此在执行克隆时需加上--recursive选项,然后通过make命令对源码直接编译,代码如下:
git clone --recursive https://github.com/dmlc/xgboost cd xgboost make
在使用make命令对源码进行编译时,还可通过参数-j实现并行编译,如make-j4,表示最多同时运行4个编译命令,这样可以更有效地利用CPU资源,提高编译效率。读者可以根据自身机器配置情况相应修改并行任务数,一般建议设置为CPU核心数目的两倍。
2)OSX环境。在OSX环境下克隆项目的方法与在Linux环境下的是一致的,也需要加--recursive选项。OSX默认的C++编译器一般为Clang,若需构建XGBoost多线程版本,则首先要安装gcc-7编译器,若不需要多线程,则可以选择Clang。可以通过homebrew安装gcc-7:
brew install gcc@7
然后克隆项目,并将配置文件config.mk复制到XGBoost根目录下:
git clone --recursive https://github.com/dmlc/xgboost cd xgboost cp make/config.mk ./config.mk
若通过gcc-7对源码进行编译,则需要修改config.mk文件,将编译器配置修改为gcc-7。首先找到如下两行:
export CC = gcc export CXX = g++
将其修改为
export CC = gcc-7 export CXX = g++-7
修改完成之后即可通过make命令对源码进行编译。
3)Windows环境。Windows环境下构建XGBoost共享库的步骤和在Linux、OSX环境下的类似,首先使用-recursive选项将项目克隆下来,这里推荐使用Git for Windows工具,它带有标准的Bash Shell,可以简化安装过程。然后执行如下命令:
git submodule init git submodule update
XGBoost在Windows环境下支持MinGW和Microsoft Visual Studio编译。
①MinGW。
MinGW全称为Minimalist GNU for Windows,是一套Windows环境下GNU编译组件的接口,可以将其看作Windows上的gcc。因为MinGW中make命令的具体名称为mingw32-make,因此通过MinGW进行编译需要先对.bashrc文件进行修改。
首先进入Git for Windows的Git Bash(后续相关指令均在Git Bash下执行),然后在.bashrc文件中加入如下语句:
alias make='mingw32-make'
即设置mingw32-make命令的别名为make。执行如下命令即可完成编译:
cp make/mingw64.mk config.mk; make -j4
②Microsoft Visual Studio。
通过Microsoft Visual Studio构建共享库需要CMake编译器的支持,因此需确保已安装最新版本的CMake。在XGBoost根目录下执行如下命令:
mkdir build cd build cmake .. -G"Visual Studio 12 2013 Win64"
这里指定使用MSVC12 64位生成器对源码进行构建,打开build目录下的.sln文件并使用Visual Studio构建。构建完成后,可以在lib文件夹下看到xgboost.dll库文件。若需使用Python模块,可以将该文件复制到python-package/xgboost文件夹下。
除了上述按默认的配置安装外,用户也可以根据自身需求自定义配置构建共享库。在XGBoost中,配置文件config.mk包含多个编译选项,如是否支持分布式文件系统(如HDFS等),使用哪种编译器等。用户可以先将config.mk文件复制到根目录下,然后根据需要对其进行修改,实现自定义配置构建共享库。
(2)安装Python包
共享库编译完成之后,即可安装相应的语言包,此处以Python包为例。XGBoost使用Distutils来实现Python环境的构建和安装,对于用户来讲安装过程十分简单。XGBoost的Python包在python-package中,用户只需进入该目录然后执行安装命令即可。
cd python-package sudo python setup.py install
安装完毕后即可在Python中直接引用XGBoost包:
import xgboost as xgb
此处需要注意的是,若后续更新代码重新编译共享库后,则Python包也需要重新安装,相应的库文件才会更新。
除Python包外,XGBoost还支持R、Julia等包的安装,此处不再一一介绍,读者若需安装此类语言包可参考XGBoost官方文档。