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

RLTrader의 main모듈을 만드는 작업

by 인터넷떠돌이 2018. 10. 30.
반응형

안녕하세요?


RLTrader의 학습 데이터를 가져와서 전처리 하는 모듈인 data_manager를 지난번 포스팅에서 완성했다면, 이번 포스팅에서는 이제 진짜로 학습데이터를 준비하고 RLTrader로 주식투자 강화학습을 실행하는 모듈인 main모듈을 만들어 볼 차례가 되었습니다.



먼저 PyCharm에서 새로 만들기를 해서 py파일을 생성해 주는데, 이름을 main으로 지어 주도록 합니다.



대부분의 프로그래밍 언어에서 프로그램을 시작하기 위한 부분을 main이라고 하는데, 파이썬에서는 if __name__ = "__main__" 이라는 구문안에 작성이 될 경우에는 이 코드가 main의 역할을 합니다. 위 스크린샷에서 9번 줄을 보면, stock_code라는 항목에 삼성전자라고 되어 있는데, 이는 예시로서 들어가 있는 내용이고, 투자 시뮬레이션을 할 때는 자신이 원하는 종목의 코드를 입력하면 될 듯 합니다.


그리고 12번에서 29번은 로그를 기록하기 위한 코드라고 해서, 그냥 학습만 컴퓨터 상에서 해서는 안되고, 학습의 중간과정이나 그 내용이 어떻느냐와 그 결과를 출력해야 하는데, 그냥은 안되고, 학습한 결과를 저장하기 위한 로그를 출력해야 합니다. 그래서 이 12~20번 줄이 있는 것 입니다.




다음은 main 모듈에서 주식 강화학습에 사용할 주식 데이터를 준비하는 소스코드인데, 23번줄에서는 이전에 준비한 차트 데이터를 Pandas의 DataFrame객체로 불러 옵니다. 그리고 26번줄에서는 차트 데이터를 전처리해서 학습 데이터를 만들 준비를 하며, 27번 줄에서 학습 데이터에 포함된 열들을 추가하는 단계입니다. 그 아래에서는 30번째 줄에서 학습에 사용하기 위해 어느 기간의 데이터를 사용할 것인지를 설정하는 단계로, 이 부분 역시 사용자가 지정해 주어야 겠다는 생각이 듭니다.


여기서 마지막 32번 줄에 있는 .dropna()라는 함수의 의미는 다음과 같습니다. 이 함수는 우선 Pandas의 함수이며, DataFrame변수뒤에 붙어서 그냥 dataframe.dropna() 라고 하면 1개의 요소라도 비어있는 행을 그냥 지워 버리라는 의미가 되됩니다. 



다음의 코드는 준비한 주식 데이터를 차트 데이터와 학습 데이터로 분리하는 소스코드이며, 35번째 줄에서 차트 데이터에 포함되어야 하는 열들의 이름을 준비하는 코드이며, 36번째 줄에서 차트 데이터를 분리하라는 명령입니다. 그리고 이어서 39번의 긴 줄에서는 학습데이터를 열들을 지정하며, 48번째 줄에서 학습데이터를 분리합니다.



다음으로는 주식투자 강화학습을 시작하는 부분인데, 51번째 줄에서 정책 학습기 객체를 생성하며, 54번째 줄에서 정책학습기(Policy_Learner)의 fit()함수를 호출합니다. 그렇게 해서 나온 결과를 53번째 줄에서 정책 신경망 모델을 저장하는 폴더를 지정해 주도록 하며, 59번째 줄에서 정책 신경망 모델을 저장하는 파일의 명을 지정하며, 60번째 줄에서 마지막으로 저장을 하라는 명령어를 내립니다.



그리고 나서 이제 실행을 해볼 차례가 되었는데, 우선 위 스크린샷에 보이는 main모듈에서 동영상 재생기의 플레이 버튼과 같은 버튼이 생겨 있는 것을 볼 수 있는데, 이제 이걸 눌러서 Run이라고 프로그램을 실행 시키는 작업을 시작할 수 있습니다. 일단 무언가가 불안한 면이 있지만, 시작을 해 보도록 합니다.



위 스크린샷에서 Debug가 아니라 run을 눌러서 실행을 시키는 것 인데, 일단 실행은 시켜 보았습니다만, 그 결과가 아래와 같이 상당히 좋지 않게 나왔습니다.



settings라는 모듈이 없어서 import가 나오지 않았습니다. 당연하다면 당연한 결과일 수도 있늰데, 이 문제를 해결하기 위해서 어떻게 해서든 이걸 회복해야만 합니다.



혹시나 모듈 자체가 없어서 생기는 문제가 아닌가 해서 일단 settings라는 이름의 py파일을 만들어 보았습니다만, 빈 내용의 모듈만 가지고서는 해결이 전혀 되지 않았습니다.




그래서 github에 있는 settings.py 모듈에 있는 코드 내용을 가지고 오도록 해서, 일단 여기서는 붙여넣기를 했습니다. 그러나 그럼에도 불구하고............



위 스크린샷처럼 PyCharm에서 import에러는 전혀 나아지지 않고 있는 것을 볼 수 있었습니다. 그래서 지금까지 했는 시도는 거의 소용이 없었습니다. 아무래도 이 문제를 해결하기 위한 작업을 다음 포스팅에서 올려야 겠습니다. 어디가 문제인지 저로서는 지금은 모르겠습니다.

반응형