一、原理部分:

图片形式~

二、sklearn实现:

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

1、分类:

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score
import numpy as np digits = load_digits()
x_data = digits.data
y_data = digits.target x_train,x_test,y_train,y_test = train_test_split(x_data,y_data,random_state = 1)
#第一轮,确定n=90
gbdt = GradientBoostingClassifier()
model_gbdt1 = GridSearchCV(gbdt,param_grid=({'n_estimators':np.arange(50,200,10)}),cv=5)
model_gbdt1.fit(x_train,y_train)
print(model_gbdt1.best_params_)
y_hat1 = model_gbdt1.predict(x_test)
print(accuracy_score(y_hat1,y_test)) #第二轮
gbdt = GradientBoostingClassifier(n_estimators=90)
model_gbdt2 = GridSearchCV(gbdt,param_grid=({'learning_rate':[0.01,0.03]}),cv=5)
model_gbdt2.fit(x_train,y_train)
print(model_gbdt2.best_params_)
y_hat2 = model_gbdt2.predict(x_test)
print(accuracy_score(y_hat2,y_test)) #第三轮,确定层数:2
gbdt = GradientBoostingClassifier(n_estimators=90,learning_rate=0.3,subsample=0.8)
model_gbdt3 = GridSearchCV(gbdt,param_grid=({'max_depth':[2,4]}),cv=5)
model_gbdt3.fit(x_train,y_train)
print(model_gbdt3.best_params_)
y_hat3 = model_gbdt3.predict(x_test)
print(accuracy_score(y_hat3,y_test)) #第四轮,确定降采样
gbdt = GradientBoostingClassifier(n_estimators=90,learning_rate=0.3,max_depth=2)
model_gbdt4 = GridSearchCV(gbdt,param_grid=({'subsample':[0.8,0.9]}),cv=5)
model_gbdt4.fit(x_train,y_train)
print(model_gbdt4.best_params_)
y_hat4 = model_gbdt4.predict(x_test)
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. PDB文件:每个开发人员都必须知道的 PDB Files

    PDB文件:每个开发人员都必须知道的   PDB Files: What Every Developer Must Knowhttp://www.wintellect.com/CS/blogs/jro ...

  2. SQL2008如何清空压缩数据库日志

    SQL2008如何清空压缩数据库日志 编写人:左丘文 2015-4-10 近期在给一系统初始化资料时,不断的导入导出,因此一不小心,就将数据的SQL(sql2008R2)的是日志档弄得比数据库还大,给 ...

  3. 把XML保存为ANSI编码

    XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlText); //plu.xml 编码是ANSI的.否则称上品名是乱码 XmlEle ...

  4. vim之vundle

    git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle,下载到本地 gvim ~/.vimrc set nocompat ...

  5. 【POJ】3378 Crazy Thairs(树状数组+dp+高精)

    题目 传送门:QWQ 分析 题意:给个数列,求有多少五元上升组 考虑简化一下问题:如果题目求二元上升组怎么做. 仿照一下逆序对,用树状数组维护一下就ok了. 三元怎么做呢? 把二元的拓展一位就可以了, ...

  6. mybatis 3 -枚举

    定义枚举: public static enum AppStateEnum { Valid("有效"), Virtual("虚拟"), Hide("隐 ...

  7. Vue 实现微信 jssdk 扫码, 上传图片

    流程 1: 配置微信公众号JS域名 2:前端发送URL后台获取JSSDK配置, 后台Service代码如下, 修改2处位置: WeixinUtil.APPID => 当前公众号APPID Wei ...

  8. Linux TCP/IP 连接查看和问题解决

    netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n  上面的 命令可以帮助分析哪种Tcp状态数量异常     netstat -nat|gr ...

  9. 关于document.cookie的使用

    设置cookie每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie:document.cookie="userId=828";如果要一次 ...

  10. tomcat与jboss 01

    1. Tomcat是Apache鼎力支持的Java Web应用服务器(注:servlet容器),由于它优秀的稳定性以及丰富的文档资料,广泛的使用人群,从而在开源领域受到最广泛的青睐. 2. Jboss ...