kaiyun官方網(wǎng)app下載app XGBoost:在Python中使用XGBoost
在 Python 中使用 XGBoost
下面對(duì)XGBoost的Python模塊進(jìn)行介紹,如下:
提供了 UCI Mushroom 數(shù)據(jù)集的 Python 示例。
安裝
首先安裝C++版本的XGBoost,然后進(jìn)入源文件根目錄的wrappers文件夾kaiyun體育,執(zhí)行以下腳本安裝Python模塊
python setup.py install
安裝完成后,導(dǎo)入XGBoost Python模塊如下
import xgboost as xgb
數(shù)據(jù)接口
XGBoost可以加載libsvm格式的文本數(shù)據(jù),加載的數(shù)據(jù)格式可以是Numpy二維數(shù)組和XGBoost二進(jìn)制緩存文件,加載后的數(shù)據(jù)存放在對(duì)象DMatrix中。
dtrain = xgb.DMatrix('train.svm.txt')
dtest = xgb.DMatrix('test.svm.buffer')
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)
csr = scipy.sparse.csr_matrix( (dat, (row,col)) )
dtrain = xgb.DMatrix( csr )
dtrain = xgb.DMatrix('train.svm.txt')
dtrain.save_binary("train.buffer")
dtrain = xgb.DMatrix( data, label=label, missing = -999.0)
w = np.random.rand(5,1)
dtrain = xgb.DMatrix( data, label=label, missing = -999.0, weight=w)
參數(shù)設(shè)置
XGBoost采用鍵值格式保存參數(shù)。例如
* Booster(基礎(chǔ)學(xué)習(xí)器)參數(shù)
param = {'bst:max_depth':2, 'bst:eta':1, 'silent':1, 'objective':'binary:logistic' }
param['nthread'] = 4
plst = param.items()
plst += [('eval_metric', 'auc')] # Multiple evals can be handled in this way
plst += [('eval_metric', 'ams@0')]
evallist = [(dtest,'eval'), (dtrain,'train')]
訓(xùn)練模型
有了參數(shù)列表和數(shù)據(jù),你就可以訓(xùn)練模型了
* 火車
num_round = 10
bst = xgb.train( plst, dtrain, num_round, evallist )
bst.save_model('0001.model')
# dump model
bst.dump_model('dump.raw.txt')
# dump model with feature map
bst.dump_model('dump.raw.txt','featmap.txt')
bst = xgb.Booster({'nthread':4}) #init model
bst.load_model("model.bin") # load data
提前終止計(jì)劃
如果有評(píng)估數(shù)據(jù),程序可以提前終止,從而找到最佳迭代次數(shù)。如果要提前終止程序kaiyun體育登錄網(wǎng)頁入口,參數(shù) evals 中必須至少有一個(gè)評(píng)估數(shù)據(jù)。如果有多個(gè),則使用最后一個(gè)。
訓(xùn)練(...,evals=evals開yun官網(wǎng)入口登錄APP下載,early_stopping_rounds=10)
模型將一直訓(xùn)練,直到驗(yàn)證分?jǐn)?shù)停止提高。驗(yàn)證錯(cuò)誤需要至少每 early_stopping_rounds 減少一次才能繼續(xù)訓(xùn)練。
如果發(fā)生提前停止,模型將有兩個(gè)附加字段:bst.best_score 和 bst.best_iteration。請(qǐng)注意,train() 將返回上次迭代的模型,而不是最佳模型。
這與兩個(gè)指標(biāo)一起使用以最小化(RMSE,對(duì)數(shù)損失等)和最大化(MAP,NDCG,AUC)。
預(yù)言
在訓(xùn)練/加載模型并準(zhǔn)備數(shù)據(jù)后,您就可以開始進(jìn)行預(yù)測(cè)。
data = np.random.rand(7,10) # 7 entities, each contains 10 features
dtest = xgb.DMatrix( data, missing = -999.0 )
ypred = bst.predict( xgmat )
如果在訓(xùn)練期間啟用了早期停止,則可以用最佳迭代進(jìn)行預(yù)測(cè)。
ypred = bst.predict(xgmat,ntree_limit=bst.best_iteration)
我要評(píng)論