기본 콘텐츠로 건너뛰기

6월, 2022의 게시물 표시

통계관련 함수와 메서드 사전

A B C d E F G H I K L M N O P Q R S T U V W Z A statsmodels.ap.stats.anova_lm(x) statsmodels.formula.api.ols 에 의해 생성되는 모형 즉, 클래스 인스턴스(x)를 인수로 받아 anova를 실행합니다. np.argsort(x, axis=-1, kind=None) 객체 x를 정렬할 경우 각 값에 대응하는 인덱스를 반환합니다. Axis는 기준 축을 지정하기 위한 매개변수로서 정렬의 방향을 조정할 수 있음(-1은 기본값으로 마지막 축) pandas.Series.autocorr(lag=1) lag에 전달한 지연수에 따른 값들 사이의 자기상관을 계산 B scipy.stats.bernoulli(x, p) 베르누이분포에 관련된 통계량을 계산하기 위한 클래스를 생성합니다. x: 랜덤변수 p: 단일 시행에서의 확률 scipy.stats.binom(x, n, p) 이항분포에 관련된 통계량을 계산하기 위한 클래스를 생성합니다. x: 랜덤변수 n: 총 시행횟수 p: 단일 시행에서의 확률 C scipy.stats.chi2.pdf(x, df, loc=0, scale=1) 카이제곱분포의 확률밀도함수를 계산 $$f(x, k) =\frac{1}{2^{\frac{k}{2}−1}Γ(\frac{k}{2})}x^{k−1}\exp\left(−\frac{x^2}{2}\right)$$ x: 확률변수 df: 자유도 pd.concat(objs, axis=0, join=’outer’, …) 두 개이상의 객체를 결합한 새로운 객체를 반환. objs: Series, DataFrame 객체. Axis=0은 행단위 즉, 열 방향으로 결합, Axis=1은 열단위 즉, 행 방향으

객체의 작동범위

내용 전역(global) 전역변수와 지역변수 1급 객체와 변수의 영역 객체의 작동범위 전역(global) 파이썬에서 객체의 이름에 객체를 할당하면 객체의 주소가 할당되어 이름공간에 저장됩니다. 저장된 객체이름이 객체를 참조하는 것으로 이 상태를 연결(binding)되었다고 표현합니다. 기본적으로 바인딩은 모듈단위로 이루어집니다. 파이썬은 다양한 라이브러리(패키지, 모듈)들이 존재합니다. 파이썬 자체가 가지는 내장함수, 속성을 제외하고 모듈의 속성, 함수들은 그 모듈내에서만 작동됩니다. 예를 들어 numpy는 배열을 다루기 위해 특화된 파이썬 패키지입니다. 이 패키지의 array()함수는 배열을 생성하기 위한 함수로서 다음과 같이 그 패키지를 장착한 뒤에 함수가 작동할 영역을 지정해 주어야 합니다. import numpy as np x=np.array([1,2,3]);x array([1, 2, 3]) 다음과 같이 지정하지 않을 경우 동작하지 않습니다. -y=array([1,2,3]); y NameError: name 'array' is not defined 이러한 모듈을 장착할 수 있는 기본 파이썬을 파이썬 코어(core)라고 하며 파이썬 내장함수라고 하면 이 파이썬 코어에 포함된 함수를 의미합니다. 다음 코드와 같이 내장 함수 len()은 특별히 작용영역을 지정하지 않고 사용할 수 있으며 다른 모듈에서 생성된 객체에 대해서도 작동합니다. 즉, 내장함수는 파이썬 코어가 작동하는 모든 범위에서 작동합니다. 위 그림과 같이 파이썬의 각 객체는 모듈 단위로 이루어지며 기본적으로 객체는 모듈 안에서 동작합니다. 이러한 범위를 전역(global)범위라고 합니다. 각 모듈에 포함되어 있는 함수, 메서드, 속성등은 전역범위에서 작동합니다. -len(x) 3 전역변수와 지역변수 객체에 이름을 부여하는 변수의 경우는 어떨까요? 특히 함수나 클래스에서의 특정한 변수는 일정한 범위에서만 작동 가능하도록 설정할 수 있습니

가상 데이터 만들기

