기본 콘텐츠로 건너뛰기

12월, 2018의 게시물 표시

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

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

삼각함수 미분공식

1. $ f(x)=x^n → f′(x)=nxn-1 or  \frac{d}{dx}(x^n)=nx^{n-1}$ 위 식을 증명하기 위해서는  n이 양수라고 가정합니다. 또한 이항정리를 사용합니다.  <이항정리>  $(a+b)^n=\sum^n_{k=0}\left(^n_k \right) a^{n-k}b^{k}\\=a^n+\left(^n_1 \right)a^{n-1}b+\left(^n_2 \right)a^{n-2}b^2+ \cdots +\left(^n_{n-1} \right)ab^{n-1}+\left(^n_n \right)ab^n\\=a^n+na^{n-1}b+\frac{n(n-1)}{2!}a^{n-2}b^2+\frac{n(n-1)(n-2)}{3!}a^{n-3}b^3+\cdots+nab^{n-1}+b^n$ 위 식의 전개에서  $\left( \begin{matrix} n \\k  \end{matrix} \right) =\frac { n! }{ k!(n-k)! } ,\quad n!=n\cdot (n-1)\cdot \cdots \cdot 2\cdot 1$ f(x)=xn 이라고 하면  $f^\prime(x)=\lim_{h \to 0}\frac{(x+h)^n-x^n}{h} \\=\lim_{h \to 0}\frac{(x^n+nx^{n-1}h+\frac{n(n-1)}{2!}x^{n-2}h^2+\frac{n(n-1)(n-2)}{3!}x^{n-3}h^3+\cdots+nxh^{n-1}+h^n)-x^n}{h} \\=\lim_{h \to 0} \; nx^{n-1}+\frac{n(n-1)}{2!}x^{n-2}h+\frac{n(n-1)(n-2)}{3!}x^{n-3}h^2+\cdots+nxh^{n-2}+h^{n-1} \\=nx^{n-1}$ 2. $\lim_{\theta \to 0} \frac{sin \theta}{\theta}=1$    위 그림은 원위의 두 접선을 기준으로 작성된 것으로 다음을 유도 할 수 있습니다. 증명과정을 간단히

미분의 개념

내용 단순한 형태의 미분 음의 거듭제곱 형태의 미분 분수형태의 거듭제곱의 경우 상수를 포함한 식의 미분 단순한 형태의 미분 예 1) 두 변수 y와 x의 관계를 나타낸 함수 $y = x^2$에 따르면 x가 증가하면 y 역시 증가합니다. 이 관계에서 두 변수 사이의 비율을 계산할 수 있습니다. 이 예제는 미분계수인 $\displaystyle \frac{dy}{dx}$의 값을 계산하는 것으로 x의 증가에 따라 식 1과 같이 표현할 수 있습니다. $$\begin{align}\tag{1}y+dy&=(x+dx)^2\\&=x^2+2xdx+(dx)^2\end{align}$$ dx는 변수 x의 작은 양이므로 위 식에서 $(dx)^2$는 작은 양들 사이의 곱이므로 다른 항에 비해 매우 작습니다. 즉, 이 항은 무시 가능하기 때문에 식 1은 식 2와 같이 정리됩니다. $$\begin{align} \tag{2}y+dy&=x^2+2xdx\\dy&=2xdx\end{align}$$ 위 식2는 미세한 구간에서 x에 대한 y의 변화율을 나타내는 것으로 미분이라고 정의합니다. 다시말하면, 일반적인 미분의 정의인 식 3과 같이 나타낼 수 있습니다. $$\begin{align} \tag{3}\frac{dy}{dx}&=2x\end{align}$$ 파이썬 sympy 패키지의 diff() 함수를 적용하여 다음과 같이 코드화 할 수 있습니다. 이 함수는 sympy객체.diff() 와 같이 메소드 형태로 적용할 수 있습니다. x=symbols("x", real=True) y=x**2 diff(y) 2x y.diff() 2x $\displaystyle \frac{dy}{dx}$는 x에 대한 y를 미분하는 결과입니다. 미분한다는 것은 미분 계수를 발견하는 것을 의미합니다. x에 관한 다른 함수에 대해 생각해 봅니다. $$u=7x^2+3$$ 위 식의 x에 대한 u의 미분은 다음과 같이 나타

무한대와 극한

