From 0c771221a3c775cffe039a1adbbd54a0a974d51a Mon Sep 17 00:00:00 2001 From: Maria Dimashova Date: Wed, 22 Sep 2010 06:55:51 +0000 Subject: [PATCH] fixed problem with surrogate splits in decision trees training --- modules/ml/src/ertrees.cpp | 2 +- modules/ml/src/tree.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/ml/src/ertrees.cpp b/modules/ml/src/ertrees.cpp index 2f35309..31fb97c 100644 --- a/modules/ml/src/ertrees.cpp +++ b/modules/ml/src/ertrees.cpp @@ -418,8 +418,8 @@ void CvERTreeTrainData::set_data( const CvMat* _train_data, int _tflag, "variable (=%g) is too large", i, vi, val ); CV_ERROR( CV_StsBadArg, err ); } + num_valid++; } - num_valid++; } } if( vi < var_count ) diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index ebf9cc2..03344a4 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -528,8 +528,9 @@ void CvDTreeTrainData::set_data( const CvMat* _train_data, int _tflag, "variable (=%g) is too large", i, vi, val ); CV_ERROR( CV_StsBadArg, err ); } + num_valid++; } - num_valid++; + if (is_buf_16u) udst[i] = (unsigned short)i; else @@ -538,9 +539,9 @@ void CvDTreeTrainData::set_data( const CvMat* _train_data, int _tflag, } if (is_buf_16u) - icvSortUShAux( udst, num_valid, _fdst); + icvSortUShAux( udst, sample_count, _fdst); else - icvSortIntAux( idst, /*or num_valid?\*/ sample_count, _fdst ); + icvSortIntAux( idst, sample_count, _fdst ); } if( vi < var_count ) -- 2.7.4