기본 콘텐츠로 건너뛰기

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

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

리눅스 매뉴얼:IO Redirection

IO Redirection  sgoing@sgoing-virtual-machine:~$ ls -l > result.txt # 위 명령은 ls -l 의 결과를 result.txt 파일에 저장하기 위한 것입니다.  result.txt의 내용을 출력하기 위해  cat 을 사용합니다. sgoing@sgoing-virtual-machine:~$ cat result.txt 합계 40 drwxr-xr-x 23 sgoing sgoing 4096 10월 11 09:55 anaconda3 -rw-r--r--  1 sgoing sgoing    0 10월 14 21:20 result.txt ... sgoing@sgoing-virtual-machine:~$ ls -l 합계 44 drwxr-xr-x 23 sgoing sgoing 4096 10월 11 09:55 anaconda3 -rw-r--r--  1 sgoing sgoing  637 10월 14 21:20 result.txt ... 즉, 위의 과정은 화면에 출력시키는 결과를 파일에 저장시키는 것으로 이러한 과정을 redirection이라고 합니다. 출력의 방향을 바꾸는 것으로 '>' 기호가 redirection을 의미합니다. 내용1 > 내용2 : 내용1을 내용2의 입력으로 받아 리다이렉션시킵니다. 즉, 파일로 저장합니다. 내용1 < 내용2 : 내용2를 내용1의 입력으로 받는 경우 입니다. 명령: ls  -l 위에서 ls 는 프로그램 또는 프로세스이고 -l은 그 프로그램의 인수로 위의 그림의 command line argument에 해당합니다. 이 프로그램을 실행하면 결과가 모니터에 출력 됩니다. 이 정상적인 결과를 standard output이라고 하며 이 결과를 파일과 같이 다른 방향으로 출력시키기 위한 것을  redirection입니다. 즉, 위의 명령  ls -l > result.txt  명령은 부등호 앞에 1이라는 수가 생략된

리눅스 매뉴얼: Pipeline, 다중명령

CLI에서 여러 개 명령  - 두가지 이상의 명령을 동시에 작성하기 위해 세미콜론(;)을 사용합니다. sgoing@sgoing-virtual-machine:~$ mkdir why; cd why sgoing@sgoing-virtual-machine:~/why$ sgoing@sgoing-virtual-machine:~/why$ pwd /home/sgoing/why Pipeline - 프로그램: 명령을 순서대로 진행시킴 - 하나의 프로그램(프로세스)에서 다른 프로그램으로 결과를 입력시키는 형태를 pipeline이라고 합니다.  - grep: 어떤 부분에서 필요한 행을 찾는 명령어 sgoing@sgoing-virtual-machine:~/why$ grep --help 사용법: grep [옵션]... 패턴 [파일]... Search for PATTERN in each FILE. Example: grep -i 'hello world' menu.h main.c ... - 웹으로 부터 어떠한 문서를 다운받아 linux.txt로 생성   sgoing@sgoing-virtual-machine:~/why$ wget -O linux.txt https://en.wikipedia.org/wiki/Linux  #wget는 웹으로 부터 다운받을 경우 사용하는명령 --2018-10-13 23:18:42--  https://en.wikipedia.org/wiki/Linux Resolving en.wikipedia.org (en.wikipedia.org)... 103.102.166.224, 2001:df2:e500:ed1a::1 접속 en.wikipedia.org (en.wikipedia.org)|103.102.166.224|:443... 접속됨. HTTP request sent, awaiting response... 200 OK Length: 525351 (513K) [text/html]

역행렬과 행렬식

