기본 콘텐츠로 건너뛰기

라벨이 LinearRegression인 게시물 표시

[matplotlib]quiver()함수

[data analysis] sklearn.pipeline 적용

sklearn.pipeline 적용 Pipeline은 여러개의 측정자들(모형 클래스)을 하나로 연결하기 위해 사용할 수 있습니다. 이것은 데이터의 처리 과정 예를 들어 feature selection, normalization and classification 등의 과정을 고정된 연속 단계로 묶어서 처리 할 경우 사용됩니다. 다음은 회귀모델을 설정하기 위해서는 변수들의 표준화, 위에서 소개한 변수 선택 등의 전처리 과정이 포함될 수 있습니다. 이러한 일련의 과정들은 sklearn.pipeline.Pipeline() 클래스를 사용하여 일괄적으로 처리할 수 있습니다. 예 1) 코스피지수(kos), 코스탁지수(kq), kodex 레버리지(kl), kodex 인버스(ki), 그리고 원달러환율(WonDol)의 일일 시가, 고가, 저가, 종가(o,h,p,c)들을 설명변수로 사용하여 삼성전자(sam)의 일일 종가를 추정하는 회귀모델을 위해 설명변수를 선택합니다. 변수 선택과 회귀 모델생성을 위해 sklearn.pipeline() 클래스를 적용합니다. import numpy as np import pandas as pd from scipy import stats from sklearn import linear_model from sklearn.preprocessing import StandardScaler, MinMaxScaler import statsmodels.api as sm from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split import yfinance as yf from sklearn import feature_selection import matplotlib.pyplot as plt plt.rcParams['font.family'] ='NanumGothic' plt.rcParams['a...

[data analysis] 설명변수의 거듭제곱의 영향

설명변수의 거듭제곱의 영향 다음은 특정기간의 kospi 자료로 Open을 설명변수로 Close를 반응변수로 회귀모델을 생성한 것입니다. import numpy as np import pandas as pd from sklearn import preprocessing from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error import yfinance as yf import matplotlib.pyplot as plt st=pd.Timestamp(2024,1, 10) et=pd.Timestamp(2024, 5, 30) kos=yf.download("^KS11",st, et)[["Open","Close"]] kos.head(3) Open Close Date 2024-01-10 2563.969971 2541.979980 2024-01-11 2543.030029 2540.270020 2024-01-12 2536.550049 2525.050049 위 자료의 설명변수를 표준화하고 sklearn.linear_model.LinearRegression() 클래스를 적용하여 회귀모델을 생성합니다. ind=kos.iloc[:-1, [0]] de=kos.iloc[1:, 1] scale=preprocessing.StandardScaler().fit(ind) indN=scale.transform(ind) indN[:3] array([[-0.99893096], [-1.24235095], ...

[data analysis] 다중회귀모델의 생성

회귀모델 생성 1개 이상의 설명변수들과 1개의 반응변수를 가진 선형모델 역시 statsmodels.api.OLS() 클래스와 sklearn.linear_model() 클래스를 적용하여 구축할 수 있습니다. 이 모델의 구축과정과 평가방법은 단순회귀분석(Simple regression) 과 같습니다. 예 1) 코스피지수(kos), 코스탁지수(kq), kodex 레버리지(kl), kodex 인버스(ki), 그리고 원달러환율(WonDol)의 일일 종가들을 설명변수로 사용하여 삼성전자(sam)의 일일 종가를 추정하는 회귀모델을 구축해 봅니다. (이 자료에서 설명변수는 반응변수보다 1일 앞선 데이터 입니다.) kos kq kl ki WonDol sam Date 2023-01-10 2351.0 696.0 14440.0 4885.0 1239.0 60400.0 2023-01-11 2360.0 710.0 14525.0 4875.0 1240.0 60500.0 2023-01-12 2365.0 711.0 14580.0 4860.0 1242.0 60500.0 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ 다음은 위 자료들을 호출하고 분석에 적합하게 조절하기 위한 코드들입니다. import numpy as np import pandas as p...

[data analysis] 단순회귀분석(Simple regression)

단순회귀분석(Simple regression) 전형적인 회귀 모형은 y = ax + b와 같은 형태이며 변수 x를 y로 선형변환 하는 것으로 정의할 수 있습니다. 선형변환은 x의 변화 정도에 따라 y의 변화 정도가 같습니다. x를 설명변수 또는 독립변수 , y를 반응변수 또는 종속변수 라고 하며 x는 1개 이상일 수 있으며 단변수일 경우를 단순회귀 모형이라고 합니다. 위 식과 같이 x를 y로 이동시키는 과정에서 가장 적합한 a와 b를 결정하는 것이 회귀분석의 목적이 됩니다. 예 1) kospi 지수의 일일 주가 자료중 시가(Open)을 설명변수로 하여 종가(Close)를 추정하는 회귀모델을 작성합니다. Open Close 0 2874.50 2944.45 1 2943.67 2990.57 2 2993.34 2968.21 ⋮ ⋮ ⋮ 다음 코드는 분석을 위한 자료를 호출하기 위한 것입니다. st=pd.Timestamp(2021,1, 1) et=pd.Timestamp(2024, 5, 10) kos=fdr.DataReader('KS11',st, et)[["Open","Close"]] kos.index=range(len(kos)) kos.head(3).round(2) Open Close 0 2201.21 2175.17 1 2192.58 2176.46 2 2154.97 2155.07 통계분석을 위해 다음의 이유로 자료의 표준화(Standardization) 가 필요합니다. 데이터의 규모(scale) 축소 여러변수가 사용될 경우 변수간 발생되는 데이터의 규모를 일정하게 조정 반응변수의 표준화는 필수적이지...

[data analysis] 다항식 회귀(Polynomial Regression)

다항식 회귀(Polynomial Regression) 내용 다항식회귀? 변수의 변환 변수의 차수에 따른 변화 편향/분산 트레이드오프(Bias/Variance Tradeoff) 다항식회귀? 데이터가 비선형인 경우 선형 모델에 적합시킬 수 있습니다. 가장 간단한 형태로 데이터를 이차형식으로 변형하여 선형모델에 적용할 수 있습니다. 이러한 기법을 다항식 회귀 (polynomial regression)이라고 합니다. 예를 들어 독립변수와 반응변수의 형태가 이차형태를 가지는 인공데이터에 대해 다항식 회귀를 적용하여 봅니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt font1={'family':'nanumgothic', 'size':12, 'weight':'bold'} n=100 X=np.linspace(-2, 2, n).reshape(-1,1) y=X**2+X+2+np.random.rand(n, 1) plt.figure(dpi=100) plt.scatter(X,y, s=1) plt.xlabel("X", weight="bold") plt.ylabel("y", weight="bold") plt.show() 변수의 변환 위의 독립변수의 이차항을 생성하기 위해 sklearn.preprocessing.PloynomialFeatures(degree=2, interaction_only=False, include_bias=True) 클래스를 적용합니다. 이 클래스는 변수의 2차항과 1차항 그리고 교차항을 생성합니다. 예를 들어 2개(a, b)의 독립변수가 존재한다면 이 클래스에서 다음의 변수들이 생성됩니다. a, b → 편차항, a 2 , a, ab, b, b 2 즉, 이 클래스...