接口太多,我看有的博主写的跟官网不太一样,有点晕。
目前主要是用两个接口
#Scikit-Learn的API
from xgboost import XGBClassifier
#xgboost自带API
import xgboost as xgb
XGBClassifier
第一个适配SKlearn库,可以配合fit,predict等方法使用。
介绍下具体参数
XGBClassifier在下面的博客里有
sklearn中xgboost模块的XGBClassifier函数
以下是xgb
General Parameters
-
booster:{“gbtree”,“dart”,“gblinear”} 前两个是树结构,最后一个是线性结构,采用默认gbtree就行
-
verbosity,默认为1 ,{0:silent,1:warning,2:info,3:debug},选择为2的话,会在训练的时候输入如图
不清楚干嘛的。。。
-
silent: {0,1} 是否输出;已经暂定使用了
-
num_pbuffer,不用设置;预测缓冲区的大小,通常设置为训练实例的数量。缓冲器用于保存最后一个提升步骤的预测结果。
-
nthread:线程数量
-
num_feature,不用设置
Parameters for Tree Booster
参数名 | 参数取值 | 默认值 | 说明 |
---|---|---|---|
eta;别名: learning_rate | range: [0,1] | default=0.3 | 以防止过拟合。eta会缩小特征权值,使推进过程更加保守 |
gamma 别名:alias: min_split_loss | range: [0,∞] | default=0.3 | 在树的叶节点上进行进一步分区所需的最小损失减少。伽马越大,算法就越保守。 |
max_depth | range: [0,∞] | default=6 | 树的最大深度,越大越容易过拟合 |
min_child_weight | range: [0,∞] | default=1 | 子节点最小的权重。非常容易影响结果,参数数值越大,就越保守,越不会过拟合 |
max_delta_step | range: [0,∞] | default=0 | 越大越保守 |
subsample | range: (0,1] | default=1 | 子样本数目。是否只使用部分的样本进行训练,这可以避免过拟合化。 |
sampling_method | [0,1] | default= uniform | 用于对训练实例进行采样的方法。uniform等概率采样, |
colsample_bytree | (0,1] | default=1 | 对列采样 |
lambda 别名: reg_lambda | 无 | default=1 | L2权重的正则化项。增加这个值会使模型更加保守。 |
alpha 别名: reg_alpha | [0,1] | default=0 | L1权重的正则化项。增加这个值会使模型更加保守。 |
tree_method | {auto,exact,approx,hist,gpu_hist} | default=1 | XGBoost中使用的树形构造算法。 |
scale_pos_weight | [0,1] | default=1 | 控制正权值和负权值的平衡,对不平衡类很有用。 |
Dart Booster
参数名 | 参数取值 | 默认值 | 说明 |
---|---|---|---|
sample_type | uniform,weighted | default= uniform | 采样算法的类型。 |
normalize_type | tree,forest | default= tree | 归一化算法的类型。 |
rate_drop | range: [0.0, 1.0] | default=0 | 舍弃上一轮树的比例 |
one_drop | 无 | default=0 | 当启用此标志时,在退出过程中至少会删除一棵树 |
skip_drop | [0.0, 1.0]</ |