기본 콘텐츠로 건너뛰기

라벨이 python인 게시물 표시

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

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

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

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

Pickle: 객체의 직렬화(Serialization)

내용 Pickling Pickling Files Unpickling Files Pickle 파일 압축 Pickle: 객체의 직렬화(Serialization) 데이터는 사전, DataFrame 또는 기타 형식으로 저장하거나 전송하기 위해 객체화할 수 있습니다. 이러한 객체들을 직렬화하여 파일에 저장하고 나중에 프로그램에 다시 로드할 수 있습니다. [직렬화] 객체의 직렬화란 객체의 내용을 바이트 단위로 변환하여 파일 또는 네트워크를 통해서 스트림(송수신)이 가능하도록 하는 것을 의미합니다. Pickling Pickle은 마샬링 또는 평면화라고도 하는 Python 개체 구조를 직렬화 및 역직렬화하는 데 사용됩니다. 직렬화는 메모리의 개체를 디스크에 저장하거나 네트워크를 통해 보낼 수 있는 바이트 스트림으로 변환하는 프로세스를 나타냅니다. 나중에 이 문자 스트림을 검색하여 Python 객체로 역직렬화할 수 있습니다. pickling는 compression(압축)과는 다릅니다. 즉, 전자는 개체를 한 표현(RAM(Random Access Memory)의 데이터)에서 다른 표현(디스크의 텍스트)으로 변환하는 반면 후자는 디스크 공간을 절약하기 위해 더 적은 비트로 데이터를 인코딩하는 프로세스입니다. Pickle의 용도와 주의사항 pickle은 데이터에 어느 정도의 지속성이 필요한 애플리케이션에 유용합니다. 프로그램의 상태 데이터를 디스크에 저장할 수 있으므로 나중에 계속 작업할 수 있습니다. 또한 TCP(Transmission Control Protocol) 또는 소켓 연결을 통해 데이터를 보내거나 데이터베이스에 Python 개체를 저장하는 데 사용할 수 있습니다. Pickle은 머신 러닝 알고리즘으로 작업할 때 모든 것을 다시 작성하거나 모델을 다시 훈련할 필요 없이 나중에 새로운 예측을 할 수 있도록 저장하려는 경우에 매우 유용합니다. 다양한 프로그래밍 언어에서 데이터를 사용하려면 pickle을 사용하지 않는 것

반복자와 발생자(Iterator and Generator)

내용 반복자(iterator) Iterable __iter__ 시퀀스(sequence)와 iterable의 차이 발생자(generator) 클래스에 적용 생성자(construtor) 발생자(iterator) 반복자(generator) 반복자와 발생자(Iterator and Generator) 반복자(iterator) 반복자는 iterable(반복가능한 객체)이면서 지연된 평가에 의해 실행되는 객체입니다. Iterable과 지연된 평가를 알아보기 위해 다음 range()객체에 대해 알아봅니다. 이 객체는 지정된 수까지 정수를 생성하는 파이썬의 내장함수 입니다. 다음은 0~9까지 정수를 생성하는 것입니다. x=range(9);x range(0, 9) for i,j in enumerate(x): print(f'x[{i}]의 자료형과 값: {type(x[i])}, {j}') x[0]의 자료형과 값: <class 'int'>, 0 x[1]의 자료형과 값: <class 'int'>, 1 x[2]의 자료형과 값: <class 'int'>, 2 x[3]의 자료형과 값: <class 'int'>, 3 x[4]의 자료형과 값: <class 'int'>, 4 x[5]의 자료형과 값: <class 'int'>, 5 x[6]의 자료형과 값: <class 'int'>, 6 x[7]의 자료형과 값: <class 'int'>, 7 x[8]의 자료형과 값: <class 'int'>, 8 위 객체 x의 경우 자료형은 range형입니다

스펙트럴 분해(Spectral decomposition)