내용 make_classification make_blobs make_moons make_gaussian_quantiles 가상데이터 만들기 make_classification sklearn.datasets.make_classification() 함수는 분류용 가상 데이터를 생성합니다. 인수 n_samples : 표본 데이터의 수, 디폴트 100 n_features : 독립 변수의 수, 디폴트 20 n_informative : 독립 변수 중 종속 변수와 상관 관계가 있는 성분의 수, 디폴트 2 n_redundant : 독립 변수 중 다른 독립 변수의 선형 조합으로 나타나는 성분의 수, 디폴트 2 n_repeated : 독립 변수 중 단순 중복된 성분의 수, 디폴트 0 n_classes : 종속 변수의 클래스 수, 디폴트 2 n_clusters_per_class : 클래스 당 클러스터의 수, 디폴트 2 weights : 각 클래스에 할당된 표본 수 random_state : 난수 발생 시드 반환값 X : [n_samples, n_features] 크기의 배열, 독립 변수 y : [n_samples] 크기의 배열, 종속 변수 위 함수에서 인수의 관계는 다음을 만족하여야 합니다. (n_classes) × (n_clusters_per_class) ≤ 2 (n_informative) import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns font1={'size':11, 'weight':'bold'} font2={'family':'nanumgothic', 'size':11,

softmax 모델(Softmax Regression)

내용 Softmax 회귀 모델 비용함수 모델 생성 Softmax Regression Softmax 회귀 모델 데이터를 두 개의 클래스로 구분하기 위한 예측 방법인 로지스틱 회귀는 2개 이상의 클래스로 분류하기 위해 softmax 방법으로 일반화 할 수 있습니다. 이 방법을 softmax 회귀 또는 다중 로지스틱 회귀 (multinomial Losgistic regression)이라고 합니다. 이 모델은 우선적으로 각 인스턴스에 대해 식 1을 적용합니다. 이것은 그 인스턴스의 각 클래스에 대한 점수를 나타냅니다. 다음으로 식 2의 softmax 함수를 사용하여 각 클래스에 포함될 확률을 추정합니다. $$\begin{equation}\tag{1}s_k(x)=x^T\theta^{(k)}\end{equation}$$ 각 클래스 k는 자신의 가중치벡터 θ (k) 를 가집니다. 예를 들어 3개의 특성(독립변수)과 3개의 클래스들(A, B, C)를 가진 라벨(반응변수)에 대해 다음과 같이 각 인스턴스(샘플)의 점수를 계산할 수 있습니다. $$\begin{align}&\text{- A or not}\\ &\begin{bmatrix} W_{A1} &W_{A2}&W_{A3} \end{bmatrix}\begin{bmatrix} x_1\\x_2\\x_3 \end{bmatrix} = \begin{bmatrix} W_{A1}x_1+W_{A2}x_2+W_{A3}x_3 \end{bmatrix}=s(x)_A \\ &\text{- B or not}\\ &\begin{bmatrix} W_{B1} &W_{B2}&W_{B3} \end{bmatrix} \begin{bmatrix} x_1\\x_2\\x_3 \end{bmatrix} = \begin{bmatrix} W_{B1}x_1+W_{B2}x_2+W_{B3}x_3 \end{bmatrix}=s(x)_B\\ &\text{-

로지스틱회귀(Logistic Regression)

내용 로지스틱회귀 비용함수 LogisticRegression() 결정경계 주가 자료에 적용 로지스틱회귀(Logistic Regression) 로지스틱회귀 로지스틱 회귀분석은 독립변수(특성, 설명변수)에 대해 반응변수(라벨)를 로짓변수 (logit variavble, 반응변수의 발생 확률의 자연로그)로 변환한 후 인스턴스(smaple)가 두 개의 클래스로 구분된 라벨(반응변수) 중에 특정한 클래스에 속하는 확률(최대우도)을 추정하기 위해 사용됩니다. 그러므로 이 회귀 모델은 binary classificatier를 구축하게 됩니다. 선형회귀와 유사하게 로지스틱회귀 역시 입력 변수들과 가중치들의 곱이 계산됩니다. 그러나 선형회귀의 경우 이 곱의 결과가 직접적으로 사용되는 것에 비해 로지스틱 회귀의 경우는 시그모이드 함수 (sigmoid function, σ(·))을 통해 [0, 1] 사이의 값으로 변환시킵니다. 즉, 식 1과 같은 연산에 의해 인스턴스의 결과(확률)가 계산됩니다. $$\begin{align}\tag{1} &\hat{p}=h_\beta(x)=\sigma\left(x^T\beta\right)\\ &t=x^T\beta\\ \tag{2}&\sigma(t)=\frac{1}{1+\exp(-t)}\end{align}$$ 시그모이드 함수(식 2)는 변수와 가중치의 곱의 결과를 0과 1사이의 값으로 변환합니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt import FinanceDataReader as fdr from mpl_toolkits.mplot3d import Axes3D font1={'size':11, 'weight':'bold'} def sigmoid(x): return 1/(1+np.exp(-x)) t=np.linsp

정규화된 모델: Lasso, Elastic Net model

내용 Lasso model LassoCV() Elastic Net model 정규화된 모델: Lasso, Elastic Net model 정규화된 모델: Lasso model Lasso(Least Absolute Shrinkage and Selection Operator Regression)은 Ridge 모델 과 같이 선형회귀의 정규화된 모델입니다. 이 모델은 정규화를 위해 l 1 norm을 사용하며 lasso 모델의 비용함수는 식 1과 같습니다. $$\begin{equation}\tag{1}J(\beta)=MSE(\beta)+\lambda \sum^p_{i=1}\vert \beta_i \vert\end{equation}$$ 식 1에서 p는 변수의 수입니다. sklearn의 다음 클래스를 사용하여 lasso 모델을 생성할 수 있습니다. 이 클래스의 α는 λ와 같습니다. class sklearn.linear_model.Lasso(alpha=1.0, *, fit_intercept=True, ~~) 이 함수에 전달하는 반응변수(label)은 1차원 벡터 형태이어야 합니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.linear_model import Ridge, Lasso, RidgeCV, LassoCV import FinanceDataReader as fdr 이 모델을 구축하기 위한 자료는 FinanceDataReader.DataReader() 함수를 사용하여 환율과 미국의 주요지수, 코스피 지수의 데이터를 호출하였습니다. st=pd.Timestamp(2010,3, 1) et=pd.Timestamp(2022, 6, 7) nme={'exchg':'USD/KRW','dj':"DJI",'n

한국과 외국의 시계열 자료의 합병

한국 금융자료와 외국 자료의 합병 시계열 자료는 날짜등의 시간에 따라 생산되는 자료입니다. 대표적으로 일일 주가자료는 거래일 기준으로 자료가 생산됩니다. 별도의 자료를 합치는 경우 시간이 이질적이라면 합쳐진 자료에 결측치가 포함됩니다. 이 경우 결측치를 조절하는 방법을 알아봅니다. 한국의 코스피와 환율, 외국의 지수 자료를 합쳐봅니다. import numpy as np import pandas as pd import FinanceDataReader as fdr 지수명 코스피 환율 다우 나스탁 필라델피아반도체 변동성(미국) 코드명 KS11 USD/KRW DJI IXIC SOXX VIX 코스피 지수의 모든 변수(Open, High, Low, Close, Volume, Change)와 다른 지수들의 종가(Close)를 호출하였습니다. 이 호출은 FinanceDataReader 패키지의 DataReader() 함수를 적용하였습니다. st=pd.Timestamp(2010,3, 1) et=pd.Timestamp(2022, 6, 4) nme={'exchg':'USD/KRW','dj':"DJI",'nasd':'IXIC','soxx':"SOXX", 'vix':'VIX'} kos=fdr.DataReader('KS11', st, et) stock={} for i, j in zip(nme.keys(), nme.values()): stock[i]=fdr.DataReader(j, st, et)['Close'] stock=pd.DataFrame(stock.values(), index=stock.keys()).T kos.tail(3) Close Open High Low Volume Change Date 2022-05-31 2

다항식 회귀(Polynomial Regression)

내용 다항식회귀? 변수의 변환 변수의 차수에 따른 변화 편향/분산 트레이드오프(Bias/Variance Tradeoff) 다항식 회귀(Polynomial Regression) 다항식회귀? 데이터가 비선형인 경우 선형 모델에 적합시킬 수 있습니다. 가장 간단한 형태로 데이터를 이차형식으로 변형하여 선형모델에 적용할 수 있습니다. 이러한 기법을 다항식 회귀 (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 즉, 이 클래스에

이차형식(Quadratic forms)

내용 이차형식(Quadratic forms) 이차형식의 분류 제한된 최적화(Constrained Optimization) 이차형식(Quadratic forms) 이차형식(Quadratic forms) ax 2 + bxy + cy 2 과 같은 이차식은 식 1과 같이 행렬 형태로 나타낼 수 있습니다. 즉, $\mathbb{R}^n$차원에서 이차 형태는 함수 Q로 정의로 됩니다. $$\begin{equation}\tag{1} Q(x) = x^TAx \end{equation}$$ 식 1에서 A는 대칭행렬을 나타냅니다. 이 행렬의 대각원소들은 2차항의 계수이며 대각 외 원소들의 합은 1차 항들의 계수가 됩니다. 예를 들어 이차식의 형태 ax 2 +bxy +cx 2 는 식 2와 같이 행렬 형태로 나타낼 수 있습니다. $$\begin{equation}\tag{2} ax^2 + bxy + cy^2 \Leftrightarrow \begin{bmatrix} a&\frac{b}{2}\\\frac{b}{2}&c \end{bmatrix} \end{equation}$$ 이차식을 코드로 나타내기 위해서 기호(미지수)를 숫자와 같이 고려할 수 있는 sympy 패키지를 적용하였습니다. 이 패키지의 symbols() 함수는 기호를 미지수로 지정할 수 있습니다. 예)  대각 행렬 A를 이차 형태로 나타내면 다음과 같습니다. \[A=\begin{bmatrix} 4 & 0 \\ 0 & 3 \end{bmatrix}\] import numpy as np import numpy.linalg as la import sympy as sp x1,x2=sp.symbols("x1,x2") X=sp.Matrix(2,1, [x1, x2]) X $\color{navy}{\left[\begin{matrix}x_{1}\\x_{2}\end{matrix}\right]}$ A=s