저번시간에 이어 비트코인 데이터 수집 및 1차 전처리를 완료했다.

 

지난포스팅)

https://jayindustry.tistory.com/99

 

[주가예측] 2. 비트코인 데이터수집 / 전처리

지난 포스팅은 애플 주가데이터를 받아와 LSTM,CNN를 이용한 다양한 학습과 앙상블을 진행해보았다. 이제 비트코인 데이터를 가져와, 여러가지의 Boosting모델을 사용하여 업/다운을 분류하는 작업

jayindustry.tistory.com

 

 

저번시간에는 '일봉'의 시계열 데이터를 가져왔으나,

데이터양이 너무 적어서 '1시간봉'의 시계열 데이터로 다시 로드해보았다.

 

 

이번 수집과정에서는 함수와 반복문을 사용하여 최대 1000개씩밖에 받지못하는 API 제한구조상,

반복문으로 데이터를 받아서 머지하는 과정에 초점을 두었다.

 

 

 

코드

https://github.com/seokjunHwang/DeepLearning/blob/main/%EC%A3%BC%EA%B0%80%EC%98%88%EC%B8%A1(LSTM%2CCNN...)/Try_history/10.%20Boost_%08Classifier.ipynb

 

 

 

 

 

 

1. 데이터 수집

 

가장 최신날짜로 1시간봉 1000개를 받아온다.

 

end_time을 마지막날짜로 설정하여 이전의 1000개 데이터를 가져온다.

이 때, 함수 convert_to_utc_unix를 코딩하여 datetime데이터를 unix밀리초단위로 바꾸는 함수를 구현하였다.

 

 

 

 

 

 

2. 더 많은 데이터 수집 + 전처리

 

이 후, 위 첫번째 df를 기준으로 과거 데이터를 1000개씩 반복적으로 받아온다. (API limit = 1000)

 

 

 

if 문을 사용하여, 더 이상 과거데이터가 없을 경우 break하도록 코딩하였다.

 

마지막에 datetime_proccessing코드로 unix밀리초 단위를 datetime으로 변경해주었다.

 

 

 

 

 

 

3. 머지

 

총 57개의 df가 df_list 추가되었고, 이를 모두 머지하였다.

 

datetime 컬럼 기준으로, 중복되는 행은 삭제하고, 정렬하였다.

행 기준으로 아래에 붙이는 방식으로 merge하였다.

 

2017년도부터 2024년1월까지의 데이터가 잘 머지되었다.

 

 

 

 

 

 

4. 1차 피쳐엔지니어링

 

 

아래처럼 주가와 관련없어보이는 시간데이터를 파악하였다.

openTime, closeTime, interval 컬럼이다.

 

 

위 결과에서 interval은 1시간 간격씩 텀을 두었음을 보여주는 unix단위이고, opentime과 closetime은 가격과 별 영향없는 시계열 데이터임을 알 수 있다.

 

 

 

drop !

 

 

 

 

 

5. Data Split

 

학습을 위해, 데이터를 Train, Validation, Test 3등분으로 나눈다.

여기서 사용할 모델들은 LightGBM, xgboost, catboost의 부스트 모델들이므로, 시계열 데이터의 특징을 별로 반영하지 않는걸로 알고있다. 따라서 2가지로 실험을 해볼 예정이다.

 

 

 

1. 시계열에 따라 순서대로 train : val : test로 나눈다.

2. 랜덤으로 나눈다.

 

 

 

하이퍼파라미터 튜닝없이 1번과 2번의 스플릿방법의 결과를 비교해보려고한다.

먼저 2번 랜덤으로 나눠보았다.

 

 

 

업/다운 분류가 목적이니, 타갯밸류인 0,1 컬럼을 생성하였다.

 

 

업 : 1

다운 : 2

 

 

 

그리고 train : test = 8 : 2 로 나눈 후,

train을 다시 train : val = 8 : 2 로 나누었다.

 

 

 

train, validation, test

순서대로 아래처럼 나누어졌다.

 

 

 

 

랜덤으로 잘 나누어졌다.

 

 

 

 

 

다음은 스플릿된 학습데이터로 학습을 진행시켜보고,

검증 후 결과를 1번 시계열 순서대로의 학습결과와 비교해보겠다.

+ Recent posts