내용 대칭행렬의 대각화 스펙트럴분해 스펙트럼의 특성 스펙트럴 분해(Spectral decomposition) 대칭행렬의 대각화 대칭 행렬 은 주 대각 원소를 기준으로 위 부분과 아래 부분의 원소들이 대칭되는 구조를 가지며 다음과 같은 특성을 보입니다. 대칭행렬의 특성 식 1과 같이 대칭행렬은 행렬의 원형과 전치행렬과 같습니다. $$\begin{equation}\tag{1} \text{A} = \text{A}^\text{T}\end{equation}$$ 서로 다른 고유값(λ 1 , λ 1 , …)에 대응하는 고유 벡터(v 1 , v 2 , …)들은 직교 (orthogonal)관계에 있으며 정규직교 (orthonormal)관계가 될 수 있습니다. 그러므로 식 2와 3을 성립합니다. $$\begin{align}\tag{2}&\text{v}_i\cdot \text{v}_j=0\\& \quad i, j: 0, 1, 2, \cdots \quad i \neq j\\ \tag{3}&\text{A}^\text{T}=\text{A}^{-1}\end{align}$$ 예)   벡터 A의 고유 벡터들 간의 직교성을 결정하여 봅니다. $$A=\begin{bmatrix} 6&-2&-1\\-2&6&-1\\-1&-1&5 \end{bmatrix}$$ import numpy as np import numpy.linalg as la import sympy as sp A=np.array([[6,-2,-1], [-2,6,-1], [-1,-1,5]]); A array([[ 6, -2, -1], [-2, 6, -1], [-1, -1, 5]]) d, P=la.eig(A) np.around(P, 2) array([[ 0.58, 0.71, -0.41],

__str__과 __repr__

__str__과 __repr__ __str__ __repr__ __str__과 __repr__ __str__과 __repr__ 다음 클래스 Book1에는 초기값을 전달하는 매직메서드 __init__ 만을 포함하고 있습니다. 이 경우는 클래스 인스턴스 자체는 평가되지 않은 상태로서 다음과 같이 속성을 호출할 경우만 결과를 반환합니다. class Book1: def __init__(self, kind, vol): self.kind=kind self.vol=vol book1=Book1('소설', 300) book1 <__main__.Book1 at 0x7f53400bb790> print(book1) <__main__.Book1 object at 0x7f53400bb790> book1.kind, book1.vol ('소설', 300) __str__ 그러나 매직메소드 __str__ 을 첨가하여 객체의 호출로 문자열을 인쇄할 수 있습니다(print). 매직 메소드인 __str__은 print()함수에 응답 하는 것으로 입력된 문자열을 인쇄되지만 평가되지 않습니다. 즉 return 문으로 결과를 반환하지 않습니다. 그러므로 그 객체의 단순 호출로 반환하는 결과는 없는 상태입니다. 매직메소드 __str__은 문자열을 반환하는 메서드로서 일반 객체에 대한 str() 함수와 같은 내용을 반환합니다. class Book2: def __init__(self, kind, vol): self.kind=kind self.vol=vol def __str__(self): return f'그 책은 {self.kind} 입니다.' book2=Book2('비소설', 500) book2 <__main__.Book2 at 0x7f533155fcd0> p

데코레이터(Decorator, 장식자)

내용 데코레이터 Basic 데코레이터에 의한 함수의 수정 다양한 데코레이터의 적용 데코레이터(Decorator, 장식자) 데코레이터 데코레이터(장식자)는 함수를 수정하지 않은 상태에서 추가기능을 구현할 경우 사용합니다. 즉, 1급 객체인 호출 가능 객체 (callable object)를 영구적으로 수정하지 않고도 그들(함수, 메서드 및 클래스)의 동작을 확장하고 수정할 수 있습니다. 새로 작성하는 개체에 내장된 또는 기존 클래스 또는 함수의 동작을 추가하기 위해 데코레이터를 사용합니다. 이러한 방법의 기반은 함수가 1급객체로서 다음과 같이 작용할 수 있기 때문에 가능합니다. 함수는 객체입니다. 변수에 할당하고 다른 함수에 전달 및 반환할 수 있습니다. 함수는 다른 함수 내부에서 정의할 수 있으며 그 중첩함수(내부함수)는 외부함수의 모든 속성과 변수들을 사용합니다. ( 클로저 ) Basic 데코레이터는 다른 함수를 "장식"(decoration)하거나 "래핑"(wraping)하고 래핑된 함수가 실행되기 전후에 코드를 실행할 수 있도록 합니다. 데코레이터를 사용하면 다른 기능의 동작을 변경하거나 확장할 수 있는 재사용 가능한 블록을 정의할 수 있습니다. 또한 래핑된 함수 자체를 영구적으로 수정하지 않고도 이를 수행할 수 있습니다. 함수의 동작은 장식될 때만 변경됩니다. 기본적으로 데코레이터는 callable을 입력으로 받아 다른 callable을 반환하는 callable개체입니다. 다음 함수에는 다른 함수를 인수로 받는 callable으로 인수로 받는 함수를 수정없이 반환합니다. def nullDeco(func): return func 위 함수에 다른 함수를 인수로 전달합니다. 당연히 전달된 함수가 반환될 것입니다. def greet(): return 'Hello!' nullDeco(greet()) 'Hello!' cal

클로저(Closure)

클로저(Closure) 함수는 일급객체 이므로 다른 함수의 반환값이 될 수 있습니다. 예를 들어 중첩함수 를 포함하는 경우 외부함수 내부에서 중첩함수를 호출하여 실행 시킬 수 있습니다. 다음 함수 first는 중첩함수인 increse()를 포함하고 있는 구조입니다. def first(x): #(1) def increase(y): #(3) return (x+y) #(4) return increase(x) #(2) first(1) 2 함수에서 정의된 변수는 작동영역이 함수 내부로 한정됩니다. 그러므로 위 함수에서 변수 x는 외부함수인 first() 내부이고 변수 y는 중첩함수 increase()의 내부로 한정됩니다. 작동범위가 가장 작은 변수를 지역변수 (local vaiable)라고 하고 그 외 부분에 존재하는 변수를 비지역변수 (non-local variable)라고 합니다. 즉 y는 지역변수 x는 비지역변수가 됩니다. 다음과 같은 위 함수의 동작 과정에 따라 비지역변수와 지역변수의 변화가 발생합니다. first 함수에 인수 x 값 전달 본문에 중첩함수 이외에 다른 코드가 없으므로 직접적으로 return 함수를 실행 : 인수 x=1을 전달하면서 중첩함수 increase() 호출 중첩함수에 전달된 인수 x=1은 지역변수 y값이 됩니다. increase()함수 실행: 비지역변수 x(1)과 지역변수 (1)의 합을 실행 위와 같은 구조의 함수에서 지역변수 y값은 x값에 의존됩니다. 즉, 지역변수 y를 x와는 독립적으로 변경할 수 없습니다. x와 독립적으로 사용하기 위해 다음과 같이 함수의 수정할 수 있습니다. def first1(x): def increase(y): return (x+y) return increase first1(1) <function __main__.first1.<locals>.increase(y)> 함수 first1()

람다함수(Lambda Function)

람다함수(Lambda function) 함수를 작성하기 위해 def 키워드를 사용할 경우 반드시 함수의 이름을 선언해야 합니다. 이에 반해 특정한 이름의 선언 없이 함수를 작성할 수 있습니다. 이러한 함수를 익명함수라고 합니다. 파이썬에서 키워드 람다(lambda)는 익명함수를 정의하기 위해 제공됩니다. 함수 개체가 필요할 때마다 사용할 수 있습니다. 예를 들어, 다음은 덧셈을 수행하는 간단한 람다 함수를 정의하는 방법입니다. add=lambda x, y:x+y add(5, 4) 9 위 익명함수를 def를 사용하여 작성하면 다음과 같습니다. def add1(x, y): return x+y add1(5, 4) 9 익명함수는 def에 의한 함수보다 간결하게 사용할 수 있습니다. 이 간결성은 다음과 같이 다른 객체로 할당 없이 직접적으로 사용할 수 있는 표현식(expression)이라는 점 때문입니다. (lambda x, y:x+y)(5, 4) 9 람다와 일반 함수 정의 사이에는 또 다른 구문상의 차이점이 있습니다. Lambda 함수는 단일 표현식으로 제한됩니다. 이는 람다 함수가 명령문이나 주석이나 return과 같이 반환명령문을 사용할 수 없음을 의미합니다. 그러나 반환명령문을 사용할 수 없음에도 불구하고 람다 함수는 표현식을 평가한 다음 표현식의 결과를 자동으로 반환하므로 항상 암시적 return 문이 있습니다. 이 때문에 단일 표현식인 lambda는 함수로 명명될 수 있는 것입니다. 람다의 가장 빈번한 사용 사례는 대체 키로 iterable을 정렬하기 위한 짧고 간결한 키(key) 함수를 작성하는 것입니다. 예를 들어 sorted(iterable, key, reverse=False) 은 반복가능한 객체(iterable)를 정렬하기 위한 파이썬 내장함수 입니다. 이 함수에서 key는 객체의 적용되는 함수를 지정하는 매개변수로서 lambda 함수를 사용할 수 있습니다. student= [('john', &

선형변환(Linear transformation)

내용 선형변환 변환 영변환과 항등변환 표준기저 특별한 선형변환 동일차원으로 선형변환의 경우 일정각도의 이동 선형변환(Linear transformation) 선형변환 선형변환(Linear transformation, T: U → V)은 어떤 벡터 공간의 U를 다른 벡터 공간 V로 옮기는 함수입니다. 이러한 함수는 식 6.1를 만족해야 합니다. $$\begin{align}\tag{1} &\forall \; \text{u}_1,\; \text{u}_2 \in \text{U} \rightarrow T(\text{u}_1 + \text{u}_2) = T(\text{u}_1)+T(\text{u}_2)\\ &\forall \; \text{u} \in \text{U} \cap α \in \text{C} \rightarrow T(\alpha \text{u}) = \alpha T(\text{u}) \end{align}$$ 위 식에서 U와 C는 각각 벡터와 스칼라입니다. 식 1은 벡터들의 선형결합 의 조건과 같습니다. 즉, 선형결합이 성립되는 벡터들은 선형 변환이 가능하다는 것을 의미합니다. 예)  다음 식이 선형변환인지를 결정합니다. $$\begin{align}&T\left( \begin{bmatrix} x_1\\x_2\\x_3 \end{bmatrix}\right)=\begin{bmatrix} 2x_1+x_3\\-4x_2\end{bmatrix}\\ &A=\begin{bmatrix} 2&0&1\\0&-4&0 \end{bmatrix} \end{align}$$ 정의역의 x 1 , x 2 , x 3 에 대한 위 변환이 성립되면 변환의 결과(T 1 , T 2 )에 대한 행렬방정식은 다음과 같습니다. $$Ax = T \right

변환(Transform)과 핵 그리고 치역(Kernel and Range)

내용 정의역, 치역과 공역의 관계 가역행렬 변환(Transform)과 핵 그리고 치역(Kernel and Range) 변환은 어떤 수 x를 식에 대입하여 그 값에 대응하는 결과인 y를 반환하는 함수를 의미합니다. 함수에 입력되는 값의 범위와 개수는 항상 결과의 범위나 개수를 확정하지 못합니다. 즉, 함수에 따라 1개의 실수 입력 값은 여러 개의 유리수를 포함하는 값으로 출력될 수도 있습니다. 함수에 입력 범위를 정의역 (domain), 가능한 모든 결과물들의 범위를 공역 (codomain)이라고 합니다. 예로서 python에서는 모든 수를 정수로 만들기 위해 int() 함수를 사용합니다. 이 경우 정의역은 실수이지만 공역은 정수가 될 것입니다. import numpy as np import numpy.linalg as la import sympy as sp import matplotlib.pyplot as plt from matplotlib import rcParams rcParams['font.family'] = 'nanumgothic' rcParams['font.weight'] = 'bold' rcParams['font.size'] = '11' x=3.24 y=int(x) y 3 공역 중 함수의 결과들을 상 (image)이라 하며 이 상들의 집합을 치역 (range)이라고 합니다. 치역은 공역의 부분 집합이 됩니다. 예를 들어 이러한 정의역(x)과 상(치역)의 관계는 변환에 관계된 행렬 A에 의해 식 1과 같이 선형결합의 형태로서 다음과 같이 작성할 수 있습니다. $$A= \begin{bmatrix} -2&-1\\0&-4 \end{bmatrix},\quad \text{x(정의역)}=\begin{bmatrix} -3\\1 \end{bmatrix},\quad \text{

경기종합지수

내용 경기선행지수 동행종합지수 후행종합지수 전년동월비 동행지수 순환변동치 경기종합지수 경기:살림살이의 상태, 즉 경제상황을 의미 전반적인 경기 동향을 쉽게 파악, 예측하고자 주요 경제지표 움직임을 종합해서 지수로 나타낸 것임. CI(Composite index)라고 함 생산·투자·소비·고용·금융·무역 등 결제의 각 부문 지표 중 민감하게 경기에 반영하는 주요 경제지표를 선정하고 이후 이 지표들의 전월 대비 증감률을 가중평균하여 작성함 전월대비 상승은 경기상승, 감소의 경우는 경기하락 지수 값은 기준시점 2005년의 숫자를 100으로 지정하여 환산 1983년 3월 부터 통계청에서 매달 발표 경기선행지수, 경기동행지수, 경기후행지수로 구분 일반적으로 경기선행지수가 상승하면 3~10개월 정도 후에 경기동행지수가 상승하고 실제 경기도 상승 경기선행지수 일반적으로 3~4 달간의 선행지수가 꾸준히 상승한 경우 몇달 후에 경기 상승 예측 가능 구성요소: 재고순환지표(%p), 경제심리지수, 기계류내수출하자수(선박제외), 건설수주액, 수출입물가비율, 코스피, 장단기 금리파 재고순환지표: 기업은 경기의 좋고 나쁨에 효율적으로 대응하고자 재고를 비축하거나 처분하는 과정에서 생산을 조정하기 떄문에 재고수준의 변동은 단기적인 경기 순환을 나타내는 중요한 기표로 인식됩니다. 출하(판매)증가율에서 재고증가율을 뺀 것으로 경기호황일 때는 출하증가율 > 재고증가율, 반대인 경우는 경기불황 경제심리지수: 기업과 소비자 모두를 포함한 민간의 결제상황에 대한 심리를 종합적으로 파악하고 결기판단을 위한 유용한 경제정보로 활용하는 것을 목적으로 합니다. 기업경기실사지수(BSI)와 소비자동향지수(CSI)를 합성하여 작성. 장기평균 100을 중심으로 표준편차가 10이 되도록 작성, 100이상이면 경제심리가 과거보다 좋은 쪽, 반대이