1. 무한 극한  x=a 점으로 충분히 근접할 경우 극한값이 양(positive)의 무한대로 증가하면 또는 음(negative)의 무한대로 확장되는 것을 다음과 같이 나타냅니다. $\lim_{x \to a}f(x) = \infty \, \;  \lim_{x \to a}f(x) = -\infty$ 이러한 경우 그 함수에 의해 x=a는 정의되지 않습니다. 1. $ f(x)=\frac{1}{x}$함수의 그래프를 그려보면 다음과 같습니다. 이 함수는 x가 0에 접근할 수록 값이 양의 무한대와 음의 무한대로 확장됩니다. 즉. $\lim_{x \to 0^+}\frac{1}{x} = +\infty, \; \lim_{x \to 0^-}\frac{1}{x} = -\infty$ 위의 결과와 같이 0에 대해 오른쪽 극한과 왼쪽 극한이 일치하지 않습니다. 즉, 그 점에서는 불연속이므로 x=0에서의 극한 값은 존재하지 않습니다. $\lim_{x \to 0^+}\frac{1}{x} \; \text{doesn't exist}$ 2. $ f(x)=\frac{1}{x^2}$? 위 함수는 극한은 다음과 같이 나타낼 수 있습니다. $\lim_{x \to 0^+}\frac{1}{x} = \infty, \; \lim_{x \to 0^-}\frac{1}{x} = \infty$ 위 결과와 같이 x=0에 대해 왼쪽극한과 오른쪽 극한은 같습니다. 그러므로 0에 대한 극한은 $ \infty$입니다.  $\lim_{x \to 0^+}\frac{1}{x} = \infty$ 위 두 문제로 부터 다음을 정의할 수 있습니다. x=a에서 다음이 성립하면 함수 f(x)는 x=a를 기준으로 대칭입니다. $\lim_{x \to a^-} f(x) = \pm \infty, \;  \lim_{x \to a^+} f(x) = \pm \infty, \;  \lim_{x \to a} f(x) = \pm \infty$ 3. 함수 $f(x) = \frac{3}{(4-x)^3}$에 대

극한의 특성과 계산

극한의 특성 $\lim_{x \to a}f(x), \;  \lim_{x \to a}g(x)$ 그리고 상수(constant) c사이에 다음 관계들이 성립합니다. import numpy as np import pandas as pd from sympy import * import matplotlib.pyplot as plt x=symbols("x") f=x**2+3*x g=x**3+4*x+5 c=3 a=2 f $\quad \color{blue}{x^{2} + 3 x}$ g $\quad \color{blue}{x^{3} + 4 x + 5}$ 1) $\displaystyle \lim_{x \to a}cf(x)=c\lim_{x \to a}f(x)$ limit(c*f, x, a) 30 c*limit(f, x, a) 30 2) $\displaystyle \lim_{x \to a}[f(x) \pm g(x)]=\lim_{x \to a}f(x) \pm \lim_{x \to a}g(x)$ limit(f+g, x, a) 31 limit(f, x, a)+limit(g, x, a) 31 3) $\displaystyle \lim_{x \to a}[f(x) g(x)]=\lim_{x \to a}f(x)  \lim_{x \to a}g(x)$ limit(f*g, x, a) 210 limit(f, x, a)*limit(g, x, a) 210 4) $\displaystyle \lim_{x \to a}\frac{f(x)}{g(x)}=\frac{\lim_{x \to a}f(x)}{\lim_{x \to a}g(x)}, \quad \lim_{x \to a}g(x)\neq 0$ limit(f/g, x, a) $\quad \color{blue}{\displaystyle \frac{1}{21}}$ limit(f, x, a)/limit(g, x, a) $\quad \color{blue}{\displaystyle \frac{1}{21}}$ 5) $\lim

극한(Limit)의 개념

