Opencv 300-随机森林预测返回错误答案
Opencv 300 - Random Forest Predict returns wrong answer
你们知道以下OpenCV 300中的简单随机森林示例有什么问题吗(它总是预测"0"是错误的):
Mat train_data= (Mat_<int>(6,3) << 1, 1, 1, 2, 2, 2, -1, -1, -1, 0, 1, 2, 2, 3, 4, -1, -2, -3);
Mat response = (Mat_<int>(1,6) << 0,0,0,1, 1, 1);
Ptr<TrainData> tdata = TrainData::create(train_data, ROW_SAMPLE, response);
Ptr<RTrees> model;
model = RTrees::create();
model->setMaxDepth(4);
model->setMinSampleCount(5);
model->setRegressionAccuracy(0);
model->setUseSurrogates(false);
model->setMaxCategories(15);
model->setPriors(Mat());
model->setCalculateVarImportance(true);
model->setActiveVarCount(4);
model->setTermCriteria(TC(100,0.01f));
model->train(tdata);
Mat sample;
sample = (Mat_<float>(1,3) << 0,0,0); // if I use <int> I'll get error
cout << model->predict(sample) <<"n";
sample = (Mat_<float>(1,3) << -4,-5,-6);
cout << model->predict(sample) <<"n";
sample = (Mat_<float>(1,3) << 9,9,9);
cout << model->predict(sample) <<"n";
sample = (Mat_<float>(1,3) << 19,20,21);
cout << model->predict(sample) <<"n";
谢谢,
我知道我可能有点晚了,但我在OpenCV 2.4.13中遇到了同样的问题,而且OpenCV的RandomTrees算法似乎不喜欢值为0的类,
我的意思是,如果响应矩阵的一个或多个元素为0,RTree算法将始终预测0。
我通过将响应矩阵中的所有0替换为另一个值(例如,在您的情况下为2即可)来解决此问题。
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- glad 导致 glfwSwapBuffers 返回错误消息
- 我的模板类方法返回错误类型?
- 共享内存:MapViewOfFile 返回错误 5
- 使用 std::forward_list 返回错误的队列实现
- FFMPEG:sws_scale返回错误:切片参数 0, 2160 无效
- __int64 CString 返回错误的值 - C++ MFC
- C++ OpenGL 中,绘制形状返回错误
- Python os.system() 返回错误值
- 函数从指针 c++ 中获取错误的值并返回错误的答案
- LibClang clang_getArgType() 返回错误的类型
- 除法函数返回错误的值
- 当命令失败时,gzip 会在 C++ 中返回错误代码吗?
- 矩阵逆变器返回错误的反转
- openCL-创建子缓冲区返回错误代码13
- Qt SQL LIKE语句返回错误
- GetLastError()从FtpPutFile()返回错误6
- PfCreateInterface返回错误120(未实现)
- 为什么 Pa_GetStreamTime() 返回错误?
- G++ 在尝试使用 G++ 使用 openCV 进行编译后返回错误