19

我正在尝试将 AdaBoostClassifier 与 DecisionTree 以外的基础学习器一起使用。我已经尝试过 SVM 和 KNeighborsClassifier,但我得到了错误。可以与 AdaBoostClassifier 一起使用的分类器有哪些?

4

3 回答 3

42

好的,我们有一个系统的方法来找出所有 AdaBoostClassifier 支持的基础学习器。兼容的base learner的fit方法需要支持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,
Perceptron,
RandomForestClassifier,
RidgeClassifierCV,
SGDClassifier,
SVC.

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

于 2013-08-19T21:37:03.843 回答
5

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

于 2015-04-05T14:41:27.780 回答
2

任何支持传递样本权重的分类器都应该可以工作。SVC就是这样一种分类器。你得到什么具体的错误信息(和回溯)?你能为这个错误提供一个简单的再现案例吗(例如作为http://gist.github.com)?

于 2013-08-19T08:29:55.597 回答