如何在OpenCV和SciKit学习中实现Adaboost的等效版本



基本上,我在C++(OpenCV)中有以下内容:

CvMLData cvml ...
CvBoost boost;
boost.train(&cvml, CvBoostParams(CvBoost::REAL, 1000, 0, 1, false, 0), false);

以及Python中的以下内容(SciKit学习):

bdt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=1),
#algorithm="SAMME.R",
n_estimators=1000)
bdt.fit(X_train, y_train)

如何使它们相似(或等效)?

现在,我在OpenCV中得到了一个低测试错误(<10%),在SciKit Learn中得到了高测试错误(>40%,所以几乎是随机的)

adaboost和决策树都有几个参数,这些参数会对最终结果产生很大影响。为了获得类似的分类器,你应该使用类似的参数——例如,在C++代码中,你使用了1000个弱估计器,而在python代码中使用了100个。

查看adaboost和决策树的两种实现之间的差异,并尝试更改参数以尽可能匹配。

此外,如果你的目标是降低测试错误,而不一定得到两个等效的分类器,你可以简单地优化你喜欢的分类器,而不是让它们完全对齐。

相关内容

  • 没有找到相关文章

最新更新