기본 콘텐츠로 건너뛰기

5월, 2022의 게시물 표시

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

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

이진분류(Binary Classification)

내용 MNIST 자료 호출 이진분류기, SGD classifier 교차검증(Cross-Validation) 혼동행렬 정밀도/재현율 트레이드오프 이진분류(Binary Classification) MNIST 자료 호출 MNIST 데이터셋트에 대해 분류 문제를 적용합니다. import numpy as np import pandas as pd from sklearn.datasets import fetch_openml import matplotlib as mpl import matplotlib.pyplot as plt import pickle, gzip 다음의 mnist 자료는 kaggle 로 부터 다운받은 자료를 pickle.load()함수로 압축을 해제하여 호출한 것입니다. 이 자료는 이미 훈련, 검정, 테스트 셋트로 분리된 상태입니다. 각 그룹에는 특징들과 라벨이 튜플 형식으로 포함되어 있습니다. with gzip.open('mnist.pkl.gz', 'rb')as f: tr, val, te=pickle.load(f, encoding="latin1") tr[0].shape, val[0].shape, te[0].shape ((50000, 784), (10000, 784), (10000, 784)) Xtr, ytr=tr[0], tr[1] Xval, yval=val[0], val[1] Xte, yte=te[0], te[1] plt.imshow(Xtr[0,:].reshape(28, 28)) plt.axis('off') plt.show() ytr[0], ytr.dtype (5, dtype('int64')) 라벨의 자료형은 목록형이므로 숫자형으로 전환 이진분류기, SGD classifier 데이터 mnist에서 숫자 하나를 분류해 봅니다. 예를 들어 숫자 '5'와 나머지를

연속형변수를 목록형변수로 변환

