RegressionTreeBuilder.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /**
  2. * @file RegressionTreeBuilder.cpp
  3. * @brief build regression trees
  4. * @author Sven Sicker
  5. * @date 06/19/2013
  6. */
  7. #include <iostream>
  8. #include <vislearning/regression/randomforest/RegressionTreeBuilder.h>
  9. using namespace OBJREC;
  10. using namespace std;
  11. using namespace NICE;
  12. RegressionTreeBuilder::RegressionTreeBuilder ()
  13. {
  14. }
  15. RegressionTreeBuilder::~RegressionTreeBuilder ()
  16. {
  17. }
  18. void RegressionTreeBuilder::build (
  19. RegressionTree& tree,
  20. const NICE::VVector & x,
  21. const NICE::Vector & y )
  22. {
  23. RegressionNode *root = build ( x, y );
  24. tree.setRoot( root );
  25. int depth, count;
  26. tree.statistics( depth, count );
  27. fprintf (stderr, "RegressionTree: maximum depth = %d, number of nodes = %d\n", depth, count );
  28. }
  29. void RegressionTreeBuilder::collectFeatureValues (
  30. const NICE::VVector & x,
  31. const std::vector< int > & selection,
  32. const int f,
  33. vector< pair< double, int > >& values )
  34. {
  35. for (int i = 0; i < (int)selection.size(); i++)
  36. {
  37. pair< double, int > curr;
  38. double value = x[ selection[i] ][f];
  39. curr.first = value;
  40. curr.second = selection[i];
  41. values.push_back( curr );
  42. }
  43. }