데이터분석/분석-지도학습 18

prophet cross_validation 사용법

cross_validation from fbprophet.diagnostics import cross_validation import fbprophet as Prophet model = Prophet.Prophet().fit(data) df_cv = cross_validation(model, initial='730 days', period='180 days',horizon = '365 days') 모델을 학습한 후 cross_validation으로 체크한다. 이때 parameter값들 initial, peroid, horizion의 의미를 정리한다. 공식문서 다음과 같이 정의 되어있다. This cross validation procedure can be done automatically for a ra..

callback을 이용하여 tensorflow 모델을 학습중에 저장하기

용도 모델을 학습할 때 학습 중간에 프로그램이 오류가 난다면 지금까지 학습했던 가중치를 모두 잃게되는 일이 발생한다. 모델을 학습 중간중간마다 저장하면 프로그램이 끊기더라도 체크포인트부터 다시 시작할 수 있다. 텐소플로우의 콜백을 이용하여 모델을 중간중간마다 저장하고 다시 로드해서 학습하는 법을 알아본다. 모델 저장 # 1. 저장할 폴더와 형식을 선택 folder_directory = "체크포인트를 저장할 폴더" checkPoint_path = folder_directory+"/model_{epoch}.ckpt" # 저장할 당시 epoch가 파일이름이 된다. # 2. 콜백 변수를 생성 my_period = 몇번의 학습마다 저장할 것인가? cp_callback = tf.keras.callbacks.Mode..

회귀분석의 가정

1. 선형성 독립변수가 변화할 때 종속변수가 일정한 크기로 변화=> 선형성을 만족한다고 볼 수 있다. 2. 독립성 잔차와 독립변수의 값이 서로 독립해야함 3. 등분산성 잔차의 분산이 독립변수와 무관하게 일정 4. 정규성 잔차항이 정규분포를 띠어야 한다 (Q-Q플랏에서 우상향 하는 직선의 형태 띠어야함) 5. 비상관성 잔차끼리 독립이면 비상관성 (durbin-watson 통계량으로 확인)

[빅데이터분석기사,adp] 서포트벡터머신

용어 1. 서포트벡터 : 결정경계와가장 가까운 데이터 2 마진 : 결정경계와 군집별 서포트벡터 사이의 거리의 합(각 군집의 서포트벡터와 결정경계사이의 거리는 모두 같다) 3. 여유변수 E(입실론) : 1보다 크면 결정경계 넘어감, 0~1이면 결정경계와 서포터벡터사이, 0이면 서포터벡터 4. c : 엄격한 정도 => c가 클수록 하드마진 커널기법 선형적으로 구분할 수 없는 데이터를 고차원으로 보내서 구분할 수 있게 하는것 장단점 1. 장점 (1) 데이터가 희소할 때 효과적 (2) 연산량 적음 (3) 비선형도 커널기법을 이용하여 분류 2. 단점 (1) 해석어려움 (2) 파라미터 조절위해 많은 테스트 필요 (3) 전처리가 매우 중요

holt-winter 선형추세+계절알고리즘 #비선형적 계절성 추정

holt-winter 알고리즘 비선형적 계절성을 추정하는데 사용한다. (1) additive seasonal meathod (2) multiplicative seasonal meathod 코드 import pandas as pd from statsmodels.tsa.api import ExponentialSmoothing import matplotlib.pyplot as plt location = './Data/BikeSharingDemand/Bike_Sharing_Demand_Full.csv' raw_all = pd.read_csv(location) # Holt-Winter's Seasonal target = raw_all.loc[:24*7*2, 'count'] target.plot(marker='o'..

공적분 모형 #삼성전자우와 삼성전자 주식의 공적분 판단 #페어트레이딩

