티스토리 뷰

* 일단 기본적으로 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 랜덤포레스트와 관련된 글을 찾아보기 힘들어보여서 직접 글을 쓰게 되었다.

부디 도움이 되었으면 좋겠다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함