聽說xgboost效果很不錯,於是准備學習下,但是發現大多數資料都是在講如何在windows或linux下安裝xgboost,而且照着官方文檔也沒有正確的安裝好多線程的xgboost。最后還是從there找到了方法。
1. Mac OSX系統一般自帶python,打開終端輸入python即可寫python代碼,所以python環境已經具備了。
2.安裝 Homebrew , 類似於ubuntu中的apt-get和centos中的yum,是OSX里面的一個非常有用軟件安裝工具。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
直接將上述代碼粘貼至終端即可安裝。(安裝這個軟件的目的在於更新gcc版本,因為官方文檔中說只有最新的gcc版本才能使xgboost支持多線程)
3.安裝最新版本的gcc (gcc-6)
brew install gcc --without-multilib
這步比較耗時,用了將近1小時。
4.從git上下載源碼
cd進入你想要安裝的目錄,然后輸入下面的代碼。(我是直接在打開終端的目錄)
git clone --recursive https://github.com/dmlc/xgboost
5.最關鍵的一步,編譯xgboost的源碼。(為啥不直接發布一個編譯好的,因為每台電腦相差太多)
這一步也是官方文檔中沒有說清楚的一步,官方文檔在第4步之后直接就開始編譯源碼了,但是其實這時gcc只是下載好了,系統並沒有使用剛剛下載下來最新的gcc。這時
cd /usr/bin rm cc gcc c++ g++ ln -s /usr/local/bin/gcc-6 cc ln -s /usr/local/bin/gcc-6 gcc ln -s /usr/local/bin/c++-6 c++ ln -s /usr/local/bin/g++-6 g++
上述代碼大意是,使用最新的gcc-6代替之前的gcc
接着就是正常的編譯
cd 之前安裝xgboost的目錄/xgboost cp make/config.mk make -j4
如果沒有一直警告gcc不支持多線程,則表示這一步順利完成.
6. 不出意外,上一步編譯的過程會報錯,錯誤是:std::abs(XXX) 不對。
因為編譯器變了導致了這個錯誤。
於是只要將std::abs(XXX) 改成
XXX>=0?XXX:-XXX
也就是用一個問號表達解決這個問題。 好在錯誤只有兩個,都是一樣的。所以改下這兩處代碼就行了。
然后編譯,成功!
7.驗證是否成功安裝。
在python中輸入
import xgboost as xgb
並按下回車,如果未報錯,則說明已經可以在python程序中正確的導入xgboost包了!如下圖: