随机森林的例子
OpenCV - Random Forest Example
是否有人有一些使用随机森林与2.3.1 API Mat而不是cvMat的例子?
基本上,我有一个矩阵垫数据,由1000行16x16x3元素和矩阵垫响应一个1000x1矩阵,每行属于哪个类。我想用随机森林算法。
您已经获得了正确格式的数据;剩下的就是实例化一个CvRTrees对象并执行你的预测。
Random Trees v2.3的文档可以在这里找到。您还需要查看CvStatModel::train()
文档,它实际上有CvRTree::train
的大多数参数的描述。Tom在注释中引用了一个很好的完整的例子,你应该使用。
除了数据之外,还需要一个Mat来指定每个属性的类型。这个Mat有一行用于每个输入属性,另外还有一行用于输出类型(在您的例子中是16x16x3 + 1行)。
可选地,你可以使用CvRTParams对象来指定参数,如树的数量,最大深度等。我在下面的例子中使用默认值。
如果您愿意,您可以传入valIdx和sampleIdx Mats,它们分别指定要用于训练的属性和数据行。这对于选择训练/验证数据可能很有用,而不需要做一堆体操来将它们放在单独的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);
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 为什么 Serial.println(<char[]>);返回随机字符?
- 字符串-C++后显示的随机字符
- 循环中的随机函数
- 在c++构造函数中使用随机字符串生成器
- 使用std::mt19937从字符串中返回一个随机单词
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- 如何在C++中高效地构造随机骰子
- 在类中使用随机生成器时出现性能问题
- RcppShark 随机森林示例引发有关随机数生成器的异常
- OPENCV随机决策森林:如何获得后验概率
- 在C++中使用alglib实现随机森林
- 使用 OpenCV 的琐碎随机森林不起作用,与 sklearn 不同
- G Fanelli论文中随机森林的头部姿态估计
- Opencv 300-随机森林预测返回错误答案
- Python的随机森林距离无法构建(g++)
- 随机森林的例子
- 使用OpenCV随机森林进行回归
- 如果要读取随机森林(opencv3.0)的xml文件,则标签类型必须为float
- 写和读opencv3.0 ml文件(随机森林)