공적분 모형 두 비정상성 시계열을 선형조합 했을 때 시계열의 적분 차수가 낮아지거나 정상상태가 되는 경우 * 적분차수 : 정상성이 되기까지 차분해야 하는 횟수 Y1의 적분차수가 1이고, Y2의 적분차수가 2이다. 이때 Y1과 Y2를 결합한 모형의 적분차수가 2(=max(y1 적분차수,y2적분차수)) 미만이 되면 Y1과 Y2는 공적분 상태라고 한다. 공적분 판별 VECM(Vector Error Correction Model)모형을 이용한다 위의 식을 통해 계산하고 이때 가설검정은 아래와 같이 해석한다 귀무가설 : 공적분 특성 없다 대립가설 : 공적분 특성 있다. 따라서 p-value가 유의수준보다 크면 공적분 특성이 있다고 판단한다. 삼성전자우와 삼성전자 주식의 공적분 판단실습 (1) 데이터로딩 # 데이터..

그래인저 인과관계 모형 #삼성전자 주식과 삼성전자우 주식의 인과관계 를 통한 실습

그래인저 인과관계 모형(granger cauality model) (1) 의미 X라는 사건과 Y라는 사건이 서로 인과관계가 있는지 확인하는 모형. 어떤 현상의 예측에 있어서 다른 정보를 이용하는 것이 얼마나 유의미한지 나타내는 척도. (2) 수행 순서 1. 사건 X와 Y를 설정한다. 2. X->Y일때의 가설검정을 수행한다. 3. Y->X일때의 가설검정을 수행한다. *가설검정 4. 결과해석 X->Y가 유의미하고 Y->X가 유의미하지 않으면 인과관계 (X->Y) 성립 Y->X가 유의미하고 X->Y가 유의미하지 않으면 인과관계 (Y->X) 성립 실습 삼성전자 우선주와, 삼성전자 간의 인과관계를 그래인저 모형을 통해 알아본다. (1) 데이터로딩 # 데이터 로딩 import pandas_datareader.da..

다변량 시계열 알고리즘 VAR

VAR알고리즘 벡터자기회귀(VAR) : 단변량 자기회귀의 일반적인 형태로서 여러개의 Y값이 시차에 따라 서로 영향을 주는 식(종속변수 y가 여러개) (1) var(1) : 시차 1까지 식에 포함시킴 (2) var(2) : 시차 2까지 식에 포함시킴 코드 예시 - 데이터 로딩 및 확인 import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels import statsmodels.api as sm # 데이터 로딩 raw = sm.datasets.macrodata.load_pandas().data dates_info = raw[['year', 'quarter']].astype(int).astype(str) ra..

fbprophet 라이브러리를 이용한 시계열 분석

페이스북에서 개발한 fbprophet을 이용하여 시계열 분석을 수행한다. 1. 필요 라이브러리 임포트 import timeit start = timeit.default_timer() from fbprophet import Prophet from fbprophet.plot import plot_plotly, plot_components_plotly from fbprophet.plot import add_changepoints_to_plot 2. 데이터 전처리 (1) 데이터 합치기 # Rearrange of Data Y_train_feR_prophet = Y_train_feR.reset_index() Y_train_feR_prophet.columns = ['ds', 'y'] YX_train_prophet =..

SARIMAX

1. SARIMAX의 의미 ARIMAX 모형에서 계절성 패턴을 추가한 모델. trend에 대하여 ARIMA를 수행하고, 계절성에 대해서 추가적으로 ARIMA를 수행한것으로 해석하면 된다. 2. 파라미터 (1) 파라미터 설명 총 7개의 파라미터가 존재한다. trend에 대한 부분(p,d,q)과 seasonal에 대한 부분(P,D,Q,m)으로 나뉜다. (2) 파라미터 선택방법 위와 같은 데이터에가 있을때 파라미터를 선택한는 방법은 아래와 같다. p : pacf에서 수렴하기 직전값. ( =2 ) d : adf테스트 및 추세의 가시적 확인으로 추세여부 확인( =1 ) q : acf에서 수렴하기 직전값 ( =3 ) P : pacf에서 계절성이 주기가 몇 번 반복 됐는지 확인 ( =3 ) D : 계절성이 있는지 확..

적분선형확률과정 ARIMA

