【问题标题】:How to implement an equivalent version of Adaboost in OpenCV and SciKit-learn?如何在 OpenCV 和 SciKit-learn 中实现等效版本的 Adaboost?
【发布时间】:2017-06-03 05:03:48
【问题描述】:

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

CvMLData cvml ...

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

以及 Python 中的以下内容(SciKit-learn):

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

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

现在,OpenCV 的测试错误率很低( 40%,所以几乎是随机的)

【问题讨论】:

    标签: opencv machine-learning scikit-learn computer-vision adaboost


    【解决方案1】:

    adaboost 和决策树都有几个参数,这些参数会极大地影响最终结果。 要获得相似的分类器,您应该使用相似的参数 - 例如,在您的 C++ 代码中,您使用 1000 个弱估计器,而在 Python 代码中使用 100 个。

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

    此外,如果您的目标是降低测试错误并且不一定要获得两个等效的分类器,您可以简单地优化您的首选分类器,而不是让它们完全对齐。

    【讨论】:

    • 对不起,这是我的示例中的错字,在我的代码中也是如此。我试图在两个分类器中放置相同的参数,并且我已经阅读了这样做的文档;到目前为止,一切似乎都匹配。
    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 2015-08-20
    • 2018-05-01
    • 2019-01-19
    • 2016-02-23
    • 2016-02-23
    • 2018-02-17
    • 2019-04-09
    相关资源
    最近更新 更多