본문 바로가기
TIL

내배캠 TIL 45일차

by ColorConeHead 2024. 3. 4.
반응형

실전 프로젝트 관련

1. Pandas


이동평균과 차분을 위한 메서드를 검색했다.

temp['SMA_120days'] = temp['Close'].rolling(window=120).mean().round()   
temp['profit'] = ((temp['Close'] - temp['Close'].shift(1)) / temp['Close'].shift(1))*100​

rolling(window)를 통해 원하는 단위의 구간을 설정하여 이동평균을 낸다.
shift()를 통해 원하는만큼 lag 오퍼레이터를 실행한다.

 

2. seaborn


prophet 모델에 내장되어 있는 plot을 사용할 수 없기에
비슷하게 구현하려 했다.

신뢰구간이 있을 때, fill_between 메서드가 굉장히 매력적이다.
data = df2[df2['Name'] == 'Apple']

plt.figure(figsize=(10, 5))
plt.fill_between(x=data['Date'], y1=data['yhat_lower'], y2=data['yhat_upper'], color='lightblue')
sns.lineplot(data=data, x='Date', y='Close', color='black')
sns.lineplot(data=data, x='Date', y='yhat', color='blue')

plt.title('APPLE')​

 

 

3. prophet


prophet에서의 yhat과 실제 데이터를 기반으로
sklearn.mean_squared_error가 낮게 나오도록
하이퍼 파라미터를 조정했다.

stocks = {
    'AAPL':'Apple',
    'AMZN':'Amazon',
    'MSFT':'Microsoft'}

df2 = pd.DataFrame()

for name in stocks.values():
    temp = df[df['Name'] == name]
    temp = temp.rename(columns={'Date':'ds', 'Close':'y'})
    
    model_prophet = Prophet(changepoint_prior_scale=0.2, daily_seasonality=True, seasonality_prior_scale=15)
    model_prophet.add_country_holidays(country_name='US')
    model_prophet.fit(temp[['ds', 'y']])
    
    fcast_time = 365
    df_forecast = model_prophet.make_future_dataframe(periods=fcast_time, freq='D')
    df_forecast = model_prophet.predict(df_forecast)
    
    temp = pd.merge(temp, df_forecast, how='outer', on='ds')
    temp = temp.rename(columns={'ds':'Date', 'y':'Close'})
    temp['Name'] = np.array([name for _ in range(len(temp))]).reshape(len(temp), -1)
    df2 = pd.concat([df2, temp], axis=0)​



df에서 각 종목별로 모델링하여 예측을 실행하기 위한 반복문이다.

몇번의 반복결과

changepoint_prior_scale=0.2(0.15)
seasonality_prior_scale=15(10)
model_prophet.add_country_holidays(country_name='US')


으로 조정했다(괄호는 디폴트 또는 가이드라인에 제시된 값)
또한 휴일에 관한 요소도 추가하였다.
반응형

'TIL' 카테고리의 다른 글

내배캠 TIL 47일차  (2) 2024.03.08
내배캠 TIL 46일차  (0) 2024.03.05
내배캠 TIL 44일차  (1) 2024.02.29
내배캠 TIL 43일차  (1) 2024.02.27
내배캠 TIL 42일차  (0) 2024.02.26