내용 접선과 외선 극한(limit) 1. 접선과 외선 한 점 x에서의 함수 f(x)의 접선 (tangent line)은 그 점에서 함수의 그래프를 스쳐지나가는 직선으로 그 점과 평행입니다. 그림 1. 위 그림에서 직선 y는 곡선 f(x)위의 점 A(0.3, f(0.3))에 대한 접선입니다. 이 접선은 곡선의 다른 점 B를 통과합니다. 이와같이 어떤 점의 접선이 동일한 함수의 다른 점과 교점을 이루는 선을 외선 (scant line)이라고 합니다. 위의 경우 직선 y의 식은 접점(점A)과 외선을 이루는 점B를 알 수 있으므로 쉽게 계산할 수 있습니다. 예 1)   x=1에서 $f(x)=15-2x^2$의 접선? 그림 2. 위 그림에서 f(x) 위의 접점 A를 지나는 접선 a의 식을 계산하기 위해서는 a를 지나는 다른 점을 알거나 그 직선의 기울기를 알아야 합니다. 위 그림에서는 두 가지 모두 미지수입니다. 그러나 함수 f(x)위의 두 점 A와 B를 지나는 직선을 계산할 수 있습니다. 이 직선을 이용하여 접선을 추정할 수 있습니다. 위 그림에서 b의 기울기는 다음과 같이 계산할 수 있습니다. $$\frac{f(0.5)-f(1.32)}{0.5-1.32}$$ import numpy as np import pandas as pd from sympy import * x=symbols("x") f=5-2*x**2 s1=(f.subs(x,0.5)-f.subs(x, 1.32))/(0.5-1.32) N(s1, 2) −3.6 그림 2의 점 B가 점 A쪽으로 근접할수록 직선 b는 직선 a와 근사해질 것입니다.(그림 3) A로 수렴하는 여러 점들에 대한 기울기를 계산하면 다음과 같습니다. x_p=np.linspace(0.51, 1, 5) np.around(x_p, 2) array([0.51, 0.63, 0.76, 0.88, 1. ]) slope=[] bias=[] for j, i in enumerate(

행렬 객체 만들기

python에서 행렬 객체를 생성하기 위해서는 numpy, pandas 모듈을 사용합니다. numpy 모듈에서 array()함수는 다른 행렬 객체를 생성하는 대부분 함수의 기반이 되는 함수입니다. 이 함수는 기본적으로 자료들의 순서가 자동으로 정해지는 배열을 생성하는 함수입니다. 그러므로데이터의 위치가 행 또는 열만이 표시되는 벡터, 여러행과 열을 가지는 행렬 모두 생성할 수 있습니다.  >>> import numpy as np >>> x=np.array([1,2,3]);x array([1, 2, 3]) 위 객체 x는 1행 3열의 행렬과 같이 보이지만 python은 3행인 열벡터로 인식합니다. 다음에 사용한 np객체.shape 는 객체의 차원을 알려주는 속성입니다. 이 함수를 적용하여 객체 x의 차원을 나타내면 다음과 같습니다. 속성: 클래스 내에서 객체의 생성하면 그 클래스의 기본 성질을 가집니다. 이러한 특성은 클래스 객체의 속성으로 나타낼 수 있습니다. 함수와 유사하지만 전달할 인수값이 없습니다. >>> x.shape (3,) 위의 결과는 열 표시가 없습니다. 즉, 객체 x는 3행으로 이루어진 열벡터임을 나타냅니다. python에서는 벡터와 행렬을 구분하고 또한 벡터는 1열로 이루어진 열벡터 1행으로 이루어진 행벡터로 구분할 수 있습니다. python에서는 모든 벡터는 열벡터로 취급합니다. 그러므로 x의 경우 열표시가 없습니다. python에서 벡터와 행렬을 구분한다는 것은 매우 중요합니다. 벡터, 행렬 연산의 경우 기본적으로 차원을 조정해야 하기 때문입니다. 예를 들어 행과 열이 바꾸는 것을 전치(transpose)라고 하며 객체.T 로 실행됩니다. 그러나 벡터일 경우는 실행되지 않습니다. >>> x1=x.T;x1 array([1, 2, 3]) >>> x1.shape (3,) 위 객체 x를 행렬로 변경하여 전치해 보면 다른 결과를 얻을 수

우분투에 필요한 프로그램들 설치

1. 프린트 스크린  Shift + Ctrl + Print Screen 키를 누르면 마우스 커서가 십자 모양으로 바뀌며  캡처 하려는 영역을 사각형으로 지정하여 캡처할 수 있습니다. 캡처 결과를 클립보드에 복사되며 Ctrl + V를 눌러 원하는 프로그램에서 붙여넣기 할 수 있습니다.  2. 그림판  윈도우 그림판과 유사한 프로그램인 kolourpaint 터미널에서  sudo apt-get install kolourpaint4 실행  kolourpaint 3. sigil 설치 및 upgrade 1) 터미널에서 ~$ sudo add-apt-repository ppa:ubuntuhandbook1/sigil 2) install or upgrade sudo apt update sudo apt install sigil 3) uninstall sudo apt-get remove --autoremove sigil sigil-data 4. 한글 설정 (UIM 설치) 우분투 18.04의 한글 입력기는 iBus로 되어 있는데 Visual Studio Code등에서 한글 입력이 되지 않는 문제가 발생합니다. 이 경우 UIM 설치로 상당부분 해소됩니다. $sudo apt install uim  설치후 - 프로그램 메뉴에서 --> 언어지원(또는 setting(제어판) )--> 지역 및 언어에서 "설치된 언어 관리" 클릭 - 언어지원 창에서 키보드 입력기를 uim으로 변경 - 재부팅 재부팅후 프로그램 메뉴에서 --> 입력기에서  - 전체적인 설정 --> 입력기 이용준비 디폴트 입력기 지정 체크 디폴트 입력기 : 벼루 사용되는 입력기 : 모두 지우고 "벼루" 만 남김 - 툴바 Display behavor > Display : Never  - 전체적인 키 설정 : [전체] 켜기, [전체] 끄기의 모든 내용을 지웁니다.  - 벼루 키설정 1 > [벼루] 한글

