123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /**
- * @file SplittingCriterion.cpp
- * @brief abstract interface for splitting criteria
- * @author Sven Sickert
- * @date 01/12/2017
- */
- #include "SplittingCriterion.h"
- using namespace OBJREC;
- /* default constructor */
- SplittingCriterion::SplittingCriterion()
- {
- min_examples = 50;
- entropy_cur = 0.0;
- min_entropy = 10e-5;
- min_purity = 10e-7;
- }
- /* simple constructor */
- SplittingCriterion::SplittingCriterion( int _min_examples )
- {
- min_examples = _min_examples;
- entropy_cur = 0.0;
- min_entropy = 10e-5;
- min_purity = 10e-7;
- }
- /* config constructor */
- SplittingCriterion::SplittingCriterion( const NICE::Config *conf )
- {
- min_examples = conf->gI ( "SplittingCriterion", "min_examples", 50 );
- min_entropy = conf->gD ( "SplittingCriterion", "min_entropy", 10e-5 );
- min_purity = conf->gD ( "SplittingCriterion", "min_purity", 10e-7 );
- entropy_cur = 0.0;
- }
- /* copy constructor */
- SplittingCriterion::SplittingCriterion( const SplittingCriterion &obj )
- {
- min_examples = obj.min_examples;
- min_entropy = obj.min_entropy;
- min_purity = obj.min_purity;
- entropy_cur = obj.entropy_cur;
- }
- /* default destructor */
- SplittingCriterion::~SplittingCriterion()
- {
- }
- /* computation of entropy */
- double SplittingCriterion::computeEntropy(
- const double* distribution,
- const double count,
- const int maxClassNo )
- {
- double e = 0.0;
- for ( int j = 0 ; j <= maxClassNo ; j++ )
- if ( distribution[j] != 0 )
- e -= distribution[j] * log(distribution[j]);
- e /= count;
- e += log(count);
- return e;
- }
|