기본 콘텐츠로 건너뛰기

5월, 2022의 게시물 표시

[ML] 결정트리(Decision Tree) 모델

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

내용 주가자료의 호출과 정리 인덱스 적용 .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

[data analysis]교차검증(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, Stratif

[python] 리스트와 튜플 자료형과 내장메서드(built-in method)

특별메서드의 종류 자료형 리스트와 튜플은 그 자체가 클래스입니다. 그 자료형에 따라 내장된 내장 메소드(built-in method, 특별메서드)와 속성은 다음과 같습니다. 메서드 리스트 튜플 내용 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) ● 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]

[data analysis] 교차표(cross tabulation): crosstab

교차표(cross tabulation): crosstab pandas.crosstab() 함수는 pd.pivot_table() 로 생성되는 피봇테이블과 유사하지만 두 개이상의 변수들에 대한 교차표 작성에 집중합니다. 다음 자료는 코스피 일일자료를 호출한 것으로 Open, High, Low, Close, Volume, Change 특성으로 구성된 것입니다. import numpy as np import pandas as pd import FinanceDataReader as fdr st=pd.Timestamp(2023,8, 26) et=pd.Timestamp(2024, 8,8) nme=['Open', 'High','Low','Close', 'Change', 'Volume'] da=fdr.DataReader('KS11', st, et)[nme] da.head(2).round(3) Open High Low Close Change Volume Date 2023-08-28 2534.42 2543.41 2525.64 2543.41 0.010 483587568 2023-08-29 2550.76 2556.98 2545.27 2552.16 0.003 441365852 위 자료 da의 Change를 제외한 나머지 특성들(features)들을 1일 전값과의 변화율로 변환합니다. da1=da.drop("Change&q

의사결정트리(Dicisions Tree)

의사결정트리(Dicisions Tree) 의사 결정 트리는 이진 규칙 집합을 사용하여 대상 값을 계산하는 예측 모델이며 각 개별 트리는 분기, 노드 및 잎이 있는 상당히 단순한 모델입니다. 용어(terminlogy) root node: 전체 모집단 또는 샘플을 나타내며 두 개 이상의 동종 세트로 더 나뉩니다. splitting: 노드를 두 개 이상의 하위 노드로 나누는 프로세스입니다. Decicion Node: 하위 노드가 추가 하위 노드로 분할되면 결정 노드라고 합니다. Leaf/terminal node: 분할되지 않는 노드를 리프 또는 터미널 노드라고 합니다. prunning(가지치기): 의사결정 노드의 하위 노드를 제거할 때 이 프로세스를 가지치기라고 합니다. 분열의 반대 과정이라고 할 수 있습니다. Branch/Sub-tree(분기 / 하위 트리): 전체 트리의 하위 섹션을 분기 또는 하위 트리라고 합니다. Parent and Child Node(상위 및 하위 노드): 하위 노드로 분할된 노드를 하위 노드의 상위 노드라고 하는 반면 하위 노드는 상위 노드의 하위 노드입니다. 그림 1. 의사결정트리 root node에서 질문에 의해 True/False로 구분합니다. 이 과정을 계속하면 결과적으로 leaf node에 도달하게 되며 단일예측이 가능하게 됩니다. 의사 결정 트리는 분류 및 회귀 문제에 사용할 수 있는 지도 머신 러닝 알고리즘 중 하나로서 모델은 훈련 데이터에서 추출한 결정 규칙을 기반으로 합니다. 회귀 문제에서 모델은 클래스 대신 값을 사용하고 평균 제곱 오차(MSE)는 결정 정확도를 위해 사용됩니다. 그러나 의사 결정 트리 모델은 일반화에 좋지 않고 훈련 데이터의 변화에 민감합니다. 훈련 데이터 세트의 작은 변화는 모델 예측 정확도에 영향을 미칠 수 있습니다. Scikit-lea

[python]주요한 내장함수들

함수 관련내용 함수의 정의 전역변수와 지역변수 함수: 인수의 전달 가변인수 발생자(generator) 주요한 내장함수들 재귀함수(Recursive Function) 람다함수(Lambda Function) Python의 함수는 1급(First Class)객체 1급 객체와 변수의 영역 클로저(Closure) 데코레이터(Decorator, 장식자) 주요한 내장함수들(Built-in Functions) 표 1은 자주 사용되는 내장함수들을 나타낸 것입니다. 표 1 주요한 내장함수 함수 내  용 all() 모든 요소들이 참이면 True 0을 제외한 모든 수 True, empty일 경우도 True any() 참인 요소가 1개라도 존재하면 True empty일 경우도 False enumerate() 객체의 인덱스와 값을 튜플 형식으로 반환. set은 순서가 없는 자료형으로 디스플레이 된 순서대로 반환 len() 객체의 크기 (원소수) 반환 max(), min() 객체의 최대값과 최소값을 반환 sorted(x, key, reverse=False) 객체를 올림차순으로 정렬 reverse=True이면 내림차순 key는 정렬의 기준을 설정 ( 람다 함수 를 사용할 수 있음) sum() 객체내의 모든 원소의 합 filter(조건 또는 함수, 객체) 객체에 함수를 적용하여 함수에 부합하는 부분만을 추출 x={1,2,3} print(f'모든 요소가 True이므로 {all(x)}') 모든 요소가 True이므로 True y=[0, False] print(f'모든 요소가 False이므로 {any(y)}') 모든 요소가 False이므로 False print(f'all은 empty일 경우 {all([])}, any는 empty일 경우 {any([])}