XGBoost:在Python中使用XGBoost
大家好,又见面了,我是你们的朋友全栈君。
在Python中使用XGBoost
下面将介绍XGBoost的Python模块,内容如下: * 编译及导入Python模块 * 数据接口 * 参数设置 * 训练模型l * 提前终止程序 * 预测
A walk through python example for UCI Mushroom dataset is provided.
安装
首先安装XGBoost的C++版本,然后进入源文件的根目录下的 wrappers
文件夹执行如下脚本安装Python模块
python setup.py install
安装完成后按照如下方式导入XGBoost的Python模块
import xgboost as xgb
=
数据接口
XGBoost可以加载libsvm格式的文本数据,加载的数据格式可以为Numpy的二维数组和XGBoost的二进制的缓存文件。加载的数据存储在对象DMatrix
中。
- 加载libsvm格式的数据和二进制的缓存文件时可以使用如下方式
dtrain = xgb.DMatrix('train.svm.txt')
dtest = xgb.DMatrix('test.svm.buffer')
- 加载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)
- 将
scipy.sparse
格式的数据转化为DMatrix
格式时,可以使用如下方式
csr = scipy.sparse.csr_matrix( (dat, (row,col)) )
dtrain = xgb.DMatrix( csr )
- 将
DMatrix
格式的数据保存成XGBoost的二进制格式,在下次加载时可以提高加载速度,使用方式如下
dtrain = xgb.DMatrix('train.svm.txt')
dtrain.save_binary("train.buffer")
- 可以用如下方式处理
DMatrix
中的缺失值:
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)
参数设置
XGBoost使用key-value格式保存参数. Eg * Booster(基本学习器)参数
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')]
=
训练模型
有了参数列表和数据就可以训练模型了 * 训练
num_round = 10
bst = xgb.train( plst, dtrain, num_round, evallist )
- 保存模型 在训练完成之后可以将模型保存下来,也可以查看模型内部的结构
bst.save_model('0001.model')
- 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')
- 加载模型 通过如下方式可以加载模型
bst = xgb.Booster({
'nthread':4}) #init model
bst.load_model("model.bin") # load data
=
提前终止程序
如果有评价数据,可以提前终止程序,这样可以找到最优的迭代次数。如果要提前终止程序必须至少有一个评价数据在参数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 )
If early stopping is enabled during training, you can predict with the best iteration.
ypred = bst.predict(xgmat,ntree_limit=bst.best_iteration)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143956.html原文链接:https://javaforall.cn
相关文章
- 使用 python 执行 shell 命令的几种常用方式
- 用Python画个生日蛋糕为朋友庆生
- 用 Python 破解 WiFi 密码,太刺激了!
- python中矩阵的转置怎么写_Python 矩阵转置的几种方法小结
- Easy Games With Python and Pygame(三)- Pygame Event
- 我用 Python 给老板写了封拒绝不了的辞职信
- Python 从底层结构聊 Beautiful Soup 4(内置豆瓣最新电影排行榜爬取案例)!
- Python生成图文并茂的PDF报告
- Python 基于 selenium 实现不同商城的商品价格差异分析系统
- Python自动给抖音小姐姐视频点赞
- javascript typescript_typescript python
- NCAR抛弃PyNCL后又一面向地球科学的Python项目
- b站动漫_python爬b站视频
- 用Python的好处
- 【InventWithPython 第一部分】校对活动正式启动
- xgboost分类算法_python分类统计
- Python怎么输入小数和整数_python输入非负整数
- python解释器找不到_python解释器路径
- 毕业设计!Python实现学生教师刷脸签到系统
- Python DB-API 规范及 MySQL Connector/Python 实现