본문 바로가기

728x90

분류 전체보기

(132)
Sampling 기법 불균형 데이터 클래스 분포를 예측해야 하는 분류문제에서 예측 라벨 값의 분포수가 현저히 차이나는 데이터로, 불균형한 분포를 가진 데이터로 학습하면 성능에 문제가 발생할 수 있습니다. 불균형한 데이터 셋은 이상 데이터를 정확히 찾아내지 못할 수 있다는 문제점이 존재합니다. 해결방법 소수 클래스에 속하는 데이터들을 추가로 수집합니다. 불균형 데이터 분류 모델에 적합한 성능평가의 지표를 선정합니다. 모델 학습 전, 데이터를 적절한 방식으로 Sampling 합니다. 아래와 같은 샘플링의 종류가 있습니다. UnderSampling: Random Sampling, Tomek Links 등 OverSampling: Resampling, SMOTE, Borderline SMOTE, ADASYN 등 비용 또는 가중치를 ..
Euler's Phi (오일러 파이 함수) 개념 및 정의 오일러 파이 함수의 정의는 아래와 같습니다. 즉, 이를 해석해 보면 양의 정수 n의 오일러 파이 함수는, 1부터 n까지의 정수 가운데 n과 서로소인 것들의 개수 입니다. 성질 1. 두 정수 m과 n이 서로소인 경우 n의 서로소 개수 곱과 m의 서로소 개수 곱은 n*m의 서로소 개수입니다. 2. 정수 p가 소수인 경우 소수 p의 서로소는 1을 제외한 모든 수입니다. 3. 소수 p의 거듭제곱인 경우 1~3을 종합한 결론 위 성질들을 통해 소인수를 이용한 오일러 파이 함수를 아래와 같이 구할 수 있습니다. 그리고 아래 함수를 오일러 곱 공식이라고 합니다. 예를 들어, 20의 소인수는 2와 5 이므로, ∅(20) 은 20(1-1/2)(1-1/5) = 8로 구할 할 수 있습니다. 증명 오일러 곱 공..
Sort 커스터마이징 (범주형 변수) import pandas as pd import numpy as np from pandas.api.types import CategoricalDtype df = pd.DataFrame({ 'cloth_id': [1001, 1002, 1003, 1004, 1005, 1006], 'size': ['S', 'XL', 'M', 'XS', 'L', 'S'], }) df cat_size_order = CategoricalDtype( ['XS', 'S', 'M', 'L', 'XL'], ordered=True ) df['size'] = df['size'].astype(cat_size_order) # 형 변환 필수 df.sort_values('size') df['size'].cat.codes # 결과 ``` 0 1 1 ..
pandas의 transform 함수 (apply 함수와의 차이) 판다스에서 제공하는 transform() 함수에 대해서 알아보겠습니다. 그리고 apply 함수와의 차이점도 알아보겠습니다. transform()과 apply() 함수는 보통 아래와 같은 경우에 사용하면 유용합니다. Transforming values (값 변환) Combining groupby() results (groupby를 사용하여 집계 함수 적용 시) Filtering data (데이터 필터링) Handling missing value at the group level (그룹별 특정 값으로 null 값 채울 때) 하나씩 코드로 살펴보겠습니다. Transform 1. Transforming values: 값 변환 아래와 같은 데이터프레임으로 실습해 보겠습니다. import pandas as pd i..
Pandas로 datetime 다루기 이번 포스팅은 시계열 데이터나 시간을 속성으로 가지는 데이터를 다루기 위해 pandas에서 제공하는 datetime 모듈을 사용하여 데이터를 다루어 보도록 하겠습니다. String을 datetime으로 먼저, string으로 되어 있는 데이터 타입을 datetime 데이터 타입으로 여러 가지 방법으로 변환해 보겠습니다. 기본 방법 dayfirst = True 인자 to_datetime 함수에 dayfirst = True 를 넣으면, day(일)가 month(월)보다 앞으로 나와서 date 형으로 변환됩니다. Custom format으로 변환하기 string형으로 되어 있는 데이터를 datetime 형으로 바꿀 때, string 형 데이터의 날짜 순서가 뒤죽박죽 섞여 있거나 다른 형식으로 되어 있을 때, ..
데이터 분석 및 학습 (전체 과정) 이번 포스팅에서는 실제로 데이터를 이용하여 데이터 전처리부터 특정 머신러닝 모델을 활용하여 학습을 하는 과정까지를 정리해 보았습니다. 1. 데이터 준비 아래와 같이 diabetes 데이터를 불러옵니다. 이 데이터를 통해 우리는 Outcome 변수를 예측해야 합니다. import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns df = pd.read_csv("diabetes.csv") df.head() 2. EDA a. 시각화 1 먼저 종속변수 Outcome의 평균이 컬럼별로 어떤지 시각화해 보겠습니다. diabetes = df.groupby('Outcome').mean() fig, axes = plt..
KMP 알고리즘 문자열 검색 알고리즘으로 많이 등장하는 KMP 알고리즘에 대해서 알아보겠습니다. KMP는 Knuth Morris Partt의 줄임말로 이 알고리즘을 발견한 사람 이름을 딴 것입니다. 어떤 문자열 A에 문자열 B가 있는지 확인하려면 단순하게 A 문자열(길이 N)과 B 문자열(길이 M)을 하나하나 비교한다면, 시간 복잡도는 O(NM)가 될 것입니다. KMP 알고리즘은 이 시간 복잡도 보다 더 효율적으로 줄여 O(N+M) 만에 문자열을 검색할 수 있는 방법입니다. 어떻게 획기적으로 시간 복잡도를 줄일 수 있었는지 KMP에 대해서 알아보겠습니다. 먼저, KMP 알고리즘을 알기 전에 미리 알아야 할 사전 지식을 살펴보겠습니다. 사전지식 접두사(Prefix)와 접미사(Suffix) 우선 접두사와 접미사가 무엇인지 ..
GridSearch를 이용한 model training 이번 포스팅에는 GridSearch 모듈을 사용하여 3가지의 모델을 학습해 보겠습니다. 먼저, 아래와 같은 데이터를 활용하여 간단한 데이터 전처리 후, 모델에 SVR, RandomforestRegressor, XGBoostRegressor 모델에 GridSearchCV를 적용해 보겠습니다. 1. One-Hot Encoding 범주형 변수들을 더미 변수를 이용하여 적절하게 변환하였습니다. 2. GridSearchCV 적용 파라미터 후보들을 리스트로 넣어서 아래와 같은 결과를 얻었습니다. grid_svm의 속성 중, cv_results_를 출력해보니 아래와 같은 딕셔너리 형 데이터가 나오는 것을 확인할 수 있습니다. 이 데이터를 이용하여 점수가 제일 좋은 파라미터를 확인해 보도록 하겠습니다. cv_resul..

728x90
반응형