kaiyun官方網(wǎng)app下載app XGBoost:在Python中使用XGBoost
在 Python 中使用 XGBoost
下面對XGBoost的Python模塊進行介紹,如下:
提供了 UCI Mushroom 數(shù)據(jù)集的 Python 示例。
安裝
首先安裝C++版本的XGBoost,然后進入源文件根目錄的wrappers文件夾kaiyun體育,執(zhí)行以下腳本安裝Python模塊
python setup.py install
安裝完成后,導入XGBoost Python模塊如下
import xgboost as xgb
數(shù)據(jù)接口
XGBoost可以加載libsvm格式的文本數(shù)據(jù),加載的數(shù)據(jù)格式可以是Numpy二維數(shù)組和XGBoost二進制緩存文件,加載后的數(shù)據(jù)存放在對象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ǔ)學習器)參數(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')]
訓練模型
有了參數(shù)列表和數(shù)據(jù),你就可以訓練模型了
* 火車
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
提前終止計劃
如果有評估數(shù)據(jù),程序可以提前終止,從而找到最佳迭代次數(shù)。如果要提前終止程序kaiyun體育登錄網(wǎng)頁入口,參數(shù) evals 中必須至少有一個評估數(shù)據(jù)。如果有多個,則使用最后一個。
訓練(...,evals=evals開yun官網(wǎng)入口登錄APP下載,early_stopping_rounds=10)
模型將一直訓練,直到驗證分數(shù)停止提高。驗證錯誤需要至少每 early_stopping_rounds 減少一次才能繼續(xù)訓練。
如果發(fā)生提前停止,模型將有兩個附加字段:bst.best_score 和 bst.best_iteration。請注意,train() 將返回上次迭代的模型,而不是最佳模型。
這與兩個指標一起使用以最小化(RMSE,對數(shù)損失等)和最大化(MAP,NDCG,AUC)。
預言
在訓練/加載模型并準備數(shù)據(jù)后,您就可以開始進行預測。
data = np.random.rand(7,10) # 7 entities, each contains 10 features
dtest = xgb.DMatrix( data, missing = -999.0 )
ypred = bst.predict( xgmat )
如果在訓練期間啟用了早期停止,則可以用最佳迭代進行預測。
ypred = bst.predict(xgmat,ntree_limit=bst.best_iteration)
我要評論