역행렬(Inverse matrix) 기약행 사다리꼴 형태 (Reduced row echelon form, rref) 확대행렬 기약행사다리꼴 형태의 특성 행렬식(Determinant) 행렬식의 특징 역행렬과 행렬식 역행렬(Inverse matrix) 행렬에 대해 행렬곱을 실시할 경우 그 자신을 반환시키는 행렬을 항등 행렬(I) 이라 합니다. 항등 행렬은 행과 열의 수가 같은 정방행렬로 np.eye() 함수에 의해 생성할 수 있습니다. import numpy as np import numpy.linalg as la import sympy as sp np.eye(3) array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]) 두 행렬이 식 1을 만족한다면 행렬 B는 행렬 A의 역행렬 (inverse matrix)이고 A -1 로 나타냅니다. $$\begin{equation}\tag{1} \text{A}·\text{B} = I \rightarrow \text{B} = \text{A}^{-1} \end{equation}$$ 역행렬을 가지는 행렬을 가역행렬 (reversible matrix)이라고 하며 np.linalg.inv() 함수에 의해 계산할 수 있습니다. a=np.array([[1,3,-5], [-2,7,8], [4,0,6]]); a array([[ 1, 3, -5], [-2, 7, 8], [ 4, 0, 6]]) # a의 역행렬 a_inv=la.inv(a) np.round(a_inv, 2) array([[ 0.13, -0.06, 0.19], [ 0.14, 0.08, 0.01], [-0.09, 0.04, 0.04

DataFrame과 sqlite

Pandas  객체인 Series, DataFrame 형식의 객체는 다음 함수를 사용하여 sqlite에 저장 하고 읽을 수 있습니다. 이를 위해서는   SQlite와 python  참조 절차는 다음과 같습니다. 1) 저장할 DB로의 연결 con=sqlite3.connect("C:/~/stock.db") 2) 그 파일내에 모든 명렬을 실행할 커서를 생성 cur=con.cursor() 3) dataframe 객체를 연결된 db파일내에 저장하기 위해 다음 함수를 사용합니다. 객체명.to_sql('저장할 객체이름', con) 이 함수에 의해 저장된 객체는 연결된 db내에 테이블로 저장됩니다. 다음으로 두개의 테이블이 생성됩니다. sila.to_sql('silragen', con) dat['kospi'].to_sql('kospi', con) 4) 저장된 테이블을 보기 위해서는 다음 함수를 사용합니다. pd.read_sql("select * from 테이블 이름", con) 예) pd.read_sql("select * from silragen", con) pd.read_sql("select * from kospi", con) DataFrame.to_sql(name, con, schema = None , if_exists= 'fail' , index= True , index_label= None , chunksize= None , dtype= None ) name: 테이블 이름 con: connect 객체 schema : 미리 정해진 데이터 구조를 나타내는 것으로 sql의 타입을 나타냅니다. 기본값은 sqlite입니다. if_exists: 저장할 테이블이 존재하는 경우에 어떻게 대응할 지를 지정합니다. 인자값은 {'fail', 'replace', 'ap

SQlite와 python

python과 sqlite의 연결 python과 sqlite의 연결을 위해 python의 sqlite3 모듈을 사용합니다. SQlite는 별도의 서버가 필요하지 않습니다. 그러므로 다음과 같이 간단히 두 언어의 연결이 이루어 집니다. sqlite의 운영은 다음 과정으로 이루어집니다. 1) 선택한 데이터베이스에 대한 연결 : connection 2) 데이터 전달을 위한 커서 설정: cursor 3) SQL을 이용해 데이터를 조작: 상호작용 4) SQL 조작을 데이터에 적용한 후 이를 영구적으로 반영(커밋) 5) 그러한 조작을 중단(롤백) 상호작용이 발생하기 전의 상태로 데이터를 되돌리도록  연결에 지시 6) 데이터 베이스에 대한 연결을 닫음: close conn=sqlite3.connect("C:/~/test.db") cur=conn.cursor() #table 생성 cur.execute('''create table ex1(id integer primary key, name text, phone text, email text unique, password text)''') #연결 닫기 conn.close() #생성한 데이블 삭제 cur.execute('''drop table ex1''') conn.commit() #commit() 명령은 테이블이 아닌 연결된 db(여기서는 conn)차원에서 이루어집니다. #다음은 동일한 db에서 테이블을 생성하고 데이터를 입력합니다. conn=sqlite3.connect("C:/Users/hp/Documents/stock/DB/test.db") cur=conn.cursor() cur.execute('''create table ex1(id integer primary key, name text, phone text, email text uni

