DGA系列之XGBoost(三)

继上一篇XGBoost的公式推导之后,这一篇说一下XGBoost的代码上的实战

代码实战

首先,我们拿到一个糖尿病人的各项指标数据,我们希望用XGBoost来根据这些数据来区分那些是病人那些不是
在这里插入图片描述
最后一行是否是病人的标签,前面7列是各项指标
在这里插入图片描述
先将数据划分,然后将他们分为训练集和测试集
在这里插入图片描述
训练与测试,并输出准确率
在这里插入图片描述
输出结果如下,准确率为77.95%
在这里插入图片描述
基于这个基础上,我们尝试着不断给他加入(树)分类器,直到某个值饱和,再输出最优的效果,监控其训练过程

与上面大部分代码一致,只是再训练fit函数的时候增加了一些参数
在这里插入图片描述
eval_metric是衡量标准的一个值
early_stopping_rounds每增加一个模型,当logloss还没下降,就训练多10次,如果还没下降就表示该值已经达到饱和状态并且输出最优结果
在这里插入图片描述
的确,在32之后就已经达到了饱和

代码在GitHub:myXgboost1

可以显示各参数的重要程度
在这里插入图片描述

代码在GitHub:myXgboost2

接下来,我们尝试对XGBoost的参数进行调优
xgboost参数如下:

'booster':'gbtree',
'objective': 'multi:softmax', 多分类的问题
'num_class':10, 类别数,与 multisoftmax 并用
'gamma':损失下降多少才进行分裂
'max_depth':12, 构建树的深度,越大越容易过拟合
'lambda':2, 控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。
'subsample':0.7, 随机采样训练样本
'colsample_bytree':0.7, 生成树时进行的列采样
'min_child_weight':3, 孩子节点中最小的样本权重和。如果一个叶子节点的样本权重和小于min_child_weight则拆分过程结束
'silent':0 ,设置成1则没有运行信息输出,最好是设置为0.
'eta': 0.007, 如同学习率
'seed':1000,
'nthread':7, cpu 线程数
‘learning_rate ’,0.1 学习率

我们通过遍历学习率,来看下什么样的学习率才是最优的

在这里插入图片描述
输出结果如下,最优的学习率为0.1
在这里插入图片描述
代码在GitHub:myXgboost3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值