Я пытаюсь использовать AdaBoostClassifier с базовым учеником, отличным от DecisionTree. Я пробовал SVM и KNeighborsClassifier, но я получаю ошибки. Может ли кто-нибудь указать классификаторы, которые можно использовать с AdaBoostClassifier?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.
Если классификатор не реализует pred_proba, вам необходимо установить алгоритм параметров AdaBoostClassifier = 'SAMME'.
Спасибо Андреасу за то, что вы указали, как перечислить все оценки.
Любой классификатор, который поддерживает прохождение весов образца, должен работать. SVC
- один из таких классификаторов. Какое конкретное сообщение об ошибке (и трассировка) вы получаете? Можете ли вы предоставить минимальный вариант воспроизведения для этой ошибки (например, как http://gist.github.com)?
Да, вы правы, он работает с SVC. Раньше я создавал classifer следующим образом: clf = AdaBoostClassifier (n_estimators = 100, base_estimator = SVC()); Это не вычисляет вероятность. Однако, изменив его на: clf = AdaBoostClassifier (n_estimators = 100, base_estimator = SVC (вероятность = True)); Я получаю чистый пробег. – vdesai
У меня все еще возникают проблемы с KNeighborsClassifier. Фрагмент кода и трассировка размещены по адресу: https://gist.github.com/vijayvd/6269621 – vdesai
. Сообщение об ошибке: 'TypeError: fit() получил неожиданный аргумент ключевого слова 'sample_weight''. Это связано с тем, что 'KNeighborsClassifier' не поддерживает взвешенные образцы, поэтому не может использоваться в сочетании с' AdaBoostClassifier', как описано в его docstring. – ogrisel
Вы не должны использовать SVM с Adaboost. Adaboost должен использовать слабый классификатор. Использование классификаторов, таких как SVM, приведет к переопределению.
LinearSVC: зависит от потери;), но nyou, вероятно, будет использовать класс LogisticRegression. GMM не является классификатором. Как вы выбрали классы для тестирования? Существует итератор в utils.testing для итерации по всем классификаторам;) –
Спасибо, Андреас. LinearSVC независимо от выбора для потери не поддерживает sample_weight. Да, GMM не является классификатором :) и я его вынул.Я действительно хотел попробовать все доступные классификаторы и посмотреть, какие из них можно использовать в качестве базового ученика. Это те, которые я смог определить, посмотрев сайт scikit. – vdesai
Да, вы правы насчет LinearSVC. Существует гораздо больше классификаторов: '' от sklearn.utils.testint import all_estimators; print (all_estimators (type_filter = 'classifier')) '' –