转自:http://blog.csdn.net/zc02051126/article/details/46771793
python XGboost文档:http://xgboost.readthedocs.io/en/latest/python/python_api.html
下面将介绍XGBoost的Python模块,内容如下:
* 编译及导入Python模块
* 数据接口
* 参数设置
* 训练模型l
* 提前终止程序
* 预测
A walk through python example for UCI Mushroom dataset is provided.
安装
首先安装XGBoost的C++版本,然后进入源文件的根目录下的 wrappers
文件夹执行如下脚本安装Python模块
- 1
- 1
安装完成后按照如下方式导入XGBoost的Python模块
- 1
- 1
=
数据接口
XGBoost可以加载libsvm格式的文本数据,加载的数据格式可以为Numpy的二维数组和XGBoost的二进制的缓存文件。加载的数据存储在对象DMatrix
中。
- 加载libsvm格式的数据和二进制的缓存文件时可以使用如下方式
- 1
- 2
- 1
- 2
- 加载numpy的数组到
DMatrix
对象时,可以用如下方式
- 1
- 2
- 3
- 1
- 2
- 3
- 将
scipy.sparse
格式的数据转化为DMatrix
格式时,可以使用如下方式
- 1
- 2
- 1
- 2
- 将
DMatrix
格式的数据保存成XGBoost的二进制格式,在下次加载时可以提高加载速度,使用方式如下
- 1
- 2
- 1
- 2
- 可以用如下方式处理
DMatrix
中的缺失值:
- 1
- 1
- 当需要给样本设置权重时,可以用如下方式
- 1
- 2
- 1
- 2
参数设置
XGBoost使用key-value格式保存参数. Eg
* Booster(基本学习器)参数
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
- 还可以定义验证数据集,验证算法的性能
- 1
- 1
=
训练模型
有了参数列表和数据就可以训练模型了
* 训练
- 1
- 2
- 1
- 2
- 保存模型
在训练完成之后可以将模型保存下来,也可以查看模型内部的结构
- 1
- 1
- Dump Model and Feature Map
You can dump the model to txt and review the meaning of model
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
- 加载模型
通过如下方式可以加载模型
- 1
- 2
- 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.
- 1
- 2
- 3
- 1
- 2
- 3
If early stopping is enabled during training, you can predict with the best iteration.