Требуется некоторое время, чтобы перейти к актуальному вопросу, поэтому, пожалуйста, потерпите меня. В документации AdaBoost говорится, что он "является метаоценщиком, который начинается с подбора классификатора в исходном наборе данных, а затем помещается в дополнительные копии классификатора в том же наборе данных, но там, где корректируются веса неправильно классифицированных экземпляров.».Для этого одним из обязательных параметров является base_estimator
.Для использования base_estimator
с AdaBoostClassifer
требуется «поддержка взвешивания выборки».
Итак, моя первая проблема была - какие классификаторы обеспечивают поддержку взвешивания выборки?Я провел некоторое исследование, и, к счастью, кто-то умнее меня получил ответ .Несколько обновленный, он работает следующим образом: запустив
from sklearn.utils.testing import all_estimators
print(all_estimators(type_filter='classifier'))
, вы получите список всех классификаторов (оказывается, их 31!).Затем, если вы запустите
import inspect
for name, clf in all_estimators(type_filter='classifier'):
if 'sample_weight' in inspect.getfullargspec(clf().fit)[0]:
print(name)
, вы сможете получить список всех классификаторов, которые обеспечивают поддержку выборочного взвешивания (21 из них для любопытных).
Пока все хорошо.Но теперь мы имеем дело с другим параметром AdaBoostClassifer
, а именно algorithm
.У вас есть два варианта: {‘SAMME’, ‘SAMME.R’}, optional (default=’SAMME.R’)
.Нам сказали, что «для использования алгоритма реального повышения SAMME.R base_estimator
необходимо поддерживать вычисление вероятностей классов».И вот тут я застрял.Выполняя поиск в Интернете, я могу найти только два классификатора, которые используются с 'SAMME.R' в качестве аргумента для algorithm
: DecisionTreeClassifier
(по умолчанию) и RandomForestClassifier
.
Так что вот вопрос - какойдругие классификаторы из 21, которые совместимы с AdaBoostClassifer
, предлагают поддержку для расчета вероятностей классов?
Спасибо.