我用opencv做随机森林,我已经成功地建立了森林。但是我需要使用 predict_prob 来知道样本属于第二类的确切机会。我现在它是如何工作的,但是有一个错误说我的森林不是二元分类,我不能使用 predict_prob。如何使我的森林二进制文件?我尝试了很多方法并到处搜索,但没有找到任何线索。
这是我的代码
CvMat* data = 0;
CvMat* responses = 0;
CvMat* var_type = 0;
//I skipped some lines
data=cvCreateMat(row_s,1024,CV_32FC1);
responses=cvCreateMat(row_s,1,CV_32FC1);
//load data and responses, responses consist of only 1 and 0
var_type = cvCreateMat( data->cols + 1, 1, CV_8U );
cvSet( var_type, cvScalarAll(CV_VAR_ORDERED) );
cvSetReal1D( var_type, data->cols, CV_VAR_CATEGORICAL );
CvRTrees forest;
forest.train(data, CV_ROW_SAMPLE, responses, 0, 0, var_type, 0,
CvRTParams( 5, 20, 0, false, 2, 0, false, 100, 10, 0, CV_TERMCRIT_ITER ));
在此之后,我可以正确使用 predict() 但我不能使用 predict_prob()