기본 콘텐츠로 건너뛰기

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

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은 열단위 즉, 행 방향으

함수의 변화 경향 작성

$\Delta x, \; \Delta y$ 그리기 $\Delta x, \; \Delta y$ 그리기 다음 그림과 같이 곡선 그래프에 대한 일정한 구간에서 x축과 y축에서의 변화량을 나타내기 위한 그림을 작성합니다. 위 그림에서 곡선의 함수는 sympy 패키지를 사용하여 생성합니다. 다음은 $y=x^3$를 생성하기 위한 코드입니다. x=symbols('x') f=x**3; f $\quad \color{navy}{\scriptstyle x^3}$ 이 함수의 그래프를 작성하면 다음과 같습니다. a=np.linspace(-3, 3, 100) b=[float(f.subs(x, i)) for i in a] plt.figure(dpi=100) plt.plot(a, b, label=r'$\mathbf{x^3}$') plt.show() 위 함수에서 소구간들을 구분하고 각 구간에서 다음 그림과 같이 작성합니다. plt.figure(dpi=100) a1=np.linspace(-3, 3, 10) b1=[float(f.subs(x, i)) for i in a] for i in range(1, 10): plt.plot([a1[i-1], a1[i]], [b1[i-1], b1[i-1]]) plt.plot([a1[i], a1[i]], [b1[i-1], b1[i]]) plt.show() 위 두 그래프를 결합하기 위해 다음 함수를 작성합니다. 이 결과는 첫번째 그래프가 됩니다. def deltaFigure(x, x1, func, symbol): x=x y=[float(func.subs(symbol, i)) for i in x] x1=x1 y1=[float(func.subs(symbol, i)) for i in x1] plt.plot(x, y) n=0 for i in range(1, len(x1)): if i==1: plt.p

미분방정식이란?

미분방정식(Differential Equation) 미분방정식이란 미분(Ordinary differential) 및 편미분(Partial differential) 방정식 선형미분방정식(Linear Differential Equations) 암시적/명시적 해(implicity/expliity solution) 미분방정식이란 미분 방정식은 미분을 포함하는 모든 방정식(상미분 또는 편미분)입니다. 모두가 알고 있는 미분 방정식이 하나 있는데, 바로 뉴턴의 운동 제2법칙입니다. 질량이 있는 물체의 경우 중 m은 가속도 a로 움직이고 있고 힘 F가 작용한다면 뉴턴의 제2법칙은 다음과 같이 나타냅니다. $$F=ma$$ 위 식을 미분방정식으로 나타내기 위해 가속도 a를 속도(v)의 미분 또는 위치(u)의 2차 미분 형태로 나타냅니다. $$a=\frac{dv}{dt}\; \text{or} \; a=\frac{d^2u}{dt^2}$$ 힘 F는 시간, 속도, 위치의 함수이므로 다음과 같이 미분항을 포함하는 미분방정식으로 나타낼 수 있습니다. $$ F(t, v)=m\frac{dv}{dt} \tag{1}$$ $$ F\left(t, u, \frac{du}{dt}\right)=m\frac{d^2u}{dt^2} \tag{2}$$ 미분방정식의 차수(order) 는 식 중에 가장 높은 차수로 결정됩니다. 위의 식 중 첫번째는 1차, 두번째 식은 2차 식이 됩니다. 차수는 미분 방정식에 상미분 또는 편도함수가 있는지 여부에 따라 달라지지 않습니다. 미분(Ordinary differential) 및 편미분(Partial differential) 방정식 미분 방정식에 일반적인 미분항(상미분항)을 가지면 상미분 방정식이라고하며 ode 로 축약됩니다. 마찬가지로, 미분 방정식에 편도함수가 있는 경우 미분방정식을 편미분방정식이라고 하며 pde 로 축약됩니다. 위에서 소개한 뉴턴 법칙의 미분방정식은 상미분방

정규분포 그리기

