From 7d94f256e604e33365e33c851db65067e1a8033e Mon Sep 17 00:00:00 2001 From: Maria Dimashova Date: Fri, 10 Sep 2010 15:44:46 +0000 Subject: [PATCH] fixed CvDTree and CvForestTree find_best_split() methods --- modules/ml/src/rtrees.cpp | 8 ++++++-- modules/ml/src/tree.cpp | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/modules/ml/src/rtrees.cpp b/modules/ml/src/rtrees.cpp index 8879999de..f2331275a 100644 --- a/modules/ml/src/rtrees.cpp +++ b/modules/ml/src/rtrees.cpp @@ -158,8 +158,12 @@ CvDTreeSplit* CvForestTree::find_best_split( CvDTreeNode* node ) cv::parallel_reduce(cv::BlockedRange(0, data->var_count), finder); - CvDTreeSplit *bestSplit = data->new_split_cat( 0, -1.0f ); - memcpy( bestSplit, finder.bestSplit, finder.splitSize ); + CvDTreeSplit *bestSplit = 0; + if( finder.bestSplit->quality > 0 ) + { + bestSplit = data->new_split_cat( 0, -1.0f ); + memcpy( bestSplit, finder.bestSplit, finder.splitSize ); + } return bestSplit; } diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index 117a269f3..ebf9cc2d8 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -1877,8 +1877,12 @@ CvDTreeSplit* CvDTree::find_best_split( CvDTreeNode* node ) cv::parallel_reduce(cv::BlockedRange(0, data->var_count), finder); - CvDTreeSplit *bestSplit = data->new_split_cat( 0, -1.0f ); - memcpy( bestSplit, finder.bestSplit, finder.splitSize ); + CvDTreeSplit *bestSplit = 0; + if( finder.bestSplit->quality > 0 ) + { + bestSplit = data->new_split_cat( 0, -1.0f ); + memcpy( bestSplit, finder.bestSplit, finder.splitSize ); + } return bestSplit; }