본문 바로가기
무모한 도전-주식 인공지능 만들기

새로운 방식으로 강화학습을 시도해 보기

by 인터넷떠돌이 2019. 4. 24.
반응형

안녕하세요?

 

지난번 포스팅에서 계속해서 ADF test를 통과한 종목에 한해서 계속해서 강화학습을 시켜 보았지만, 전혀 수익을 내지 못하는 것을 확인할 수 있었습니다. 그래서 이번에는 한번 새로운 방법을 시도해 보고자 합니다.

 

일단 클래스와 클래스, py와 py파일 사이를 뛰어넘기 위한 변수를 만들기 위해서, 먼저 agent.py의 Agent클래스에서 첫 메서드가 시작하기도 전에 위 스크린샷처럼 빈 변수를 하나 만들어 줍니다.

 

그리고 나서 main.py에서는 agent.py의 Agent 클래스를 import해서, 이를 가지고 올 준비를 하도록 합니다. 이런 준비를 하는 이유는 아래에 나오게 됩니다.

 

일반적으로 생각하기에는 변수 = 다른 py파일의 변수 이런 식으로 가지고 오는 것만 생각했는데, 여기서는 이 순서를 반대로 해서, 다른 클래스에 있는 클래스 변수에 값을 덮어씌워 주는 것이 가능합니다.

 

 

그럼 이렇게 해서 제대로 된 데이터가 오는 것이 맞는지 확인해 보기 위해서, 위 스크린샷과 같이 agent.py의 매수 항목에 가서, 이 데이터를 한번 print()함수로 계산해 보도록 합니다.

 

그리고 여기서는 테스트만 하는 것이기 때문에 굳이 1000씩이나 할 필요는 없기 때문에, 10에포크만 하도록 하고, 이 값을 표시해 보도록 합니다.

 

그리고 나서 테스트를 하기 위해서, 위 스크린샷과 같이 관련된 데이터 베이스 파일을 가지고 오도록 합니다. 이 파을 yellow operation 프로젝트 폴더에 복사해 줍니다.

 

그런데 어디서 에러가 발생했다고 합니다. 이 에러의 원인이 무엇인고 하니, 특별히 있는 것이 아니라, 여기서는 데이터 프레임 객체에서 그냥은 bool형식의 답이 나오지 않기 때문에 이를 조금 변형시켜야 한다는 것 입니다.

 

그래서 데이터 프레임 객체에 위 스크린샷과 같이 empty라는 값을 붙여서 한번 제대로 된 값이 나오도록 만들어 준 다음에, 이 값들이 print()함수에 따라서 표시가 되는지를 알아보도록 합니다.

 

일단 제대로 나오는 것을 확인할 수 있기는 있었습니다. 이 작업을 통해서 우선은 제가 생각한 대로, main.py에서 관련된 데이터를 agent.py로 보낼 수 있다는 것을 확인할 수 있었습니다.

 

그리고 나서 위 스크린샷처럼 만약에 맨 마지막 부터 뒤에서 121번째 값까지 평균을 구해서, 구매를 했을 당시에 가격이 평균보다 작으면...... 위 스크린샷에서는 잘못 되었는데, 일단 나중에 수정을 할 것입니다. 작으면 대폭 점수를 주고, 바가지를 썼으면 감점을 대폭 주도록 만들었습니다. 일단 포스팅이 너무 길어지는 감이 있어서 여기서 잠시 끊도록 해야 겠습니다.

반응형