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]]
■参考