내용 주가자료의 호출과 정리 인덱스 적용 .mask()적용 결측값 치환 변화량 계산과 표준화 목록화 연속형변수를 목록형변수로 변환 연속형 변수인 주가자료를 종가의 상승과 하락에 대한 추정을 위해 로지스틱 회계분석을 적용할 수 있습니다. 이 분석의 자료는 목록변수이어야 하므로 연속형변수를 목록변수로의 전환이 필요합니다. 이번 포스트에서는 이 과정을 소개합니다. 주가자료의 호출과 정리 파이썬 패키지 FinanceDataReader 를 사용하여 다양한 금융자료를 사용할 수 있습니다. 다음은 일정 기간의 코스피 자료를 호출한 것입니다. import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt import FinanceDataReader as fdr st=pd.Timestamp(2010,8, 26) et=pd.Timestamp(2022, 5, 27) data=fdr.DataReader('KS11', st, et) data.head(2) Close Open High Low Volume Change Date 2010-08-26 1729.76 1744.08 1744.40 1729.76 303050000.0 -0.0029 2010-08-27 1729.56 1724.00 1732.84 1719.20 245580000.0 -0.0001 호출받은 자료에 0, Na, inf 등 다양한 종류의 결측치가 포함되어 있을 수 있습니다. 이들은 직전 또는 직후 값으로 대체 또는 삭제 할 수 있습니다. 위에서 사용한 모듈로 부터 호출한 자료는 결측치를 0으로 대체하고 있습니다. 다음은 자료의 값이 0인 행과 열을 반환한 것입니다. np.where(data==0) (array([ 450, 473, 541, 571,

목록변수를 순서형변수로 전환

내용 Vectorize OneHot encoding ColumnTransfer make_column_selector make_column_transformer 목록변수를 순서형변수로 전환 Vectorize 목록변수에 포함된 모든 text를 단어 수준에서 분리합니다. 즉, token화하여 벡터로 변환합니다. 예를 들어 자료의 한 열이 다음과 같이 텍스트로 구성된 경우 벡터화는 다음과 같이 이루어집니다. His Last Bow How Watson Learned the Trick A Moveable Feast The Grapes of Wrath 이 데이터의 포함된 모든 텍스트의 token 각각에 1을 할당하여 다음과 벡터화 할 수 있습니다. text 'bow' 'feast' 'grapes' 'his' 'how' 'last' 'learned', 'moveable' 'of' 'the' 'trick' 'watson' 'wrath' Vector 1 1 1 1 1 1 1 1 1 1 1 1 1 위 표를 기준으로 1행의 "His Last Bow"는 다음과 같이 벡터화할 수 있습니다. text 'bow' 'feast' 'grapes' 'his' 'how' 'last' 'learned', 'moveable' 'of' 'the' 'trick' 'watson' 'wrath' Vector 1 0 0 1

교차검증(Cross-validation)

내용 k-fold 교차검증(Cross-validation) 계층화 Kfold 훈련, 검증세트 분리에 계층화 적용 교차검증(Cross-validation) k-fold 교차검증(Cross-validation) 데이터 샘플이 제한된 경우 기계학습 모델을 평가하기 위해 사용되는 resampling 기법으로 데이터셋트를 소그룹으로 분류하여 각 그룹을 평가하는 것으로 분류의 그룹 수인 k라는 매개변수(hyperparameter)를 가집니다. 데이터를 무작위로 혼합(shuffle) 데이터를 k 그룹으로 분리 각 그룹에서 훈련(train)과 검정(test) 세트로 분리 훈련 세트에 모델을 맞추고 테스트 세트에서 평가 평가 점수를 유지하고 모델을 폐기 모델 평가 점수 비교 k-겹 교차 검증 실행의 결과는 종종 모델 기술 점수의 평균으로 요약됩니다. 표준 편차 또는 표준 오차와 같은 기술 점수의 분산 측정을 포함하는 것도 좋은 방법입니다. 그 분산이 크다면 모델의 과적합, 대표성의 결핍 등의 문제를 고려할 수 있습니다. k 값을 선택하기 위한 세 가지 일반적인 전술은 다음과 같습니다. represtative: 샘플의 운련/검정 데이터의 크기는 통계적으로 더 큰 데이터 셋트를 대표할 정도로 충분한 크기로 k를 설정합니다. k=10: 이 값은 실험적으로 적당한 분산과 낮은 편향을 가진 모델의 추정치를 갖는 수준으로 알려진 값입니다. n=n: k 값은 n으로 고정됩니다. 여기서 n은 각 테스트 샘플에 홀드아웃 데이터셋에 사용할 기회를 주기 위한 데이터셋의 크기입니다. 이 접근 방식을 Leave-One-Out 교차 검증이라고 합니다. import numpy as np import pandas as pd from sklearn.model_selection import KFold, Str

특별메서드의 종류

특별메서드의 종류 컬렉션 자료형은 그 자체가 클래스입니다. 그 자료형에 따라 내장된 특별메서드와 속성은 다음과 같습니다. 메서드 리스트 튜플 내용 x.__add__(y) ● ● x와 y의 연결(concatenation)하여 새로운 객체 생성 x.__iadd__(y) ● x += y 연결(concatenation), x가 연결된 객체로 변경(in-place concatenation) x.append(e) ● x의 마지막 요소로 e를 첨가, e의 자료형 유지 x.clear() ● x의 모든 요소 삭제, 빈 객체 x는 존재 x.__contains__(e) ● ● e in s x.copy() ● 요소가 리터럴일 경우 깊은복사, 컬렉션일 경우 얕은복사 x.count(e) ● ● 요소의 발생횟수 x.__delitem__(p) ● 인덱스 p의 값을 삭제 x.extend(ㄷ) ● x의 마지막 요소로 e를 첨가, e 자료형은 숫자형 또는 문자형, 즉, 리터럴로 변환 x.__getitem__(p) ● ● 인덱스 p의 요소를 반환 x.__getnewargs__() ● Support for optimized serialization with pickle x.index(e) ● ● 객체 x에서 e의 첫번째 인덱스를 반환 x.insert(p, e) ● 인덱스 p에 e를 삽입 x.__iter__() ● ● Get iterator x.__len__() ● ● 객체 x의 크기=len(x) x.__mul__(n) ● ● x * n—repeated concatenation x.__imul__(n) ● x *= n—in-place repeated concatenation x.__rmul__(n) ● ● n * s—reversed repeated concatenationa x.pop([p]) ● Remove and return last

확률적 모델 선택(Probability Model Selection)

내용 모델 선택 확률적 모델 선택(Probability model selection) 최대우도추정(Maximum Likelihood Estimation) AIC BIC 적용 확률적 모델 선택(Probability Model Selection) 모델 선택 다중 변수를 가진 데이터 세트의 경우 변수들의 조합, 또는 모델 타입에 따라 다양한 모델을 선택할 수 있습니다. 구축된 모델들 중에 최상의 모델을 선택하기 위해 각 성능을 추정하여 모델을 선택할 수 있습니다. 모델 선택에 사용할 수 있는 일반적인 접근 방식이 많이 있습니다. 예를 들어 지도 학습의 경우 가장 일반적인 세 가지 접근 방식은 다음과 같습니다. 데이터 세트 훈련, 검증 및 테스트. 리샘플링 방법. 확률 통계. 가장 간단하고 신뢰할 수 있는 모델 선택 방법은 훈련 세트에 후보 모델을 맞추고, 검증 데이터 세트에서 튜닝하고, 정확도 또는 오류와 같은 선택된 메트릭(평가기준) 에 따라 테스트 데이터 세트에서 가장 잘 수행하는 모델을 선택하는 것입니다. 이 접근 방식의 문제점은 많은 데이터가 필요하다는 것입니다. 샘플 수가 작은 데이터 셋의 경우 무작위로 샘플링한 데이터 세트를 사용하여 위의 메커니즘을 실행합니다. 이 방법으로 k-겹 교차검증 을 실시합니다. 이 결과 k개의 모델이 생성되며 그 중 가장 좋은 평균 점수로 선택됩니다. 그러나 이 방법은 데이터를 훈련과 검증 세트 구분하는 방법과 함께 단순히 모델 성능만을 고려합니다. 다시말하면 모델에 적용되는 변수들의 영향 등 모델 복잡도와는 관계가 없습니다. 모델 선택에 대한 세 번째 접근 방식은 모델의 복잡성과 모델의 성능을 점수로 결합한 다음 점수를 최소화하거나 최대화하는 모델을 선택하는 것입니다. 이 스코어링 방법은 확률적 프레임워크를 사용하므로 이 접근 방식을 통계적 또는 확률적 모델 선택이라고 할 수 있습니다. 확률적 모델 선택(Proba

pivot_table과 crosstab

내용 pivot_table() 교차표 pivot_table과 crosstab 코스피 지수의 일일 'Open',"high','Low', 'Close', 'Volum', 'Change' 자료를 예로 사용합니다. pivot_table() 피벗 테이블을 만드는 데 사용할 수 있는 함수입니다. pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', …) data: DataFrame 개체 values: 집계할 열 또는 열 목록 index 열, Grouper, 데이터와 길이가 같은 배열 또는 목록 피벗 테이블 인덱스에서 그룹화 기준으로 사용할 키 배열이 전달되면 열 값과 동일한 방식으로 사용 columns 열, Grouper, 데이터와 길이가 같은 배열 또는 목록 피벗 테이블 열에서 그룹화 기준으로 사용할 키 배열이 전달되면 열 값과 동일한 방식으로 사용 aggfunc: 집계에 사용할 함수, 기본값은 numpy.mean import numpy as np import pandas as pd import FinanceDataReader as fdr st=pd.Timestamp(2021,8, 26) et=pd.Timestamp(2022, 5, 18) da=fdr.DataReader('KS11', st, et) 호출한 데이터는 연속형이므로 명목형으로 전환합니다. pd.qcut() 함수를 사용합니다. colNme=da.columns[:-1] CaRef=pd.DataFrame() data=pd.DataFrame() for i in colNme: re=pd.qcut(da[i], q=

pandas.groupby()에 의한 데이터 그룹화

내용 df.groupby() get_group() groupby().method() aggregate(), agg() filter() pandas.groupby()에 의한 데이터 그룹화 df.groupby() 데이터프레임의 구조의 데이터의 하나의 열을 그룹화할 경우 각 그룹에 대한 함수를 적용할 수 있습니다. 예로 다음은 "Open", "High", "Low", "Close"의 변수로 구성된 kospi 일일 지수 데이터입니다. 이 데이터는 연속형(continuous)으로 이를 목록화 한 것입니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt import FinanceDataReader as fdr colNme=["Open", "High", "Low", "Close"] st=pd.Timestamp(2022,4, 1) et=pd.Timestamp(2022, 5, 16) da=fdr.DataReader('KS11', st, et)[colNme] da.head(3) Open High Low Close Date 2022-04-01 2745.85 2745.85 2729.68 2739.85 2022-04-04 2729.86 2758.38 2722.45 2757.90 2022-04-05 2765