Я пытаюсь использовать AdaBoostClassifier с базовым учеником, отличным от DecisionTree. Я пробовал SVM и KNeighborsClassifier, но я получаю ошибки. Может ли кто-нибудь указать классификаторы, которые можно использовать с AdaBoostClassifier?
AdaBoostClassifier с различными базовыми учениками
Ответ 1
Хорошо, у нас есть систематический метод, чтобы узнать всех базовых учащихся, поддерживаемых 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.
Если классификатор не реализует pred_proba, вам нужно будет установить алгоритм параметра AdaBoostClassifier = 'SAMME'.
Спасибо Андреасу за то, что он показал, как перечислить все оценки.
Ответ 2
Вы не должны использовать SVM с Adaboost. Adaboost должен использовать слабый классификатор. Использование классификаторов, таких как SVM, приведет к переопределению.
Ответ 3
Любой классификатор, который поддерживает передачу весов пробы, должен работать. SVC
- один из таких классификаторов. Какое конкретное сообщение об ошибке (и трассировка) вы получаете? Можете ли вы предоставить минимальный вариант воспроизведения для этой ошибки (например, как http://gist.github.com)?