티스토리 뷰
* 일단 기본적으로 opencv를 라이브러리로 포함을 시키고 난 후 랜덤포레스트를 어떻게 사용하는지에 대한 이야기입니다.
일단 opencv에서 학습을 위한 데이터 입력에 대하여 csv 포맷을 기본적으로 제공하는데, 사용방식은 아래와 같다.
#include <opencv/ml.h>
cv::ml::TrainData& data = cv::ml::LoadFromCSV("csv파일이름")
cv::Ptr<RTrees> trees = cv::ml::RTrees::train(data);
csv 포맷 방식
열1,열2,열3,...,정답
데이터들 쭉 나열...
(기억나는대로 일단 쭉 나열한거라 포맷이 정확하지 않을 수 있음.
추후에 시간나는대로 해보고 다시 작성하겠음.)
참고로 정답 역시 숫자값으로 넣어줘야 함.
이렇게 생성한 RTrees로 예측이 가능해지는데,
이를 예측하기 위해 열 데이터들을 cv::Mat으로 입력해주어야 한다.
cv::Mat을 입력할 때에는 좀 복잡한 방식으로 넣어줘야 하는데
이에 대한 예를 들어보이겠다.
cv::Mat mat(3,1,CV_32F);//32F는 float을 의미한다. 64F는 왜인지 에러가 난다.
mat.at<float>(0,0) = 1;
mat.at<float>(1,0) = 3;mat.at<float>(2,0) = 5;
이런식으로 데이터를 넣어줄 수 있으며 빼줄 때도 마찬가지이다.
float value1 = mat.at<float>(0,0);
float value2 = mat.at<float>(1,0);float value3 = mat.at<float>(2,0);
이렇게 입력값을 넣어주고 난 다음 이와 같은 식으로 예측한다.
cv::Mat output(1,1,CV_32F);
trees->predict(mat, output);
이제 output에 예측한 결과 값이 나오게 된다.
많이 내용이 부실하긴 한데, opencv 랜덤포레스트와 관련된 글을 찾아보기 힘들어보여서 직접 글을 쓰게 되었다.
부디 도움이 되었으면 좋겠다.
'기타IT' 카테고리의 다른 글
Firebase App named '[DEFAULT]' already exists 해결법 (0) | 2021.04.05 |
---|---|
firebase api key를 못찾겠어요 (0) | 2021.04.04 |
젠킨스 Windows 설치시 test credential 버튼 클릭시 error logging 발생현상 해결방법 (0) | 2021.01.11 |
SourceTree : Logon failed, use ctrl+c to cancel basic credential prompt. (2) | 2020.12.11 |
이클립스, 톰캣 사용시 javascript, css 갱신이 늦을때 (0) | 2018.01.15 |