xgbosst学习

Python机器学习笔记:XgBoost算法 - 战争热诚 - 博客园

https://blog.csdn.net/kwame211/article/details/81098025

Text Input Format of DMatrix — xgboost 1.6.0-dev documentation(官方wendang)

1.数据格式

1.1libsvm格式的文本数据

第一列是数据标签,后面每列 id : value的形式展示特征索引和特征值

(官网给出的数据样例train.txt)

带有 qid  的数据,用qid标记数据属于哪个查询组

dtrain = xgb.DMatrix('train.svm.txt')

对于rank任务还需要输入group(查询组),根据qid 分组进行分组

表示数据集包含的7个实例中前两个实例在一个组中,中间两个为一组,其他的三个实例在另一个组中

dtrain.set_group(group_train)  #group_train,以列表的形式存储

set_group设置 groupId。(groupId 的概念在 rank 中广泛适用,只有同一个 group 中的样本才有排序的意义。对于IR任务来说,不同 query对应不同group。)
注意set_group 方法传入的是每个 group 中元素的个数,[1,3,6]对应第一组有1条样本,第二组3条,第三组6条。即训练集有10条样本的话,按顺序,第1条设置为第1组,2-4条设置为第2组,5-10条设置为第3组。

1.2 将csv 文件加载到DMatrix

dtrain = xgb.DMatrix('train.csv?format=csv&label_column=0')

1.3 将NumPy数组加载到DMatrix

2.参数

params = {

'booster': 'gbtree',  可以是gbtreegblineardartgbtreedart使用基于树的模型,同时gblinear使用线性函数

'objective': 'multi:softmax', # 多分类的问题   "rank:pairwise" 排序问题    "binary:logistic” 二分类问题

'num_class': 10, # 类别数,与 multisoftmax 并用

'gamma': 0.1, # 用于控制是否后剪枝的参数,越大越保守,一般0.1、0.2这样子。

'max_depth': 12, # 构建树的深度,越大越容易过拟合

'lambda': 2, # 控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。

'subsample': 0.7, # 随机采样训练样本

'colsample_bytree': 0.7, # 生成树时进行的列采样

'min_child_weight': 3,

'silent': 1, # 设置成1则没有运行信息输出,最好是设置为0.

'eta': 0.007, # 如同学习率

'seed': 1000,

'nthread': 4, # cpu 线程数

max_leaf_nodes :最大叶子节点数

min_child_weight :叶节点的最小权重值,这个值设置较大时,通常树不会太深,可以控制过拟合,但太大时,容易造成欠拟合的现象

max_delta_step : 在最大增量步长中,我们允许每棵树的权重估计。如果该值设置为0,则表示没有约束。如果将其设置为正值,则可以帮助使更新步骤更加保守。通常不需要此参数,但是当类非常不平衡时,它可能有助于逻辑回归

eval_metric:评估指标 (rmse均方根误差rmsle:均方根对数误差,mae平均绝对误差mape平均绝对百分比误差mphe平均伪Huber错误logloss负对数似然

                                   error:二进制分类错误率,merror:多类分类错误率,mlogloss多类loglossauc,aucpr,ndcg,map,ndcg@n,map@n:'n'可以被指定为整数,ndcg-,map-,ndcg@n-,map@n-,poisson-nloglik:泊松回归的负对数似)

}

3.训练

booster = xgb.train(param, dtrain, num_boost_round=10, evals=(), obj=None, feval=None, maximize=False, early_stopping_rounds=None, evals_result=None, verbose_eval=True, xgb_model=None, callbacks=None) //num_rand训练轮数

1,params

字典类型,用于指定各种参数,例如:{‘booster’:‘gbtree’,‘eta’:0.1}

2,dtrain

用于训练的数据

3,num_boost_round

指定最大迭代次数,默认值为10

4,evals

列表类型,用于指定训练过程中用于评估的数据及数据的名称。例如:[(dtrain,‘train’),(dval,‘val’)]

5,obj

可以指定二阶可导的自定义目标函数。

6,feval

自定义评估函数。

7,maximize

是否对评估函数最大化,默认值为False。

8,early_stopping_rounds

指定迭代多少次没有得到优化则停止训练

9,verbose_eval

可以是bool类型,也可以是整数类型。如果设置为整数,则每间隔verbose_eval次迭代就输出一次信息。

10,xgb_model

加载之前训练好的 xgb 模型,用于增量训练。

 

model.save_model("save.model")

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用

model.dump_model("save.model.text")

dump_model 将模型转储到文本或JSON文件中。与save_model不同,输出格式主要用于可视化或解释,因此更易于阅读,但无法加载回XGBoost。

4.获得特征权重

model.get_score(importance_type='weight')

model.get_score( fmap = ' feature.map ',importance_type='weight')

featrue.map格式:

importance_type :可选的有五种,weight,gain,cover,total_gain,total_cover

5.预测

model.predict(dtest)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值