sklearn.ensemble.AdaBoostClassifier()函数解析(最清晰的解释)
2019-09-02 14:51
4455 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/TeFuirnever/article/details/100276569
sklearn.ensemble.AdaBoostClassifier()函数全称AdaBoost分类器。
class sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm=’SAMME.R’, random_state=None)
参数说明如下:
- base_estimator: 可选参数,默认为DecisionTreeClassifier。理论上可以选择任何一个分类或者回归学习器,不过需要支持样本权重。我们常用的一般是CART决策树或者神经网络MLP。默认是决策树,即AdaBoostClassifier默认使用CART分类树DecisionTreeClassifier,而AdaBoostRegressor默认使用CART回归树DecisionTreeRegressor。另外有一个要注意的点是,如果我们选择的AdaBoostClassifier算法是SAMME.R,则我们的弱分类学习器还需要支持概率预测,也就是在scikit-learn中弱分类学习器对应的预测方法除了predict还需要有predict_proba。
- algorithm: 可选参数,默认为SAMME.R。scikit-learn实现了两种Adaboost分类算法,SAMME和SAMME.R。两者的主要区别是弱学习器权重的度量,SAMME使用对样本集分类效果作为弱学习器权重,而SAMME.R使用了对样本集分类的预测概率大小来作为弱学习器权重。由于SAMME.R使用了概率度量的连续值,迭代一般比SAMME快,因此AdaBoostClassifier的默认算法algorithm的值也是SAMME.R。我们一般使用默认的SAMME.R就够了,但是要注意的是使用了SAMME.R, 则弱分类学习器参数base_estimator必须限制使用支持概率预测的分类器。SAMME算法则没有这个限制。
- n_estimators: 整数型,可选参数,默认为50。弱学习器的最大迭代次数,或者说最大的弱学习器的个数。一般来说n_estimators太小,容易欠拟合,n_estimators太大,又容易过拟合,一般选择一个适中的数值。默认是50。在实际调参的过程中,我们常常将n_estimators和下面介绍的参数learning_rate一起考虑。
- learning_rate: 浮点型,可选参数,默认为1.0。每个弱学习器的权重缩减系数,取值范围为0到1,对于同样的训练集拟合效果,较小的v意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。所以这两个参数n_estimators和learning_rate要一起调参。一般来说,可以从一个小一点的v开始调参,默认是1。
- random_state: 整数型,可选参数,默认为None。如果RandomState的实例,random_state是随机数生成器; 如果None,则随机数生成器是由np.random使用的RandomState实例。
还有其他参数:
例子
>>> from sklearn.ensemble import AdaBoostClassifier >>> from sklearn.datasets import make_classification >>> X, y = make_classification(n_samples=1000, n_features=4, ... n_informative=2, n_redundant=0, ... random_state=0, shuffle=False) >>> clf = AdaBoostClassifier(n_estimators=100, random_state=0) >>> clf.fit(X, y) AdaBoostClassifier(algorithm='SAMME.R', base_estimator=None, learning_rate=1.0, n_estimators=100, random_state=0) >>> clf.feature_importances_ array([0.28..., 0.42..., 0.14..., 0.16...]) >>> clf.predict([[0, 0, 0, 0]]) array([1]) >>> clf.score(X, y) 0.983...
AdaBoost 分类器算法实现理论和代码在博客:《机器学习实战》学习笔记(七):利用AdaBoost 元算法提高分类性能
相关文章推荐
- sklearn.neighbors.KNeighborsClassifier()函数解析(最清晰的解释)
- sklearn.linear_model.LogisticRegression()函数解析(最清晰的解释)
- sklearn.naive_bayes.MultinomialNB()函数解析(最清晰的解释)
- sklearn.svm.SVC()函数解析(最清晰的解释)
- pd.read_csv()、pd.read_table()函数解析(最清晰的解释)
- sklearn 集成学习AdaBoostClassifier参数详解
- pd.Series()函数解析(最清晰的解释)
- sk-learn中的AdaBoostClassifier
- Tree - AdaBoost with sklearn source code
- 6. Ensemble learning & AdaBoost
- adaboost原理(包含权重详细解释)
- 集成学习(ensemble learning)之AdaBoost
- sklearn源码解析:ensemble模型 零碎记录;如何看sklearn代码,以tree的feature_importance为例
- OpenGL ES之glUniform函数-----非常清晰的解释了glUniform的函数使用, 很不错!!!
- adaboost原理(包含权重详细解释)
- 组合方法(ensemble method) 与adaboost提升方法
- 6. Ensemble learning & AdaBoost
- Adaboost 原理解析
- Gentle adaboost解释
- OpenCV的人脸检测:cvRunHaarClassifierCascade函数解析