기본 콘텐츠로 건너뛰기

6월, 2022의 게시물 표시

[ML] 결정트리(Decision Tree) 모델

[python] 전역(global) 범위

전역(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) 라고 합니다. 내장함수(built-in function) 는 이 파이썬 코어에 포함된 함수를 의미합니다. 다음 코드와 같이 내장 함수 len() 은 특별히 작용영역을 지정하지 않고 사용할 수 있으며 다른 모듈에서 생성된 객체에 대해서도 작동합니다. 즉, 내장함수는 파이썬 코어가 작동하는 모든 범위에서 작동합니다. 위 그림과 같이 파이썬의 각 객체는 모듈 단위로 이루어지며 기본적으로 객체는 모듈 안에서 동작합니다. 이러한 범위를 전역(global)범위라고 합니다. 각 모듈에 포함되어 있는 함수, 메서드, 속성등은 전역범위에서 작동합니다. len(x) 3

[data analysis]가상 데이터 만들기

가상데이터 만들기 내용 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{-

[ML]로지스틱회귀(Logistic Regression)

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

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

한국 금융자료와 외국 자료의 합병 시계열 자료는 날짜등의 시간에 따라 생산되는 자료입니다. 대표적으로 일일 주가자료는 거래일 기준으로 자료가 생산됩니다. 별도의 자료를 합치는 경우 시간이 이질적이라면 합쳐진 자료에 결측치가 포함됩니다. 이 경우 결측치를 조절하는 방법을 알아봅니다. 한국의 코스피와 환율, 외국의 지수 자료를 합쳐봅니다. 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

[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 즉, 이 클래스