环境
Centos 7.5
python 3.12.3
pip 24.0
1、安装xgboost
执行如下命令:
# Pip 21.3 以上
pip install xgboost
2、样本处理
支持多种样本文件格式,对于csv文件:
dtrain = xgb.DMatrix('train.csv?format=csv&label_column=3')
dtest = xgb.DMatrix('test.csv?format=csv&label_column=3')
其中,train.csv是用于训练的样本,test.csv是用于验证的样本
3、训练和验证
完整的训练和验证脚本:
import xgboost as xgb
# label_column 为标签在全部样本中的位置索引
dtrain = xgb.DMatrix('train.csv?format=csv&label_column=3')
dtest = xgb.DMatrix('test.csv?format=csv&label_column=3')
# 配置训练参数
param = {
'max_depth': 12,
'eta': 0.025,
'gamma': 0.05,
'alpha': 0.1,
'lambda': 0.1,
'eval_metric': ['auc','error'],
'nthread': 4,
'objective': 'binary:logistic'
}
evallist = [(dtrain, 'train'), (dtest, 'eval')]
# 树的数量
num_round = 10
bst = xgb.train(param, dtrain, num_round, evallist)
# 存储模型
bst.save_model('xgboost.model')
执行该脚本将训练的模型存储在当前目录,并打印验证结果,如下图所示:
4、预测
完整的预测脚本:
import xgboost as xgb
# 加载预测样本
dpred = xgb.DMatrix('pred.csv?format=csv')
# 加载模型
bst = xgb.Booster({'nthread': 4})
bst.load_model('xgboost.model')
# 预测
ypred = bst.predict(dpred)
print(ypred)
5、调参
支持的参数可参见官方文档:https://xgboost.readthedocs.io/en/release_2.0.0/parameter.html
常见的参数有:
- max_depth:树的最大深度,取值为正整数,默认6
- eta:学习率,取值为[0,1]之间的小数,默认0.3
- gamma:树分裂时的增益阈值,小于该值不继续分裂,取值为非负实数,默认0
- alpha:L1正则参数,取值为非负实数,默认0
- lambda:L2正则参数,取值为非负实数,默认1
- eval_metric:模型验证的指标,error为错误率,auc为auc值,
- objective:学习目标,支持多种取值,若取值为binary:logistic,则预测结果为二分类的概率值
参考
https://xgboost.readthedocs.io/en/release_2.0.0/python/python_intro.html
https://xgboost.readthedocs.io/en/release_2.0.0/parameter.html