1. ARIMA 분석 ARMA분석은 데이터에 추세가 있고 이 추세를 없애기 위해 ARMA에 (추세)차분을 추가로 적용한 상태를 말한다. (ARIMA = ARMA+차분) 즉 ARIMA(p,d,q)모델은 Y_t대신 (1-L)^d*Y_t 가 대입된 형태이다. acf결과 추세로 인한 비정상성이 보이고, 차분의 필요성이 있을 때 ARIMA(차분+ARMA적합) 분석을 수행한다. 2. 모수추정 ARMA와 마찬가지로 ACF와 PACF그래프를 보고 모수를 추정한다. 대략 아래와 같다. 3. 코드 import numpy as np import statsmodels.api as sm import matplotlib.pyplot as plt # 2차누적/1차누적/미누적 데이터생성 및 적분차수 이해 np.random.seed(..

AR, MA, ARMA, ARMAX

시계열 회귀분석의 종류인 AR, MA, ARMA 분석에 대해서 알아보고 실습을 진행해 본다. 1. AR, MA (1) AR(p) model Y_t가 Y_t의 p기 이전까지의 값에 의해 설명되는 모델 (2) MA(q) model Y_t가 현재영향(e_t)으로 부터 과거 q기 전까지 영향(e_t-q)에 의해 설명되는 모델 2. ARMA AR(p)와 MA(q)의 선형조합. 3. 파라미터 p,q는 어떻게 찾는가? AR과 MA를 이용하여 분석을 수행하기 위해서는 파라미터 p,q값을 분석자가 결정해야 한다. 이 파라미터를 찾는 방법은 ACF와 PACF를 사용한다. AR의 경우 PACF그래프에서 수렴하기 직전 마지막값이 p가 되고, MA의 경우 ACF그래프에서 수렴하기 직전값이 q가 된다. 이를 아래의 예시를 통해 ..

시계열 회귀분석 과정

아래와 같은 process를 가지는 시계열 회귀분석 및 머신러닝 과정을 정리한다. 1. 변수추출가용변수들을 이용해서 시간변수를 년, 월, 일, 요일, 시, 분, 초 등으로 분해하거나, 추세,계절성,잔차로 분해하여 파생변수를 만드는 행위sosoeasy.tistory.com/382각종 feature engineering후 시계열 회귀분석 하기각종 feature engineering을 수행한 후 회귀분석을 통해 시계열데이터를 분석해 본다 non_feature engineering과의 차이도 알아본다. 1. 필요한 라이브러리 다운 # Ignore the warnings # 버전이 바뀌었을때 발생..sosoeasy.tistory.com 2. 데이터 분할시계열 데이터를 train set, test set으로 나누기..

statsmodels.api를 이용한 시계열 회귀분석

sklearn의 statsmodels.api 함수를 이용하여 OLS방식으로 회귀분석을 수행한다. - data import statsmodels.api as sm - 데이터 분할 함수 구현 # 시계열데이터 분할 함수 def datasplit_ts(raw, Y_colname, X_colname, criteria): raw_train = raw.loc[raw.index = criteria,:] Y_train = raw_train[Y_colname] X_train = raw_train[X_colname] Y_test = raw_test[Y_colname] X_test = raw_test[X_colname] print('Train_si..

나이브베이즈 분류 #나이브 베이즈#확률통계

1. 나이브 베이즈 확률 def main(): sensitivity = float(input()) prior_prob = float(input()) false_alarm = float(input()) print("%.2lf%%" % (100 * mammogram_test(sensitivity, prior_prob, false_alarm))) def mammogram_test(sensitivity, prior_prob, false_alarm): p_a1_b1 = sensitivity # p(A = 1 | B = 1) p_b1 = prior_prob # p(B = 1) p_b0 = 1-prior_prob # p(B = 0) p_a1_b0 = false_alarm # p(A = 1|B = 0) p_a1 = p..

회귀분석 #사이킷런#넘파이#numpy#scikit-learn

1. 점찍기 x,y점들을 matplot라이브러리를 이용하여 점찍기 # [점그리기] import matplotlib.pyplot as plt import numpy as np # 1. x,y값 X = [8.70153760, 3.90825773, 1.89362433, 3.28730045, 7.39333004, 2.98984649, 2.25757240, 9.84450732, 9.94589513, 5.48321616] Y = [5.64413093, 3.75876583, 3.87233310, 4.40990425, 6.43845020, 4.02827829, 2.26105955, 7.15768995, 6.29097441, 5.19692852] plt.scatter(X, Y) # (x, y) 점그리기 plt.show(..