【发布时间】:2019-07-21 11:49:59
【问题描述】:
解决实际问题需要一段时间,所以请多多包涵。 The AdaBoost documentation 声明它“是一个元估计器,首先在原始数据集上拟合分类器,然后在同一数据集上拟合分类器的其他副本,但调整错误分类实例的权重”。为此,必需的参数之一是base_estimator。要使base_estimator 与AdaBoostClassifer 一起使用,“需要支持样本加权”。
所以我的第一个问题是 - 哪些分类器支持样本加权?我做了一些研究,幸运的是,someone smarter than me had the answer。有些更新,它的工作原理是:通过运行
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 兼容的分类器支持计算类概率?
谢谢。
【问题讨论】:
标签: scikit-learn ensemble-learning adaboost