xgboostをpython3環境にインストールする

kaggleで有名なGradient Boostingモジュールxgboostをpython3環境にインストールする。

python2環境ならpip install xgboostでインストールできる。python3環境は下記の手順でGithubからインストールする必要がある。

 

1. ダウンロード

公式のGithubからclone。

$ git clone https://github.com/dmlc/xgboost.git
$ cd xgboost

 

2. ビルド

マルチプロセス用にビルドするため、OpenMPを先にインストールする。

$ brew install clang-omp

src/utils/omp.h を開き、11行目の#include <omp.h>を以下に置換。

#include <libiomp/omp.h>

Makefileのexport CC, export CXX行を下記に置換。

export CC = clang-omp
export CXX = clang-omp++

マニュアルに従ってビルドする。ただし、マニュアル通りだとライブラリがpythonディレクトリにコピーされないため手動でwrapperを正しい位置に移動する。

$ ./build.sh
$ cd python-package/
$ cp -R ../wrapper ./xgboost/
$ python3 setup.py install

clang-omp++のinclude pathが正しく設定されずビルド時にstring.h not foundなどのincludeエラーがでる場合は、~/.bash_profileに下記を追加する。

export CPLUS_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer//Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/:$CPLUS_INCLUDE_PATH

再読み込み。

$ source ~/.bash_profile

上記CPLUS_INCLUDE_PATHは環境によって若干異なる可能性があるが、$ g++ -v hoge.cppなど適当なコードを標準g++でコンパイルし、その時の詳細情報から取得可能。

 

3. 実行

scikit-learnのラッパークラスが用意されているため、scikit-learnの他識別器同様にfit, predictできる。

from xgboost import XGBClassifier
​
from sklearn import datasets
from sklearn.cross_validation import cross_val_predict
from sklearn.metrics import confusion_matrix
​
iris = datasets.load_iris()
X = iris.data
y = iris.target
​
clf = XGBClassifier()
pred = cross_val_predict(clf, X, y)
cm = confusion_matrix(y, pred)
print(cm)

結果。

[[50 0 0]
[ 0 47 3]
[ 0 2 48]]

 

■参考