fixed problem with surrogate splits in decision trees training
authorMaria Dimashova <no@email>
Wed, 22 Sep 2010 06:55:51 +0000 (06:55 +0000)
committerMaria Dimashova <no@email>
Wed, 22 Sep 2010 06:55:51 +0000 (06:55 +0000)
modules/ml/src/ertrees.cpp
modules/ml/src/tree.cpp

index 2f35309a96e4a493a90d3e56e387b44e733881fd..31fb97ca62d64f0cba682c6961f13f47d28c7725 100644 (file)
@@ -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 )
index ebf9cc2d8c173ff35d61c106ae1f2787f9b912d3..03344a48f0e8fe6f2fd3e177b2aba353c6d91b2a 100644 (file)
@@ -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 )