본문 바로가기

주식

주식분석(1), 퀀트와 머신러닝(랜덤포레스트)을 이용

반응형
chatGPT 입력 명령어
판다스를 이용하여 258,259,260,261열이 23열에, 258,259,260,261열이 24열에, 258,259,260,261열이 25열에 미치는 중요도에 대해 랜덤포레스트를 이용하여 확인하고 싶은데 7열의 값이 500 이상만 훈련할수 있도록 코드 작성해줘

퀀트.csv
5.26MB

import pandas as pd
from sklearn.ensemble import RandomForestRegressor

df = pd.read_csv('/content/sample_data/퀀트.csv', error_bad_lines=False, encoding='euc-kr')
df_filled = df.fillna(0)

X = df_filled.iloc[:, [73, 260, 261]].values

y_23 = df_filled.iloc[:, 23].values
y_24 = df_filled.iloc[:, 24].values
y_25 = df_filled.iloc[:, 25].values
y_26 = df_filled.iloc[:, 26].values

# 랜덤 포레스트 모델 생성 및 학습
rf_23 = RandomForestRegressor(n_estimators=3, random_state=42)
rf_24 = RandomForestRegressor(n_estimators=3, random_state=42)
rf_25 = RandomForestRegressor(n_estimators=3, random_state=42)
rf_26 = RandomForestRegressor(n_estimators=3, random_state=42)

rf_23.fit(X, y_23)
rf_24.fit(X, y_24)
rf_25.fit(X, y_25)
rf_26.fit(X, y_26)

# 변수 중요도 확인
importance_23 = rf_23.feature_importances_
importance_24 = rf_24.feature_importances_
importance_25 = rf_25.feature_importances_
importance_26 = rf_26.feature_importances_

print("중요도 - 23열:", importance_23)
print("중요도 - 24열:", importance_24)
print("중요도 - 25열:", importance_25)
print("중요도 - 25열:", importance_26)
  • 열23 : 3개월등락률
  • 열24 : 6개월등락률
  • 열25 : 9개월등락률
  • 열258 : 22년 2Q yoy
  • 열259 : 22년 3Q yoy
  • 열260 : 22년 4Q yoy
  • 열261 : 23년 1Q yoy

 

코드 일부 수정,

널값 채우기, 경로수정

n_estimators=3 으로 지정

 

>>

73열이 23열에 미치는 중요도: [0.28408673 0.49240134 0.22351193]

260열이 24열에 미치는 중요도: [0.41005958 0.33745502 0.2524854 ]

261열이 25열에 미치는 중요도: [0.39993073 0.32409631 0.27597296]

 

 


다음에 해야 할 일

1. importance(중요도) 교차표?를 확인하여 고차원 모델 만들기

2. 바이오 및 제약, 금융을 제외하고 데이터 돌려보기 

3. 시가총액 500억 이상 회사들을 대상으로 데이터를 돌렸는데 작동 안 된듯 함

4. 랜덤포레스트 외의 다른 분류기 사용

5. 영업이익 > 매출액 증가하는 시점 추가하여 모델 돌리기

반응형