정규분포 (Normal Distribution) 평균이 $\mu$이고 표준편차 $\sigma$인 연속확률변수 x의 확률밀도함수가 다음과 같다면 정규분포를 따릅니다. $$f(x) = \frac{1}{\sigma \sqrt{2 \pi}}\exp\left(-\frac{1}{2}\left[\frac{x-\mu}{\sigma}\right]^2\right), \quad -\infty \lt x \lt \infty $$ import numpy as np import pandas as pd from sympy import * import matplotlib.pyplot as plt sympy를 사용 x,m,s=symbols('x, mu, sigma') fn=1/(s*sqrt(2*pi))*exp(-Rational(1,2)*((x-m)/s)**2) simplify(fn) $\frac{\sqrt{2} e^{- \frac{\left(\mu - x\right)^{2}}{2 \sigma^{2}}}}{2 \sqrt{\pi} \sigma}$ fig, ax=plt.subplots(1, 2, figsize=(15, 4)) a=np.linspace(-6, 6, 100) for j in [-2, 0, 2]: b=[float(fn.subs({x:i, m:j, s:1})) for i in a] ax[0].plot(a, b, label='['+r'$\mu:$'+str(j)+','+r'$\sigma:$'+str(1)+']') ax[0].legend(loc='best') ax[0].set_xlabel("x", size=12, weight="bold") ax[0].set_ylabel("f(x)", size=12, weight="bold") ax[0].spines['left'].set_pos

Sympy 객체를 사용한 미분과 적분

내용 개요 sympy에 의한 미분 Sympy에 의한 적분 Sympy 객체를 사용한 미분과 적분 개요 모듈 듈 Sympy는 기호(symbol)로 이루어진 수학적 객체의 계산을 다룹니다. 즉, 일반적으로 사용하는 x, y 등과 같은 문자를 수학적 기호로 인식하여 수학식을 표현하는 수단을 제공합니다. 또한 sympy에서 ∞는 알파벳 소문자 o를 두번 연이어 표시하는 것으로 대체합니다. oo = ∞ 다음은 파이썬 코드와 모듈 math, sympy를 사용하여 제곱근을 계산한 결과를 나타낸 것입니다. import math from sympy import * 9**0.5 3.0 pow(9, 0.5) #파이썬 내장함수 3.0 math.sqrt(9) #모듈 math함수 3.0 sqrt(9) #sympy 함수 3 위 결과는 모두 실수로 반환됩니다. 그러나 8의 제곱근과 같이 근사값(무리수)이 반환되는 경우는 그 결과의 표현이 달라집니다. sympy를 사용할 경우 일반적으로 수학적으로 표현하는 방식으로 결과를 반환합니다. round(8**0.5,3) 2.828 round(pow(8, 0.5), 3) #파이썬 내장함수 2.828 round(math.sqrt(8), 3) #모듈 math함수 2.828 sqrt(8) #sympy 함수 $2 \sqrt{2}$ 위의 sympy에 의한 결과 $\sqrt{2}$는 기호입니다. 즉, sympy 객체는 실제 수와 함께 일정한 기호을 사용하기 때문에 다양한 수학적 표현이 가능합니다. sympy 모듈은 $\sqrt{2}$와 같은 자체적으로 지정된 기호외에 symbols() 함수를 사용하여 사용자가 사용하는 기호를 정의할 수 있습니다. x, y=symbols('x y') type(x) sympy.core.symbol.Symbol expr=x+2*y expr x + 2 y 위에서 expr 객체는 기호 x, y를 지닌 객체입니다.

ASCII 코드

ascii는 정수와 문자 등을 연결해 주는 규약으로 그 구성 요소들은 표 1과 같습니다. ASCII 코드의 구성 구성 요소 코드 포인트 영문 소문자 a ~ z 65 ~ 90 영문 대문자 A~z 97 ~ 122 구두점, 기호, 공백 $, ! , " "등 32 ~ 64 자소(graphemes) [, \등 91 ~ 96 자소(graphemes) {, | 123 ~ 126 인쇄할 수 없는 문자 \b 등 127 문자 인코딩(character encoding)은 다음과 같이 정의할 수 있습니다. 문자, 구두점, 기호, 공백, 제어문자 등을 정수로, 궁극적으로 비트(bit)로 변환하는 방법 각 문자는 고유한 비트 시퀀스로 인코딩될 수 있음 문자 등을 정수로 변환한 결과를 코드 포인트(code point)라고 합니다. ASCII 코드는 총 128개로 구성되어 있으며 파이썬의 내장함수 ord() 와 chr() 로 확인할 수 있습니다. ord(문자): 대응하는 정수를 반환 chr(숫자): 대응하는 문자를 반환 chr(33) '!' ord('!') 33 x=ord('a') print(x, chr(x)) 97 a 모듈 string은 ASCII의 문자집합에 포함된 문자(열)를 다루고 있습니다. 이 모듈에 포함된 문자는 다음의 속성(attribute) 으로 확인할 수 있습니다. import string string.whitespace ' \t\n\r\x0b\x0c' string.ascii_letters 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 위의 속성은 .ascii_lowercase(소문자)와 .ascii_uppercase(대문자)를 함께 반환합니다. string.digits #10진수 수 '

객체의 작동범위

내용 전역(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,