sympy와 미분

미분 sympy 에서 미분은  diff()  함수를 사용합니다 . diff( 식 ,  기준이 되는 변수 ) >>> from sympy import * >>> x, y, z = symbols('x y z') >>>  diff(cos(x),x) -sin(x) >>>  diff(exp(x**2), x) 2*x*exp(x**2) 위의  diff() 에 의한 미분은  1 차 미분을 나타낸 것이고 다중 미분역시 이 함수를 사용하여 수행할 수 있습니다 .  다중 미분을 위해서 미분을 위한 변수를 여러차례 전달해야 한다 .  즉 ,  변수를 전달하는 횟수만큼 미분이 실행됩니다 .  다음은  4 제곱인  x 를  4 번 미분한 것으로 결과는  24 입니다 . >>>  diff(x**4, x) 4*x**3 >>>  diff(x**4, x,x,x,x) 24 즉, 위의 경우는$((((x^4)^{\prime})^{\prime})^{\prime})^{\prime})$과 같습니다. 이와같은 다중 미분은 다음과 같이  diff(식, 변수, 미분횟수) 로 사용할 수 있습니다.  >>>  diff(x**4, x,4) 24 미분을 여러번 시행할 경우 횟수만큼 변수를 전달하는 대신 대상이 되는 변수와 함께 미분의 횟수를 전달하는 것으로 동일한 효과를 나타낼 수 있습니다 . 이 방법으로 다중의 변수에 대해 미분을 실행할 수 있습니다. 즉,  함수에 전달하는 변수의 순서에 따라 미분이 실행됩니다 .  예를들어 다음을 실행합니다 . >>> eq=exp(x*y*z) >>> diff(eq, x) y*z*exp(x*y*z) $eq1=frac{d(e^{xyz})}{dx}=yz e^{xyz}$ >>> diff(eq, x, y) z*(x*y*z + 1)*e

window, ubuntu간의 공유폴더 생성

우분투에서 samba를 사용하여 공유폴더를 생성 1. Samba 생성 $sudo apt-get install samba 2. samba 폴더 생성 $mkdir samba 3. samba config 수정 /etc/samba/smb.conf 열어 다음과 같이 편집 $ sudo nano/etc/samba/smb.conf #파일의 아래에 [profiles] 밑에 다음과 같이 작성 [ ailab] # 네트워크에 보여질 공유 이름 comment = ailab share directory # 디렉토리 설명 path = /home/ailab/samba # 공유 디렉토리 절대 경로 valid users = ailab # 접속을 허용할 계정 writeable = yes create mask = 0664 directory mask = 0775 [shs1] comment = window_ubuntu share directory path=/home/sonhs valid users=shs1 writable=yes create mask=0664 directory mask=0775 ctrl+o (저장), ctrl+x: nano 편집을 마친후 samba 서버 재시작 $sudo /etc/init.d/smbd restart samba 서버에 관련된 명령은 다음과 같습니다. $sudo service smbd start #samba server 시작 $sudo service smbd stop #samba server 멈춤 $sudo service smbd restart #samba server 재시작(권한 입력 필요) 윈도우 탐색기에서 samba서버 접속을 위해 방화벽 139, 445 포트를 열어두어야 합니다. $sudo ufw allow 139 $sudo ufw allow 445 4. 윈도우 탐색기 연결하기

