anaconda中安装xgboost遇到的问题

2018-03-01  本文已影响0人  莫放休

这是第一次写简书,还不怎么会使用。xgboost做为一个经常在kaggle竞赛中出现的算法,足以说明它的强大与高效。本次记录安装xgboost过程中出现的问题(实实在在的安装了一天)。


百度发现,安装xgboost需要两个东西:git和mingw(此时电脑上已有anaconda,git)。

使用git下载xgboost(命令均在git bash中运行)

新建xgboost文件夹,用以下命令跳转
$ cd /c/Users/xgboostCode/
用以下命令下载xgboost

$ git clone --recursive https://github.com/dmlc/xgboost  
$ cd xgboost  
$ git submodule init  
$ git submodule update 

在下载时遇到的错误如下:

下载MinGW-W64(最痛苦之事莫过于此)

The first time,很成功,看着进度条一点点推进,一种自豪感油然而生(不知道哪来的)。眼看着已经完成一大半,突然手贱的点了取消(鬼知道我在想什么,一定是鬼附身了),然后就一直定在这了。
The second time...
The third time...
......
也不知道试了多少遍,这期间试了管理员运行,更改安装目录,更改build revision的值,更改version版本号。
当然版本有那么10多个,没有一一试完,就在我下载了TDM,当算换种方式时试了MinGW最后一次,仍然是改版本号,用的应该是6.4.0,居然成功了!
然后添加环境变量
C:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin
说一下,Architecture必须用x86_64

编译xgboost

关闭git bash再打开,输入$ which mingw32-make
如果得到/c/Program Files/mingw-w64/x86_64-5.3.0-posix-seh-rt_v4-rev0/mingw64/bin/mingw32-make,说明配置成功。
输入以下命令
$ alias make='mingw32-make'
$ cd /c/Users/xgboostCode/xgboost定位到xgboost的位置
逐行编译

$ cd dmlc-core  
$ make -j4  
$ cd ../rabit  
$ make lib/librabit_empty.a -j4  
$ cd ..  
$ cp make/mingw64.mk config.mk  
$ make -j4

执行完成就安装xgboost的Python模块(此时使用cmd)
定位cd xgboostCode\xgboost\python-package
安装python setup.py install
使用Python添加os环境变量

import os  
mingw_path = 'C:\\Program Files\\mingw-w64\\x86_64-5.3.0-posix-seh-rt_v4-rev0\\mingw64\\bin'  
os.environ['PATH'] = mingw_path + ';' + os.environ['PATH']  

最后测试

import numpy as np  
import xgboost as xgb  
data = np.random.rand(5,10) # 5 entities, each contains 10 features  
label = np.random.randint(2, size=5) # binary target  
dtrain = xgb.DMatrix( data, label=label)  
  
dtest = dtrain  
  
param = {'bst:max_depth':2, 'bst:eta':1, 'silent':1, 'objective':'binary:logistic' }  
param['nthread'] = 4  
param['eval_metric'] = 'auc'  
  
evallist  = [(dtest,'eval'), (dtrain,'train')]  
  
num_round = 10  
bst = xgb.train( param, dtrain, num_round, evallist )  
  
bst.dump_model('dump.raw.txt')  

正常运行则说明成功了!

上一篇下一篇

猜你喜欢

热点阅读