AdaBoostClassifier与不同的基础学习者

时间:2013-08-19 04:31:25

标签: machine-learning scikit-learn adaboost

我正在尝试将AdaBoostClassifier与DecisionTree之外的基础学习器一起使用。我尝试过SVM和KNeighborsClassifier,但是我收到了错误。有人可以指出可以与AdaBoostClassifier一起使用的分类器吗?

3 个答案:

答案 0 :(得分:35)

好的,我们有一个系统的方法来找出AdaBoostClassifier支持的所有基础学习者。兼容的基础学习者的拟合方法需要支持sample_weight,可以通过运行以下代码获得:

import inspect
from sklearn.utils.testing import all_estimators
for name, clf in all_estimators(type_filter='classifier'):
    if 'sample_weight' in inspect.getargspec(clf().fit)[0]:
       print name

这导致以下输出: AdaBoostClassifier, BernoulliNB, DecisionTreeClassifier, ExtraTreeClassifier, ExtraTreesClassifier, MultinomialNB, NuSVC, 感知, RandomForestClassifier, RidgeClassifierCV, SGDClassifier, SVC。

如果分类器未实现predict_proba,则必须设置AdaBoostClassifier参数algorithm ='SAMME'。

感谢Andreas展示了如何列出所有估算器。

答案 1 :(得分:4)

您不应该将SVM与Adaboost一起使用。 Adaboost应该使用弱分类器。使用像SVM这样的分类器会导致过度拟合。

答案 2 :(得分:2)

任何支持传递样本权重的分类器都应该有效。 SVC就是这样一个分类器。你得到什么具体的错误信息(和追溯)?您能否为此错误提供简约的复制案例(例如,作为http://gist.github.com)?