0

は基本的に、私はC++(OpenCVの)中で、次のいますOpenCVとSciKitで同等のバージョンのAdaboostを実装する方法は?

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-学んで高いものを得る(> 40%、そのほとんどランダム)

答えて

1

両方のAdaBoostと決定木は、いくつかのパラメータを持っています最終結果に大きく影響する可能性があります。 同様の分類子を取得するには、同様のパラメータを使用する必要があります。たとえば、C++コードでは1000弱の推定値を使用していますが、Pythonコードでは100です。

adaboostとdecision treesの2つの実装の違いを見て、可能な限り一致するようにパラメータを変更してみてください。

また、テストエラーを減らし、必ずしも2つの等価な分類子を取得することを目的としていない場合は、それらを完全に整列させる代わりに単純に最適化することができます。

+0

申し訳ありませんが、私の例ではタイプミスでしたが、これは私のコードでは同じです。私は両方のクラシファイアに同じパラメータを入れようとしています。私はそうするためにドキュメントを読んでいます。今のところすべてが一致しているようです。 –

関連する問題