python机器学习库scikit-learn简明教程之:AdaBoost算法
来源:互联网 发布:中国战略布局知乎 编辑:程序博客网 时间:2024/06/10 04:46
1.AdaBoost简介及原理
Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
Adaboost的结构:最后的分类器YM是由数个弱分类器(weak classifier)组合而成的,相当于最后m个弱分类器来投票决定分类结果,而且每个弱分类器的“话语权”因子α大小不一样。
可以看到,U(1)是初始的权重向量,所有弱分类器的权重为1 / N,其中N是分类器总数;yn代表各个弱分类器;而T对应样例数目,共迭代训练T次;
2.scikit-learn库中的AdaBoost算法
模块sklearn.ensemble包括流行的boosting算法AdaBoost,由Freund和Schapire在1995年提出;
以下示例显示如何以100个弱学习器创建AdaBoost分类器:
#gnu>>> from sklearn.model_selection import cross_val_score>>> from sklearn.datasets import load_iris>>> from sklearn.ensemble import AdaBoostClassifier>>> iris = load_iris() #还是那个数据集>>> clf = AdaBoostClassifier(n_estimators=100) #迭代100次>>> scores = cross_val_score(clf, iris.data, iris.target) #分类器的精确度>>> scores.mean() 0.9... #得分比较理想#Adaboost算法是经过调整的Boosting算法,其能够对弱学习得到的弱分类器的错误进行适应性调整。上述算法中迭代了T次的主循环,每一次循环根据当前的权重分布对样本x定一个分布P,然后对这个分布下的样本使用弱学习算法得到一个弱分类器,对于这个算法定义的弱学习算法,对所有的,都有,而这个错误率的上限并不需要事先知道,实际上。每一次迭代,都要对权重进行更新。更新的规则是:减小弱分类器分类效果较好的数据的概率,增大弱分类器分类效果较差的数据的概率。最终的分类器是个弱分类器的加权平均。
随训练数目增加各种学习法的误差收敛速度;在这些分类器里AdaBoost表现的很不错;
3.再探Boosting:
Boosting算法是一种把若干个分类器整合为一个分类器的方法,在boosting算法产生之前,还出现过两种比较重要的将多个分类器整合为一个分类器的方法,即boostrapping方法和bagging方法。我们先简要介绍一下bootstrapping方法和bagging方法。
#gnu>>> from sklearn.datasets import make_hastie_10_2>>> from sklearn.ensemble import GradientBoostingClassifier>>> X, y = make_hastie_10_2(random_state=0)>>> X_train, X_test = X[:2000], X[2000:]>>> y_train, y_test = y[:2000], y[2000:]>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,... max_depth=1, random_state=0).fit(X_train, y_train)>>> clf.score(X_test, y_test) 0.913...#
弱学习器(即回归树)的数量由参数n_estimators控制; 每个树的大小可以通过通过max_depth参数设置树深度或通过max_leaf_nodes设置叶节点的数量来控制。 learning_rate是在通过在范围(0.0,1.0)中放缩来限制过拟合的高级参数;
0 0
- python机器学习库scikit-learn简明教程之:AdaBoost算法
- python机器学习库scikit-learn简明教程之:SVM支持向量机
- python机器学习库scikit-learn简明教程之:Lasso回归预测
- python机器学习库scikit-learn简明教程之:随机森林
- python scikit-learn机器学习算法库
- 机器学习(21)之scikit-learn Adaboost类库的实战分析
- python机器学习库scikit-learn
- Python机器学习库scikit-learn实践
- Python机器学习库scikit-learn实践
- Python/scikit-learn机器学习库(决策树)
- Python机器学习库scikit-learn实践
- Python机器学习库scikit-learn实践
- Python机器学习库scikit-learn实践
- Python机器学习库scikit-learn实践
- Python机器学习库scikit-learn实践
- Python机器学习库scikit-learn实践
- Python机器学习库scikit-learn实践
- Python机器学习库scikit-learn实践
- SpringMVC容器初始化 ------ContextLoaderListener
- Tomcat非正常退出导致无法再次启动
- [Hibernate]hibernate自动建表采用UTF-8字符编码
- C语言OJ项目参考(2274)字符串插入
- Android将指定文件路径下的图片显示出来
- python机器学习库scikit-learn简明教程之:AdaBoost算法
- JAXB教程-入门案例
- python开发环境安装for win10
- 用简单直白的方式讲解A星寻路算法原理
- hdu1204(Markov过程,赌徒输光问题变形)
- 二分搜索
- 生成验证码
- C语言OJ项目参考(2802)判断字符串是否为回文
- java移位操作符