Python/Time Series with Python 썸네일형 리스트형 TimeSeries with Python - 차분 & 차분을 이용한 예측값 구하기 이번 포스팅에서는 데이터의 일차 차분 및 이차 차분을 구하는 법에 대해서 알아보고, 그것들을 이용한 데이터 예측값을 어떻게 구하는지 살펴본다. 차분의 중요성은 Non-Stationary Data를 Stationary Data로 바꾸는 방법중의 하나이며, 특히나 데이터의 Trend가 있을 경우 많이 사용하는 방법 중 하나이다 차분을 왜 사용하는지에 대한 내용은 ARIMA 모델을 다루면서 자세히 설명하고 지금은 포스팅의 제목의 맞게 차분과 차분을 이용한 예측값을 구하는 방법을 포스팅 하겠다. df = pd.read_csv('path', index_col = 0, parse_dates=True) df.head() df['b'].plot(figsize=(12,5),ylim=[0,100], title='Non-S.. 더보기 TimeSeries with Python _ 예측값 평가 및 Stationary & Non_Stationary Process 이번 시간에서 다룰 주제는 우선 두가지다. 첫번째: 지난 포스팅에서 예측한 값들을 평가하는 방법(즉, 얼마나 잘 예측했나)들을 소개한다. (Mean-Absolute-Error, Mean-Squared-Error, RMSE) 두번째: Stationary Process & Non - Stationary Process 세가지 주제 다 시계열에서 다루는 가장 기초적인 주제이지만, 앞으로도 계속 활용될 것이며 이것들을 명확히 알아야 앞으로의 모델링에서 어떠한 목표를 가지고 설계하는지 명확히 알 수 있기 때문에 포스팅을 한다. 첫번쨰. 예측값을 평가하는 방법 예측값을 평가하는 방법은 크게 3가지 이고, 첫번째는 예측한 모델의 값과 실제 값의 차이의 절대값의 합을 나타낸 MAE(Mean Absolute Error)인.. 더보기 TimeSeries with Python _ Holt-Winters _ Prediction(Foresasting) _ Python 이번 포스팅에서는 지난번에 다루었던 Holt-Winters Method를 이용해 train 기간 데이터에서 파라미터들을 추정하고, 추정한 파라미터들을 이용해서 예측값을 알아보고 실제값과 비교를 해보는 내용을 포스팅 하겠다. 실제 TimeSeries 뿐만 아니라 딥러닝에서도 Train Periods에서 파라미터들을 설정하고 그것들을 이용해 예측을 한 후, Test Periods에서의 실제값과 비교를 하는데, 많이 사용되는 방식이며 비슷한 흐름들이기 때문에 파이썬으로 Forecasting을 하는 방식들이 이와 유사하다고 생각하면 될 것 같다. df = pd.read_csv(path, index_col = 'Month', parse_dates=True) df.index.freq = 'MS' df.head() .. 더보기 TimeSeries with Python _ EWMA & Holt-Winters _ Python 이번 포스팅에서는 지난번 포스팅에서 언급한 EWMA 및 홀트-윈털스을 모형들을 파이썬으로 작성하는 방법의 대해서 언급한다 파이썬의 큰 장점이지만, 데이터를 어느정도 정제하고 그리고 모듈을 쓰는 방법만 안다면 쉽게 구현할 수 있기에, 사용하는 방법의 대해서만 포스팅 한다 df = pd.read_csv(path, index_col = 'Month', parse_dates=True) df.dropna(inplace=True) df.index #DatetimeIndex의 freq=None임 -> 지금 datetimeIndex가 freq가 없기에 설정을 해줌 df.index.freq= 'MS' df.index from statsmodels.tsa.holtwinters import SimpleExpSmoothing.. 더보기 TimeSeries with Python _ EWMA & Holt - Winters Methods 이론 아직 본격적인 Time Series에 대한 포스팅은 않았지만, 그래도 중요할 것 같은 2개의 이론을 소개하고, 다음 포스팅에서 파이썬으로 어떻게 구현하지에 대한 포스팅을 시작하겠다 보통 현업에서 데이터를 분석할 때, 많이 사용하는 것 중에 하나가 SMA(Simple Moving Average)다. 단순히 Window(데이터의 갯수)를 정해서 그 갯수만큼 평균을 내는것인데, 예를들어 window=6인 SMA라고 하면, 6일치의 평균을 일별데이터가 업데이트 할 때마다 계속 구하는 것이다. 가장 구하기 쉽고 직관적이라고 많이들 사용하는데, 이것의 대한 단점은 1. 최근의 Shock(데이터의 충격 = 갑자기 크게 증폭하거나 감소하는 것)을 반영할 수 없다는 점 2. Sample Period(Window)를 얼마.. 더보기 TimeSeries with Python _ ETS Model 지금까지는 시계열 데이터를 분석하기 위해 Pandas 모듈의 사용법을 익혀왔다면, 이제부터가 본격적으로 시계열의 대한 포스팅이라 할 수 있다. 보통 시계열 데이터라는것은 일반적으로 시간의 따라 어떠한 값이 나타나져있는 값(예를 들어 내가 살아온 인생동안의 몸무게)라고 할 수 있다. 이러한 시계열데이터는 크게 3가지로 구분할 수 있는데, 첫째가 Trend(추세) 두번째가 Seasonal(계절성) 그리고 세번째가 추세와 계절성으로 설명할 수 없는 Error이다. 위의 그림을 살펴봐도 전반적으로 증가하는 Trend(추세)를 띄고 있으며, 연초에는 감소하다 연말에 증가하는 계절성을 가지고 있다는 것을 알 수 있다. 시계열이란 학문은 일반적인 시계열데이터의 추세와 계절성을 제거하고, 나머지 오류가 어떠한 모형을 .. 더보기 TimeSeries with Python _ Pandas 6 _ 년별 데이터 평균, idxmax 이번 포스팅에서는 지난번에 했던것들을 복습하는 것과 idxmax를 통해 max값이 있는 인덱스를 추출하는 방법, 그리고 그것을 활용한 응용예제까지 살펴보겠다 year_data = df.resample('Y').mean() #resample 메소드를 이용해 월별 데이터 프레임에서 년별 평균들을 구할 수 있음 year_data_shift = year_data.shift(1) # 그리고 shift 메소드를 이용해 연별 평균값들의 차이를 구할 수 있음 diff_year = year_data - year_data_shift diff_year['UMTMVS'].idxmax() # 마지막으로 idxmax 메소드를 통해 연별 평균이 가장 크게 증가한 년도를 쉽게 알아볼 수 있음 그림을 살펴보면 알 수 있지만, 2008.. 더보기 TimeSeries with Python _ Pandas 5 _ info, set_index, boxplot Pandas를 사용하면서 코드가 길어지는 경우가 있다. 불러온 데이터에 DateTime있을경우, 이 DateTime을 인덱스로 설정하기 위해 억지로 칼럼들을 빼고 다시 삽입하고, 다시 인덱스로 설정하는 등.... 코드가 길어져 지져분해 보이는 경우가 있다. 그러한 것들을 방지하기 위해 info로 데이터 타입을 살펴보고, set_index로 쉽게 Date를 인덱스로 설정하며, Month별로 boxplot을 그려 전반적인 데이터의 동향을 살펴볼 수 있다. import pandas as pd df = pd.read_csv(path, encoding='utf8') df.info() # DataFrame을 구성하고 있는 데이터의 type를 확인해 볼 수 있음 df['Date'] = pd.to_datetime(df.. 더보기 이전 1 2 다음