前言——記得在阿里實習的時候,大家都是用mllib下的GBDT來train model的。但由於mllib不是開源的,所以在公司外是不能夠使用。後來參加kaggle比賽的時候,認識到一個GDBT好用的工具,xgboost,所以就認真地學習了一下。
github地址:https://github.com/dmlc/xgboost
具體使用方式,其實裡面都有說明的,下面主要講講在windows下python環境怎樣使用xgboost。
1、按照官方說明來下載並編譯release版64位程式,並執行“python setup.py install”。
2、在python代碼中添加環境路徑“sys.path.append('C:\\.........\\xgboost-master\\wrapper')”(註:該路徑為你下載解壓出來的檔案夾wrapper路徑)
3、這樣就可以嘗試“import xgboost as xgb”了,如果成功就沒問題了。(註:要依賴numpy以及scipy,且安裝位元要跟你Python位元一致,64位版numpy以及scipy要到這裡下載,32位版就可以到官網下載)
下面貼個train的代碼以及predict的代碼:
train:
#!/usr/bin/pythonimport sys,ossys.path.append('C:\\xgboost-master\\wrapper')import numpy as npimport scipy.sparseimport xgboost as xgb### simple example# load file from text file, also binary buffer generated by xgboostdtrain = xgb.DMatrix('C:\\PredictAHE_Trainset_libsvmFormat.txt')dtest = xgb.DMatrix('C:\\PredictAHE_Testset_libsvmFormat.txt')# specify parameters via map, definition are same as c++ versionparam = {'max_depth':6, 'eta':0.3, 'silent':1, 'objective':'binary:logistic' }# specify validations set to watch performancewatchlist = [(dtest,'eval'), (dtrain,'train')]num_round = 20bst = xgb.train(param, dtrain, num_round, watchlist)# this is predictionpreds = bst.predict(dtest)labels = dtest.get_label()print ('error=%f' % ( sum(1 for i in range(len(preds)) if int(preds[i]>0.5)!=labels[i]) /float(len(preds))))bst.save_model('C:\\xgb.model')
predict:
#!/usr/bin/pythonimport sys,ossys.path.append('C:\\xgboost-master\\wrapper')import numpy as npimport scipy.sparseimport xgboost as xgb### simple example# load file from text file, also binary buffer generated by xgboostdtest2 = xgb.DMatrix('C:\\PredictAHE_Temp_libsvmFormat.txt')# load model and data inbst2 = xgb.Booster(model_file='C:\\xgb.model')preds2 = bst2.predict(dtest2)# this is predictionouting = open('C:\\PredictAHE_Temp_Result.txt', 'w')outing.write(str(int(preds2[0]>0.5))) #只輸出了一個outing.close()
P.S.輸入的檔案格式要是 libsvm格式