xgb使用sklearn接口(推荐)

XGBClassifier

from xgboost.sklearn importXGBClassifier

clf=XGBClassifier(

silent=0 ,#设置成1则没有运行信息输出,最好是设置为0.是否在运行升级时打印消息。#nthread=4,# cpu 线程数 默认最大

learning_rate= 0.3, #如同学习率

min_child_weight=1,#这个参数默认是 1,是每个叶子里面 h 的和至少是多少,对正负样本不均衡时的 0-1 分类而言#,假设 h 在 0.01 附近,min_child_weight 为 1 意味着叶子节点中最少需要包含 100 个样本。#这个参数非常影响结果,控制叶子节点中二阶导的和的最小值,该参数值越小,越容易 overfitting。

max_depth=6, #构建树的深度,越大越容易过拟合

gamma=0, #树的叶子节点上作进一步分区所需的最小损失减少,越大越保守,一般0.1、0.2这样子。

subsample=1, #随机采样训练样本 训练实例的子采样比

max_delta_step=0,#最大增量步长,我们允许每个树的权重估计。

colsample_bytree=1, #生成树时进行的列采样

reg_lambda=1, #控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。#reg_alpha=0, # L1 正则项参数#scale_pos_weight=1, #如果取值大于0的话,在类别样本不平衡的情况下有助于快速收敛。平衡正负权重#objective= 'multi:softmax', #多分类的问题 指定学习任务和相应的学习目标#num_class=10, # 类别数,多分类与 multisoftmax 并用

n_estimators=100, #树的个数

seed=1000 #随机种子#eval_metric= 'auc'

)

clf.fit(X_train,y_train,eval_metric='auc')

5.3 基于Scikit-learn接口的分类

#==============基于Scikit-learn接口的分类================

from sklearn.datasets importload_irisimportxgboost as xgbfrom xgboost importplot_importancefrom matplotlib importpyplot as pltfrom sklearn.model_selection importtrain_test_splitfrom sklearn.metrics importaccuracy_score#加载样本数据集

iris =load_iris()

X,y=iris.data,iris.target

X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=0.2, random_state=1234565) #数据集分割

#训练模型

model = xgb.XGBClassifier(max_depth=5, learning_rate=0.1, n_estimators=160, silent=True, objective='multi:softmax')

model.fit(X_train, y_train)#对测试集进行预测

y_pred =model.predict(X_test)#计算准确率

accuracy =accuracy_score(y_test,y_pred)print("accuarcy: %.2f%%" % (accuracy*100.0))#显示重要特征

plot_importance(model)

plt.show()

输出结果:Accuracy: 96.67 %

基于Scikit-learn接口的回归

#================基于Scikit-learn接口的回归================

importxgboost as xgbfrom xgboost importplot_importancefrom matplotlib importpyplot as pltfrom sklearn.model_selection importtrain_test_splitfrom sklearn.datasets importload_boston

boston=load_boston()

X,y=boston.data,boston.target#XGBoost训练过程

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

model= xgb.XGBRegressor(max_depth=5, learning_rate=0.1, n_estimators=160, silent=True, objective='reg:gamma')

model.fit(X_train, y_train)#对测试集进行预测

ans =model.predict(X_test)#显示重要特征

plot_importance(model)

plt.show()

参数调优的一般方法

我们会使用和GBM中相似的方法。需要进行如下步骤:

1. 选择较高的学习速率(learning rate)。一般情况下,学习速率的值为0.1。但是,对于不同的问题,理想的学习速率有时候会在0.05到0.3之间波动。选择对应于此学习速率的理想决策树数量。XGBoost有一个很有用的函数“cv”,这个函数可以在每一次迭代中使用交叉验证,并返回理想的决策树数量。

2. 对于给定的学习速率和决策树数量,进行决策树特定参数调优(max_depth, min_child_weight, gamma, subsample, colsample_bytree)。在确定一棵树的过程中,我们可以选择不同的参数,待会儿我会举例说明。

3. xgboost的正则化参数的调优。(lambda, alpha)。这些参数可以降低模型的复杂度,从而提高模型的表现。

4. 降低学习速率,确定理想参数。

咱们一起详细地一步步进行这些操作。

第一步:确定学习速率和tree_based 参数调优的估计器数目。

为了确定boosting 参数,我们要先给其它参数一个初始值。咱们先按如下方法取值:

1、max_depth = 5 :这个参数的取值最好在3-10之间。我选的起始值为5,但是你也可以选择其它的值。起始值在4-6之间都是不错的选择。

2、min_child_weight = 1:在这里选了一个比较小的值,因为这是一个极不平衡的分类问题。因此,某些叶子节点下的值会比较小。

3、gamma = 0: 起始值也可以选其它比较小的值,在0.1到0.2之间就可以。这个参数后继也是要调整的。

4、subsample,colsample_bytree = 0.8: 这个是最常见的初始值了。典型值的范围在0.5-0.9之间。

5、scale_pos_weight = 1: 这个值是因为类别十分不平衡。

注意哦,上面这些参数的值只是一个初始的估计值,后继需要调优。这里把学习速率就设成默认的0.1。然后用xgboost中的cv函数来确定最佳的决策树数量。

第二步: max_depth 和 min_weight 参数调优

