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