Pou*_*sen 18 c++ opencv decision-tree random-forest
有没有人有一些使用随机森林与2.3.1 API垫而不是cvMat的例子?
基本上我有一个Matrix Mat数据,由1000行和16x16x3元素组成,Matrix Mat响应1000x1矩阵,该矩阵包含每行所属的类.我想在此运行随机森林算法.
您已经获得了正确格式的数据;剩下的就是实例化 CvRTrees 对象并执行预测。
可以在此处找到随机树 v2.3 的文档。您还需要查看CvStatModel::train()文档,其中实际上包含CvRTree::train. 汤姆在评论中引用了一个很好的完整示例,您应该使用。
除了数据之外,您还需要一个 Mat 来指定每个属性的类型。该 Mat 为每个输入属性分配一行,并为输出类型分配一行(因此在您的情况下为 16x16x3 + 1 行)。
或者,您可以使用 CvRTParams 对象来指定参数,例如树数、最大深度等。我在下面的示例中使用默认值。
如果愿意,您可以传入 valIdx 和 sampleIdx Mats,它们分别指定用于训练的属性和数据行。这对于选择训练/验证数据非常有用,而无需进行大量体操将它们放入单独的垫子中。
这是一个简单的例子:
#define ATTRIBUTES_PER_SAMPLE (16*16*3)
// Assumes training data (1000, 16x16x3) are in training_data
// Assumes training classifications (1000, 1) are in training_classifications
// All inputs are numerical. You can change this to reflect your data
Mat var_type = Mat(ATTRIBUTES_PER_SAMPLE + 1, 1, CV_8U );
var_type.setTo(Scalar(CV_VAR_NUMERICAL) ); // all inputs are numerical
// Output is a category; this is classification, not regression
var_type.at<uchar>(ATTRIBUTES_PER_SAMPLE, 0) = CV_VAR_CATEGORICAL;
// Train the classifier
CvRTrees* rtree = new CvRTrees;
rtree->train(training_data, CV_ROW_SAMPLE, training_classifications,
Mat(), Mat(), var_type);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14818 次 |
| 最近记录: |