我们先对这两个参数调优,是因为它们对最终结果有很大的影响。首先,我们先大范围地粗调参数,然后再小范围地微调。

注意:在这一节我会进行高负荷的栅格搜索(grid search),这个过程大约需要15-30分钟甚至更久,具体取决于你系统的性能。你也可以根据自己系统的性能选择不同的值。

第三步:gamma参数调优

第四步:调整subsample 和 colsample_bytree 参数

第五步:正则化参数调优。

第6步:降低学习速率

最后,我们使用较低的学习速率,以及使用更多的决策树。我们可以用XGBoost中的CV函数来进行这一步工作。

xgboost算法 c语言,xgboost与sklearn的接口相关推荐

  1. xgboost算法_基于XGBoost算法构建投资组合

    摘要 极端梯度提升 (eXtreme Gradient Boosting) 是一种基于决策树的集成机器学习方法,适用于分类和回归问题.其优点是速度快.效果好.能处理大规模数据.支持自定义损失函数等. ...

  2. Datawhale集成学习笔记:XGBOOST算法

    引用:Datawhale XGBoost算法 XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了GBDT算法并进行了算法和工程上的许多改进,被广泛应用在Kaggle竞赛及其他许多机器学 ...

  3. xgboost算法_第113天: Python XGBoost 算法项目实战

    Python 实现机器学习 如果你的机器学习预测模型表现得不尽如人意,那就用XGBoost.XGBoost算法现在已经成为很多数据工程师的重要武器. XGBoost 算法 说到XGBoost,不得不提 ...

  4. xgboost算法_详解xgboost算法的样本不平衡问题

    XGBoost官方文档对参数scale_pos_weight的定义: 翻译: 调节正负样本权重的平衡 ,常用来处理不平衡的正负样本数据 . 典型值算法: scale_pos_weight = 负样本总 ...

  5. 树模型系列之XGBoost算法

    文章目录 树模型系列之XGBoost算法 概要 原理 损失函数 子树 xgboost算法流程总结 关键问题 缺失值处理(稀疏问题的分裂点查找 Sparsity-aware Split Finding) ...

  6. XGBoost算法个人理解

    提升树Boosting Tree算法实例详解_程大海的博客-CSDN博客 从提升树Boosting Tree过度到梯度提升Gradient Boosting_程大海的博客-CSDN博客 GBDT梯度提 ...

  7. R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型

    R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型 目录 R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型

  8. R语言构建xgboost模型:使用xgboost构建广义线性模型(GLM):使用gblinear算法拟合线性模型并配置L1和L2正则化

    R语言构建xgboost模型:使用xgboost构建广义线性模型(GLM):使用gblinear算法拟合线性模型并配置L1和L2正则化 目录

  9. ML之xgboost:利用xgboost算法(sklearn+GridSearchCV)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)

    ML之xgboost:利用xgboost算法(sklearn+GridSearchCV)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测) 目录 输出结果 ...

最新文章

  1. 查询太慢?看看ES是如何把索引的性能压榨到极致的!
  2. h5 iframe显示不全_H5 唤醒APP小记
  3. NTU 课程笔记 CV6422 Statistical Methods Applications (1) 基本统计知识
  4. TCP/IP / 三次握手之状态转换图和原因
  5. aws 性能_AWS上的应用程序自动扩展–选项和对性能的影响
  6. 仅剩296个免费名额,AI工程师进阶必修课今日领取
  7. Pycharm快捷键设置(鼠标滚动控制字体大小)
  8. 详解Angular开发中的登陆与身份验证
  9. html时间显示在div中,在html页面实时显示系统时间
  10. 简单版俄罗斯方块程序代码c语言,俄罗斯方块C语言程序代码.DOC
  11. Java - 注解(Annotation)
  12. 陶哲轩实分析 习题6.3.3
  13. 计算机需要权限来执行此操作 win7,Win7系统下“文件夹访问被拒绝 您需要权限来执行操作”解决方法...
  14. CF1015C Songs Compression (#贪心)
  15. x64dbg 2022 最新版编译方法
  16. jupyter notebook 实用快捷键大全
  17. 颠覆你想象的150个故事(1)
  18. 编写可变参数函数 c语言,C语言可变参数函数的编写
  19. 如何利用蜜蜂剪辑切割音频文件
  20. C语言————文件的打开(知识点总结+举例)

热门文章

  1. Python类的约束以及super()剖析
  2. 板子armv7_32怎么挂载windows文件夹?
  3. 如何理解Linux shell中的“2>1”(将文件描述2(标准错误输出)的内容重定向到文件描述符1(标准输出))(尼玛>符号竟然不支持搜索,害我搜搜不到,只能搜)
  4. 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 2.)(python/c/c++版)(笔记)
  5. python中yield函数的作用?
  6. Gazebo添加模型并控制模型运动作为动态障碍物(Ubuntu16.04, Gazebo7.16),附录动态链接库和静态链接库区别
  7. Android3个页面跳转代码,从零开始Android组件化改造(三) - 页面跳转与路由组件...
  8. 问题排查:vue项目刷新页面加载了500多个请求?
  9. 请详细描述listview与gridview的异同点_三种聚类分析的异同
  10. Mysql:一条sql是如何执行的?