sympy.solvers로 방정식해 구하기

sympy.solvers로 방정식해 구하기 대수 방정식을 해를 계산하기 위해 다음 함수를 사용합니다. sympy.solvers.solve(f, *symbols, **flags) f=0, 즉 동차방정식에 대해 지정한 변수의 해를 계산 f : 식 또는 함수 symbols: 식의 해를 계산하기 위한 변수, 변수가 하나인 경우는 생략가능(자동으로 인식) flags: 계산 또는 결과의 방식을 지정하기 위한 인수들 dict=True: {x:3, y:1}같이 사전형식, 기본값 = False set=True :{(x,3),(y,1)}같이 집합형식, 기본값 = False ratioal=True : 실수를 유리수로 반환, 기본값 = False positive=True: 해들 중에 양수만을 반환, 기본값 = False 예 $x^2=1$의 해를 결정합니다. solve() 함수에 적용하기 위해서는 다음과 같이 식의 한쪽이 0이 되는 형태인 동차식으로 구성되어야 합니다. $$x^2-1=0$$ import numpy as np from sympy import * x = symbols('x') solve(x**2-1, x) [-1, 1] 위 식은 계산 과정은 다음과 같습니다. $$\begin{aligned}x^2-1=0 \rightarrow (x+1)(x-1)=0 \\ x=1 \; \text{or}\; -1\end{aligned}$$ 예 $x^4=1$의 해를 결정합니다. solve() 함수의 인수 set=True를 지정하였으므로 결과는 집합(set)형으로 반환됩니다. eq=x**4-1 solve(eq, set=True) ([x], {(-1,), (-I,), (1,), (I,)}) 위의 경우 I는 복소수입니다.즉 위 결과의 과정은 다음과 같습니다. $$x^4-1=(x^2+1)(x+1)(x-1)=0 \rightarrow x=\pm \sqrt{-1}, \; \pm 1=\pm i,\; \pm1$$ 실수

함수(Function)

함수의 정의 함수의 정의역(domain)과 치역(range) 역함수(Inverse function) 함수(Function) 함수의 정의 식에 입력되는 값에 대응하는 정확히 하나의 수를 생성한다면 그 식을 함수라고 합니다. 예)   1. 다음 식은 함수? 1) y=x 2 +1 한개의 값 x에 대응되는 y 역시 하나입니다. 그러므로 함수입니다. 2) y 2 =x+1 한개의 값 x에 대응되는  y의 값은 한 개 이상일 수 있습니다. 예로 x=3일 경우 y값은 두개 입니다. y 2 = 4 → y=2 or -2 그러므로 이 식은 함수가 아닙니다. import numpy as np from sympy import * 일반적으로 함수는 f(x)로 나타냅니다. f(x) = 2x 2 -5x+3 식 f(x)에서 x=3 인 경우의 대응되는 값은 다음과 같이 하나입니다. f=2*x**2-5*x+3 f.subs(x, 3) 6 위 코드와 같이 수학의 수식을 표현하고 계산하기 위해 sympy 패키지 를 사용합니다. 함수의 정의역(domain)과 치역(range) 정의역 은 함수에 전달할 수 있는 모든 값의 범위이며 함수로 전달되는 각 값에 대응하는 결과를 치역 이라고 합니다. 예를들어 f(x) =5x-3의 경우 이 함수 x값에 전달할 수 있는 값들과 이 함수에 의해 생성되는 결과의 범위는 다음과 같습니다. Domain:$(-\infty, \infty)$ range: $(-\infty, \infty)$ $g(x)=\sqrt{4-7t}$에서 변수 t에 전달할 수 있는 수는 한정되어 있습니다. 즉, 제곱근의 수는 0을 포함하는 양수이어야 합니다. 즉, $4-7t \geq 0 \rightarrow t \leq \frac{4}{7} $ Domain: $\left( -\infty , \frac{4}{7} \right]$ 구간을 표시할 때 괄호' ( ) '와 대괄호' [ ] '를 사용합니다. 대