boost.cpp

antonella cascitelli, 2013-08-05 04:24 pm

Download (1.9 kB)

 
1
#include "opencv2/core/core.hpp"
2
#include "opencv2/ml/ml.hpp"
3
4
using namespace cv;
5
6
int main()
7
{
8
        Mat_<float> trainingSet1( Size( 2, 25 ) );
9
        Mat_<int> response1( Size( 1, 25 ) );
10
        Mat_<float> trainingSet2( Size( 2, 25 ) );
11
        Mat_<int> response2( Size( 1, 25 ) );
12
        Mat_<float> sample( Size( 2, 1000 ) );
13
        
14
        RNG rng = RNG( (int) time(0) );
15
16
        //prepare data
17
        for( size_t i = 0; i < trainingSet1.rows; i++ )
18
        {
19
                for( size_t j = 0; j < trainingSet1.cols; j++ )
20
                {
21
                        float x = rng.uniform( 0, 1000 );
22
                        trainingSet1( i, j ) = x;
23
                }
24
        }
25
        for( size_t i = 0; i < trainingSet2.rows; i++ )
26
        {
27
                for( size_t j = 0; j < trainingSet2.cols; j++ )
28
                {
29
                        float x = rng.uniform( 0, 1000 );
30
                        trainingSet2( i, j ) = x;
31
                }
32
        }
33
        for( size_t i = 0; i < response1.rows; i++ )
34
        {
35
                int x = rng.uniform( 0, 2 );
36
                response1( i, 1 ) = x;
37
        }
38
        for( size_t i = 0; i < response2.rows; i++ )
39
        {
40
                int x = rng.uniform( 0, 2 );
41
                response2( i, 1 ) = x;
42
        }
43
        //end
44
        
45
        
46
        Mat var_types1( 1, trainingSet1.cols + 1, CV_8UC1, Scalar( CV_VAR_ORDERED ) );
47
        var_types1.at<uchar>( trainingSet1.cols ) = CV_VAR_CATEGORICAL;
48
        
49
        Mat var_types2( 1, trainingSet2.cols + 1, CV_8UC1, Scalar( CV_VAR_ORDERED ) );
50
        var_types2.at<uchar>( trainingSet2.cols ) = CV_VAR_CATEGORICAL;
51
        
52
        CvBoostParams  params( CvBoost::REAL, // boost_type
53
                           25, // weak_count
54
                           0.8, // weight_trim_rate
55
                           1, // max_depth
56
                           false, //use_surrogates
57
                           0 // priors
58
                         );
59
        CvBoost boostModel;
60
        
61
        
62
        //first train
63
        boostModel.train( trainingSet1, CV_ROW_SAMPLE, response1, Mat(), Mat(), var_types1, Mat(), params, false );
64
        
65
        //predict
66
        for( size_t i = 0; i < sample.rows; i++ )
67
        {
68
                boostModel.predict( sample.row(i), Mat(), Range::all(), false, true );
69
        }
70
71
        //second train
72
        boostModel.train( trainingSet2, CV_ROW_SAMPLE, response2, Mat(), Mat(), var_types2, Mat(), params, true );
73
        
74
75
}