2013-08-19 3 views

ответ

31

Хорошо, у нас есть систематический метод, чтобы узнать всех базовых учащихся, поддерживаемых 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'.

Спасибо Андреасу за то, что вы указали, как перечислить все оценки.

+0

LinearSVC: зависит от потери;), но nyou, вероятно, будет использовать класс LogisticRegression. GMM не является классификатором. Как вы выбрали классы для тестирования? Существует итератор в utils.testing для итерации по всем классификаторам;) –

+0

Спасибо, Андреас. LinearSVC независимо от выбора для потери не поддерживает sample_weight. Да, GMM не является классификатором :) и я его вынул.Я действительно хотел попробовать все доступные классификаторы и посмотреть, какие из них можно использовать в качестве базового ученика. Это те, которые я смог определить, посмотрев сайт scikit. – vdesai

+1

Да, вы правы насчет LinearSVC. Существует гораздо больше классификаторов: '' от sklearn.utils.testint import all_estimators; print (all_estimators (type_filter = 'classifier')) '' –

2

Любой классификатор, который поддерживает прохождение весов образца, должен работать. SVC - один из таких классификаторов. Какое конкретное сообщение об ошибке (и трассировка) вы получаете? Можете ли вы предоставить минимальный вариант воспроизведения для этой ошибки (например, как http://gist.github.com)?

+0

Да, вы правы, он работает с SVC. Раньше я создавал classifer следующим образом: clf = AdaBoostClassifier (n_estimators = 100, base_estimator = SVC()); Это не вычисляет вероятность. Однако, изменив его на: clf = AdaBoostClassifier (n_estimators = 100, base_estimator = SVC (вероятность = True)); Я получаю чистый пробег. – vdesai

+0

У меня все еще возникают проблемы с KNeighborsClassifier. Фрагмент кода и трассировка размещены по адресу: https://gist.github.com/vijayvd/6269621 – vdesai

+1

. Сообщение об ошибке: 'TypeError: fit() получил неожиданный аргумент ключевого слова 'sample_weight''. Это связано с тем, что 'KNeighborsClassifier' не поддерживает взвешенные образцы, поэтому не может использоваться в сочетании с' AdaBoostClassifier', как описано в его docstring. – ogrisel

4

Вы не должны использовать SVM с Adaboost. Adaboost должен использовать слабый классификатор. Использование классификаторов, таких как SVM, приведет к переопределению.