최소제곱법 개요

최소제곱법 한 시점의 설명변수 벡터(특정변수 벡터, x)에 대한 목적변수(f(x), y) 사이의 다음 모형을 설정합니다.  $$f(x) =w_0+w_1x+x_2x^2+\cdots+w_m x^{m-1} = \sum^M_{m=0}w_mx^M$$ 이 식에 의한 예측값과 실측값 사이의 차의 제곱을 오차라고 합니다. 이 오차값이 작아지고 0에 근접한다면 위 모형이 실측값에 근접한다는 것을 의미하지요.  오차에 대한 지표를 설정하기 위해 오차제곱의 합과 그 값을 반으로 나눈것을 "오차 ED"라고 정의합니다.  $$E=\frac{1}{2}\sum^N_{n=1}(f(x)-y)^2$$ $$E_D=\frac{1}{2}\sum^{N_n=1}(f(x)-y)^2$$ 실제로 오차를 최소하는 조건을 위한 지표로 위 두 식 중 어떤 것을 사용해도 상관없습니다.  위 식에 f(x)를 설정한 모형으로 대체하면 다음과 같이 정리 됩니다. $$E_D=\frac{1}{2}\sum^{N_n=1} (\sum^M_{m=0}w_mx^M-y)^2$$ 위의 E_D 즉, 오차제곱을 최소로 하는 것이 최종목표이며 이러한 기법을 최소제곱법이라 합니다. 위의 E_D를 오차함수라고 합니다.  설명변수가 n개이고 m차 까지로 한다면 행렬로 나타내면 아래와 같이 설명변수 행렬 X의 차원은 n $\times$ m가 됩니다. (아래 행렬의 각 행의 원소들은 $x^0, x^1, \cdots, x^{M+1}$을 가지므로 열의 차원이 m은 M이 아니라 M+1이 됩니다.) $$ X=\left[\begin{array}{rrrr}x_{11}&x_{12}&\cdots&x_{1m}\\x_{21}&x_{22}&\cdots&x_{2m}\\ \vdots&\vdots&\cdots&\vdots\\x_{n1}&x_{n2}&\cdots&x_{nm}\end{array}\right]$$  각 설명변수에

apt-get 명령

apt-get apt-get(Advanced packaging Tool)은 우분트를 포함한 데미안 계열의 리눅스에서 사용되는 팩키지 관리 명령에 도구입니다. 이 도구는 command based tool로서 GUI 기반의 시냅틱 꾸러미 관리자의 사용보다 편리합니다. 이 명령어는 sudo와 함께 사용되는데 이것은 superuser의  권한으로 실행함을 알려 주는 것입니다. apt를 사용해서 설치된 deb 패키지는  /var package index 정보 업데이트 apt-get은 인덱스를 가지고 있는데 이 인덱스는 etc/apt/sources.list에 있습니다. 이곳에 저장된 저장송에서 사용할 패키지의 정보를 얻습니다. sudo apt-get update 설치된 패키지를 모두 새 버전으로 업그래이드 합니다. 사용가능한 패키지들과 그 버전들의 리스트를 업데이트, 실제로는 패키지의 최신버전의 존재를 확인하고 알려주는 용도 sudo apt-get upgrade 실제로 최신버전으로 업그레이트 하는 명령어로 update에서 확인된 최신버으로 업그레이드하는 명령어 sudo apt install 패키지 이름 하나의 패키지 또는 한번에 여러개의 패키지를 (모든 이름을 리스크하여) 설치한다. sudo apt-get –reinstall install 패키지이름 패키지 재설치 sudo apt-get remove 패키지이름 패키지 삭제하는데 설정 파일은 삭제하지 않습니다. sudo apt-get –purge remove 패키지이름 설정파일까지 모두 지웁니다. sudo apt-get source 패키지이름 패키지 소스코드 다운로드 sudo apt-get build-dep 패키지이름 다운로드한 소스코드를 의존성있게 빌드 sudo apt-cache search 패키지 이름 패키지 검색