一、原理部分:

图片形式~

二、sklearn实现:

可以看看这个:https://blog.csdn.net/han_xiaoyang/article/details/52663170

1、分类:

  1. from sklearn.ensemble import GradientBoostingClassifier
  2. from sklearn.datasets import load_digits
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.model_selection import GridSearchCV
  5. from sklearn.preprocessing import StandardScaler
  6. from sklearn.metrics import accuracy_score
  7. import numpy as np
  8.  
  9. digits = load_digits()
  10. x_data = digits.data
  11. y_data = digits.target
  12.  
  13. x_train,x_test,y_train,y_test = train_test_split(x_data,y_data,random_state = 1)
  14. #第一轮,确定n=90
  15. gbdt = GradientBoostingClassifier()
  16. model_gbdt1 = GridSearchCV(gbdt,param_grid=({'n_estimators':np.arange(50,200,10)}),cv=5)
  17. model_gbdt1.fit(x_train,y_train)
  18. print(model_gbdt1.best_params_)
  19. y_hat1 = model_gbdt1.predict(x_test)
  20. print(accuracy_score(y_hat1,y_test))
  21.  
  22. #第二轮
  23. gbdt = GradientBoostingClassifier(n_estimators=90)
  24. model_gbdt2 = GridSearchCV(gbdt,param_grid=({'learning_rate':[0.01,0.03]}),cv=5)
  25. model_gbdt2.fit(x_train,y_train)
  26. print(model_gbdt2.best_params_)
  27. y_hat2 = model_gbdt2.predict(x_test)
  28. print(accuracy_score(y_hat2,y_test))
  29.  
  30. #第三轮,确定层数:2
  31. gbdt = GradientBoostingClassifier(n_estimators=90,learning_rate=0.3,subsample=0.8)
  32. model_gbdt3 = GridSearchCV(gbdt,param_grid=({'max_depth':[2,4]}),cv=5)
  33. model_gbdt3.fit(x_train,y_train)
  34. print(model_gbdt3.best_params_)
  35. y_hat3 = model_gbdt3.predict(x_test)
  36. print(accuracy_score(y_hat3,y_test))
  37.  
  38. #第四轮,确定降采样
  39. gbdt = GradientBoostingClassifier(n_estimators=90,learning_rate=0.3,max_depth=2)
  40. model_gbdt4 = GridSearchCV(gbdt,param_grid=({'subsample':[0.8,0.9]}),cv=5)
  41. model_gbdt4.fit(x_train,y_train)
  42. print(model_gbdt4.best_params_)
  43. y_hat4 = model_gbdt4.predict(x_test)
  44. print(accuracy_score(y_hat4,y_test))

最后结果,结果也是很好,跟svm差不多吧。可能是我调参不够好,不过暂时不纠结这个

{'subsample': 0.8}
0.986666666667

机器学习—集成学习(GBDT)的更多相关文章

  1. 机器学习:集成学习:随机森林.GBDT

    集成学习(Ensemble Learning) 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测 ...

  2. 机器学习--集成学习(Ensemble Learning)

    一.集成学习法 在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好) ...

  3. 机器学习——集成学习(Bagging、Boosting、Stacking)

    1 前言 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrate < ...

  4. [机器学习]集成学习--bagging、boosting、stacking

    集成学习简介 集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务. 如何产生"好而不同"的个体学习器,是集成学习研究的核心. 集成学习的思路是通过 ...

  5. python大战机器学习——集成学习

    集成学习是通过构建并结合多个学习器来完成学习任务.其工作流程为: 1)先产生一组“个体学习器”.在分类问题中,个体学习器也称为基类分类器 2)再使用某种策略将它们结合起来. 通常使用一种或者多种已有的 ...

  6. 吴裕雄 python 机器学习——集成学习随机森林RandomForestRegressor回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  7. 吴裕雄 python 机器学习——集成学习随机森林RandomForestClassifier分类模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  8. 吴裕雄 python 机器学习——集成学习梯度提升决策树GradientBoostingRegressor回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  9. 吴裕雄 python 机器学习——集成学习AdaBoost算法回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  10. 吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

随机推荐

  1. SQL Server 查询表的主键的两种方式

    方式1: select b.column_name from information_schema.table_constraints a inner join information_schema. ...

  2. yii2 memcache 跨平台交互 键和值不一样

    1 首先在配置文件中加载 web\basic\config\web.php ........ 'components' => [ 'request' => [ // !!! insert ...

  3. java wab----遇到经常用到集合list/map/

    List与Vector的区别: vector适用:对象数量变化少,简单对象,随机访问元素频繁 list适用:对象数量变化大,对象复杂,插入和删除频] List首先是链表,它的元素不是连续的.vecto ...

  4. mysql-11元数据

    我的mysql是用docker配置的,服务器状态和服务器配置变量都未设置,报错正常.

  5. mysql 5.6.15升级到5.6.43

    今天闲来无事,观察测试环境的zabbix服务器,发现内存泄漏严重,于是重启了,想起了前几天写的帖子发生了严重的内存泄漏可以把mysql升级到最新的小版本 于是乎就试着升级 old version:5. ...

  6. 超简单的制作win7 U盘启动

    我感觉真的太简单,操作so简单 第一个下载这个工具,这是微软官方提供的,用这个工具可以把win7的iso文件刻录到u盘中,u盘就可以作为系统启动盘来使用了 Windows 7 USB DVD Down ...

  7. canvas设置repeat

    canvas设置repeat 方法 ctx.createPattern(img, 'repeat'); repeat repeat-x repeat-y no-repeat 重复图片 const ca ...

  8. 常规Java工具,算法,加密,数据库,面试题,源代码分析,解决方案

    原文链接:http://www.tvtvso.top/?thread-5.htm 有家杂志曾对全国60岁以上的老人进行了这样一次问卷调查:你最后悔什么? 列出10项人们生活中容易后悔的事情,供被调查者 ...

  9. Rhythmk 一步一步学 JAVA (19): 注解 annotation

    在编写注解的时候需要了解的四种注解: @Target 表示该注解可以用于什么地方,可能的ElementType参数有: CONSTRUCTOR:构造器的声明 FIELD:域声明(包括enum实例) L ...

  10. Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解

    1.一对一 (One to One)    共三种情况:     1.1 主键共享    1.2 外键共享 1.3 中间表关联 1.1  code: @Entity public class arti ...