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

RLTrader의 유저 인터페이스를 만드는 작업-10-

by 인터넷떠돌이 2018. 12. 15.
반응형

안녕하세요?


이번 포스팅에서는 이제 데이터 베이스의 파일에서 진짜로 데이터를 가지고 와서, 한번 강화학습에 사용하기 위한 단계를 밟아야 합니다. 그래서 이번 포스팅에서는 그 단계를 어떻게 밟아 갔는지를 포스팅 하고자 합니다.



그전에 일단 위 스크린샷처럼 클래스 변수로 trigger_of_condition 이라는 변수를 주어서, 일종의 조건이 하나하나 만족이 될 때마다 켜지는 트리거로 활용을 하도록 합니다.



먼저 제대로 데이터 베이스 파일이 선택이 되면 첫번째 트리거가 False에서 True로 바뀌도록 코드를 짜 주도록 합니다. 이렇게 하는 식으로 계속 조건이 만족이 되면 트리거가 True가 됩니다.



그리고 나서, Selection_of_training_data_set()메소드에서 각각의 조건이 만족한 다음에야 위 스크린샷처럼 일단 데이터 베이스에서 학습 데이터로 지정한 비율을 구하는 코드가 작동이 되도록 만들어 줍니다.




일단 데이터 베이스와 테이블의 체크가 끝나지 않았다면, 위 스크린샷처럼 사전단계가 완료되지 않았다고 하면서 메세지 박스가 뜨는 것까지 제대로 되었습니다.



다음은 데이터의 전처리 단계에 들어가는 코드를 만들어야 하는데, 일단 이전에 RLTrader를 책보고 만든 코드를 일부를 만들어 주도록 합니다.



그 다음으로 클래스 변수로 일부를 선언한 다음, 빈 메소드라는 선언을 해 주는데, 이렇게 하는 이유는 바로 클래스 안에서 메소드 에서 다른 메소드로 변수를 보내야 하는데, 아마 다른 방법이 있을 것 같기도 하지만, 제 경우에는 이 방법이 그나마 잘 쓰이는 듯 합니다.



이렇게 하는 것으로 위 스크린샷엣허 보인느 것처럼 원래는 data_manager.py에 보내야 하는 데이터에 기존에는 데이터 베이스 파일-이것도 원래는 csv파일의 경로인데, 이걸 선택한 경로로 바꾸어 주도록 하고, 옆에다가는 테이블의 이름인 종목코드를 입력해 주도록 합니다.




다음은 기존에 있던 RLTrader의 data_manager.py를 바꾸어 주는 과정을 들어가도록 해 봅니다. 먼저 위 스크린샷처럼 제 경우에는 sqlite3.connect()를 빼먹에서 계속해서 에러를 내는 실수를 하기는 했습니다.



일단 프로그램을 실행 시켰을 때, 위 스크린샷의 내용처럼 제대로 나오는 것을 확인할 수 있었습니다. 이렇게 하는 것으로 일단 작업이 일단락은 되었다는 생각이 듭니다.



마지막으로 모든 데이터 베이스가 나오는 것을 볼 수 있는데, 문제는 모든 데이터가인 1565열이 모두 나온다는 것인데, 이걸 여기서 학습에 필요한 데이터까지만으로 어떻게 끊을 수는 없는가 하는 생각이 듭니다. 물론 이렇게 데이터를 다 가지고 와도, 메모리에는 큰 부담은 없을지는 모르지만, 그래도 시작하면서 끊어주면 좋지 않을까 하는 생각이 듭니다.

반응형