我正在尝试将AdaBoostClassifier与DecisionTree以外的基础学习器一起使用。我尝试过SVM和KNeighborsClassifier,但我遇到了错误。AdaBoostClassifier可以使用哪些分类器?
好的,我们有一个系统的方法来找出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,
Perceptron,
RandomForestClassifier,
RidgeClassifierCV,
SGDClassifier,
SVC.
如果分类器没有实现predict_proba
,则必须将AdaBoostClassifier参数algorithm设置为"SAMME"。
您不应该将SVM与Adaboost一起使用。Adaboost应该使用弱分类器。使用像SVM这样的分类器会导致过拟合。
任何支持传递样本权重的分类器都应该工作。CCD_ 2就是这样一个分类器。您得到了什么具体的错误消息(和回溯)?你能为这个错误提供一个极简主义的再现案例吗(例如http://gist.github.com)?