전체 글 708

파이썬 SQL연동

파이썬과 mysql연동 파이썬과 mysql을 연동해서 파이썬에서 데이터베이스에 접근하고 쿼리문등을 실행해 본다. 코드 1. 필요 라이브러리 다운 from sqlalchemy import create_engine import pymysql pymysql.install_as_MySQLdb() 2. 파라미터 설정 # DB이름 설정 db_name = '' # mysql 아이디 db_id = '개인id' # mysql db ip (로컬이면 localhost) db_ip = 'localhost' # mysql db 패스워드 db_passwd = 'pw' # db port db_port = '3306' * DB이름? * 개인 id? mysql command line을 실행하고 터미널에서 아래와 같이 입력하면 user..

DB/SQL 2021.02.10

직접만든 파이썬 package, module 불러오기

설명 파이참 환경에서 직접 만든 package, module을 import해서 쓰는법을 알아본다. module : 함수, 변수들로 구성된 단위 package : 여러 모듈들로 구성된 단위 디렉토리 상태 "test"라는 폴더에 파이참으로 프로젝트를 만들고 그 아래 다음과 같이 디렉토리를 구성하였다. 함수는 파일 이름에 f를 붙였다 그리고 test.py에서 각 모듈 및 패키지를 import한다 같은디렉토리에 있는 모듈 임포트 같은 디렉토리에 있는 모듈을 임포트 할때는 다음과 같이 한다 test.py from plusminus import plusf,minusf print(plusf(3,4)) print(minusf(3,4)) 같은디렉토리에 있는 폴더(패키지) 임포트 같은 디렉토리에 있는 폴더(패키지)를 임포..

git diff란?

git diff? git diff는 파일을 수정했을 때 수정내용을 보여 주는 명령어이다. commit을 하기 전에는 git diff 명령어로 바로 볼 수 있다 commit을 한 다음에는 commit number를 이용해서 git diff A B로 볼 수 있다 (A,B는 커밋넘버) 예시 1. 원본파일 만들기 2. add로 추가 3. bye로 수정 4. git diff로 바뀐것 확인 -가 바뀌기전 +가 바뀐후 5. git add,commit 후 diff를 하면? 아무것도 없음 6. commit 넘버를 이용하여 두 commit상태의 차이를 확인가능

CLI/깃허브 2021.02.06

error: failed to push some refs to 에러

error:failed to push some refs to git push를 했을때 아래와 같이 error: failed to push some refs to 에러가 발생하는 경우가 있다 이는 원격저장소(github)에 내 로컬(내컴퓨터)에는 없는 파일이 있을 때 내 파일을 push 할 면 발생하는 오류이다. 이럴땐 원격저장소에서 내 로컬에 저장하지 않은 파일을 pull한 후 원격저장소에 다시 push를 해야한다. 아래의 예시에서 상황을 확인하고 해결책을 알아보자. 상황 설명 및 해결 1. 상황 내 컴퓨터(local)에서 f1.py파일을 수정하였다. 이후 github에 수정한 내용을 push하려고 했지만, 팀원이 f2.py 파일을 올려놨다. 이 경우 나의 push가 제한된다. 2. pull 먼저 원격저..

CLI/깃허브 2021.02.06

시계열 데이터를 RNN으로 분석할 때 데이터의 형태(차원)

입력데이터의 형태(차원)RNN모델에 시계열 데이터를 입력할 때 입력데이터의 형태는 3차원이 된다.(학습할 데이터의 수, sequence, x값의 개수)데이터의 수 : 학습할 데이터의 개수 (데이터의 수-sequnce)sequence : 특정값을 구하기 위해 반영할 시간의 길이x값의 개수 : 사용할 독립변수의 개수아래의 예시에서 어떻게 이러한 모양이 나오는지 알아 본다.이해를 돕기위해 데이터의 수는 빨간색, sequence는 초록색, x값의 개수는 파란색으로 표시한다 자전거 이용률 예시season(계절), holdiay(방학여부), workingday(평일여부)에 따른 자전거 사용횟수(count)가 시계열적으로 나타나있는 데이터가 있다.데이터의 개수는 총 13128개이다.X의 column이 3개(seaso..

RNN,LSTM,GRU를 이용한 비트코인 분석

RNN,LSTM,GRU1. RNN이전의 데이터가 다음 데이터에 영향을 준다.시계열 분석에 유용하다 2. LSTMRNN의 단기기억문제 해결책으로 고안됨 (시간이 많이 지난 데이터의 영향력이 너무 낮아지는 문제) 3. GRULSTM구조보다 간결하게 변경함, 빠른 속도와 유사한 성능 평가 함수### Evaluation of 1 pair of setdef evaluation(Y_real, Y_pred, graph_on=False): loss_length = len(Y_real.values.flatten()) - len(Y_pred) if loss_length != 0: Y_real = Y_real[loss_length:] if graph_on == True: pd.con..

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가 된다. 이를 아래의 예시를 통해 ..