랜덤포레스트 4

[Randomforest] 10분 수익률을 이용한 주가 예측-4

아래는 모든 변수를 랜덤포레스트모델에 학습하여 나올 성능입니다. 이전 포스팅에서는 50%가 약간 넘는 수치가 나왔었는데, 다시 학습시키니 수치가 약간 달라졌네요. 학습데이터를 랜덤샘플링 했기 때문으로 보입니다. feature importance가 높은 변수들만으로 다시 학습을 시켜보겠습니다. 아래 코드를 실행하면 top_feature변수에 상위 5개의 변수가 입력됩니다. top_feature = [] num=0 for f in range(x_train.shape[1]): top_feature.append(stock_df.columns[indices][f]) num = num+1 if num>5: break print(top_feature) 1250, 1530, 1100, 1520, 1430, 1200 순..

Sysmetic trading 2023.01.13

[Randomforest] 10분 수익률을 이용한 주가 예측-3

이번 포스팅에서는 feature들의 중요도를 판단하여 x변수들을 채택하는 방법으로 모델의 성능을 높여보는 작업을 하겠습니다. 랜덤포레스트를 돌리면 모델의 변수중요도(feature importance)를 출력할 수 있습니다. feature importance는 tree를 분할하는데 얼마나 기여를 했는지에 따라 중요도를 결정합니다. importances = model.feature_importances_ std = np.std([tree.feature_importances_ for tree in model.estimators_], axis=0) indices = np.argsort(importances)[::-1] print("Feature ranking:") for f in range(x_train.sha..

Sysmetic trading 2023.01.12

[Randomforest] 10분 수익률을 이용한 주가 예측-2

이전 포스팅에서는 독립변수인 x와 종속변수인 y로 데이터를 전처리 과정을 보였습니다. 이후 진행 과정은 학습데이터와 테스트데이터를 나누어 모델을 생성 및 검증하는 것입니다. train_test_split함수를 통해 학습, 검증용 데이터를 나눌 수 있습니다. 여기서 shuffle을 통해 데이터를 섞을지 말지를 결정할 수 있습니다. 이번 실험은 시계열예측이 아니라 횡단면 예측이므로 데이터를 섞어도 무방하니 셔플을 해줍시다. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.26, random_state=0, shuffle=True) 이번엔 ..

Sysmetic trading 2023.01.11

[Randomforest] 10분 수익률을 이용한 주가 예측-1

이번 포스팅에서는 간단하게 10분 단위 수익률로 갭상승/하락을 하는 랜덤포레스트 모델을 생성해 보겠습니다. 랜덤포레스트는 분류나 회귀에 쓰이는 앙상블(esemble) 모델로 다수의 의사결정나무(decision tree)를 이용한 예측모델입니다. 금융에서 주가를 예측하는 것은 수익과 직결되므로 학계나 실무 막론하고 많이 연구가 되어왔는데요, 최근에는 머신러닝, 딥러닝이 대두되면서 더욱 연구가 활발히 진행되는 것 같습니다. 이번 실험에 쓰인 데이터는 아래와 같습니다. import pandas as pd stock_df= pd.read_csv('10mindata.csv') stock_df=stock_df.dropna() stock_df.info() 첨부된 데이터를 pandas를 통해 업로드하면 아래와 같은 데..

Sysmetic trading 2023.01.10