XGBoost:在Python中使用XGBoost

原文:http://blog.csdn.net/zc02051126/article/details/46771793python

在Python中使用XGBoost

下面将介绍XGBoost的Python模块,内容以下: 
编译及导入Python模块 
数据接口 
参数设置 
训练模型l 
提早终止程序 
预测git

walk through python example for UCI Mushroom dataset is provided.github

安装

首先安装XGBoost的C++版本,而后进入源文件的根目录下的 wrappers文件夹执行以下脚本安装Python模块算法

python setup.py install
  • 1

安装完成后按照以下方式导入XGBoost的Python模块shell

import xgboost as xgb
  • 1

=数组

数据接口

XGBoost能够加载libsvm格式的文本数据,加载的数据格式能够为Numpy的二维数组和XGBoost的二进制的缓存文件。加载的数据存储在对象DMatrix中。缓存

  • 加载libsvm格式的数据和二进制的缓存文件时能够使用以下方式
dtrain = xgb.DMatrix('train.svm.txt') dtest = xgb.DMatrix('test.svm.buffer')
  • 1
  • 2
  • 加载numpy的数组到DMatrix对象时,能够用以下方式
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)
  • 1
  • 2
  • 3
  • scipy.sparse格式的数据转化为 DMatrix格式时,能够使用以下方式
csr = scipy.sparse.csr_matrix( (dat, (row,col)) )
dtrain = xgb.DMatrix( csr )
  • 1
  • 2
  • 将 DMatrix 格式的数据保存成XGBoost的二进制格式,在下次加载时能够提升加载速度,使用方式以下
dtrain = xgb.DMatrix('train.svm.txt') dtrain.save_binary("train.buffer")
  • 1
  • 2
  • 能够用以下方式处理 DMatrix中的缺失值:
dtrain = xgb.DMatrix( data, label=label, missing = -999.0)
  • 1
  • 当须要给样本设置权重时,能够用以下方式
w = np.random.rand(5,1) dtrain = xgb.DMatrix( data, label=label, missing = -999.0, weight=w)
  • 1
  • 2

参数设置

XGBoost使用key-value格式保存参数. Eg 
* Booster(基本学习器)参数app

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')]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 还能够定义验证数据集,验证算法的性能
evallist  = [(dtest,'eval'), (dtrain,'train')]
  • 1

=dom

训练模型

有了参数列表和数据就能够训练模型了 
* 训练ide

num_round = 10 bst = xgb.train( plst, dtrain, num_round, evallist )
  • 1
  • 2
  • 保存模型 
    在训练完成以后能够将模型保存下来,也能够查看模型内部的结构
bst.save_model('0001.model')
  • 1
  • Dump Model and Feature Map 
    You can dump the model to txt and review the meaning of model
# dump model bst.dump_model('dump.raw.txt') # dump model with feature map bst.dump_model('dump.raw.txt','featmap.txt')
  • 1
  • 2
  • 3
  • 4
  • 加载模型 
    经过以下方式能够加载模型
bst = xgb.Booster({'nthread':4}) #init model bst.load_model("model.bin") # load data
  • 1
  • 2

=

提早终止程序

若是有评价数据,能够提早终止程序,这样能够找到最优的迭代次数。若是要提早终止程序必须至少有一个评价数据在参数evals中。 If there’s more than one, it will use the last.

train(..., evals=evals, early_stopping_rounds=10)

The model will train until the validation score stops improving. Validation error needs to decrease at least every early_stopping_rounds to continue training.

If early stopping occurs, the model will have two additional fields: bst.best_score and bst.best_iteration. Note that train() will return a model from the last iteration, not the best one.

This works with both metrics to minimize (RMSE, log loss, etc.) and to maximize (MAP, NDCG, AUC).

=

Prediction

After you training/loading a model and preparing the data, you can start to do prediction.

data = np.random.rand(7,10) # 7 entities, each contains 10 features dtest = xgb.DMatrix( data, missing = -999.0 ) ypred = bst.predict( xgmat )
  • 1
  • 2
  • 3

If early stopping is enabled during training, you can predict with the best iteration.

ypred = bst.predict(xgmat,ntree_limit=bst.best_iteration)
相关文章
相关标签/搜索