본문 바로가기

728x90
반응형

분류 전체보기

(168)
데이터 분석 및 학습 (전체 과정) 이번 포스팅에서는 실제로 데이터를 이용하여 데이터 전처리부터 특정 머신러닝 모델을 활용하여 학습을 하는 과정까지를 정리해 보았습니다. 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..
결측치 처리 - KNNImputer 결측 데이터를 처리하는 방법으로는 크게 2가지 방법이 있습니다. 단순 대치법: 수치형 변수라면, 각 컬럼의 평균이나 중앙값을 사용하여 결측치를 채울 수 있습니다. 만약 범주형 변수라면, 최빈값을 사용하여 대치할 수 있습니다. KNN을 이용한 결측치 대체: 보간법 중 결측치가 없는 컬럼들의 최근접 이웃 알고리즘을 통해 결측치가 있는 변수를 채울 수 있습니다. 단, 이 방법은 거리 계산이 가능한 수치형 변수만 가능합니다. 아래의 데이터를 활용하여 KNNImputer를 활용한 결측치 변수를 처리해 보도록 하겠습니다. 그림과 같이 결측치가 존재하고, 결측치가 존재하는 데이터는 수치형 데이터인 것을 확인할 수 있습니다. 이제 이 결측치를 채워보도록 하겠습니다. 먼저 수치형 변수만 추출하여 데이터프레임을 재구성하고..
Confusion Matrix - 혼동행렬 분류분석을 수행할 때 예측기가 얼마나 정확한지 알고리즘 성능을 평가하기 위한 지표로는 accuracy(정확도)가 있습니다. 하지만 정확도 수치 하나만으로 분류기를 평가하기에는 부족한 경우가 많은데요. 이 경우에 분류분석에서 Confusion Matrix라는 행렬을 이용하여 다양한 평가 지표를 사용합니다. 그럼 Confusion Matrix에 대해서 알아보겠습니다. Confusion Matrix 이진 분류의 예측오류가 얼마이고, 어떠한 유형의 예측 오류가 발생하고 있는지 나타내는 지표 python 코드로는 아래와 같이 sklearn 라이브러리의 confusion_matrix 모듈을 활용합니다. from sklearn.metrics import confusion_matrix cm = confusion_mat..
PCA - 차원 축소 데이터 분석을 수행할 때 설명변수의 수가 많으면 오히려 과적합이 발생하여 알고리즘 성능이 저하되는 경우가 많습니다. 즉, 데이터의 수에 비해 데이터의 차원이 크면 알고리즘 성능이 떨어지는 '차원의 저주(Curse of Dimensionality)'가 발생하는데 그렇기 때문에 분석을 수행할 때 데이터의 크기와 설명변수의 수를 잘 따져보고 데이터를 잘 설명할 수 있는 변수를 선택 및 추출하여 모델 생성에 사용해야 합니다. 이번 포스팅에는 데이터의 차원을 축소하는 방법 중 하나인 PCA에 대해서 알아보겠습니다. PCA Principle Component Analysis: 주성분 분석 주성분 분석은 여러 변수 간에 존재하는 상관관계를 이용하는 차원 축소 방법입니다. 즉, 데이터를 축에 사영했을 때 분산이 가장 ..
날짜 데이터 핸들링 (datetime) 이번 포스팅에는 time series 데이터들을 다루기 위한 datetime 모듈에 대해서 공부해 보겠습니다. 현재 날짜 추출 먼저 datetime 모듈을 통해 현재 날짜를 추출해 보도록 하겠습니다. 아래와 같이 사용하면 됩니다. from datetime import datetime datetime.today() 결과는 현재 날짜에 관한 시간들이 나오고 결과는 year, month, day, hour, minute, second, microsecond 순으로 출력됩니다. 아래와 같이 결과들 중 하나의 값을 추출할 수도 있습니다. (아래는 month 값 추출) 날짜 형식으로 변환하기 날짜 형식(datetime)으로 되어 있지 않은 데이터를 날짜 형식으로 변환하면 데이터를 다룰 때 편리한 점이 많습니다. d..
데이터 재구조화 (pivot_table, melt) 데이터를 다룰 때 데이터의 구조를 바꿔서 처리해야 하는 경우가 많습니다. 이번 포스팅에서는 데이터를 재구조화하여 데이터의 형태를 변경하는 방법을 배워보겠습니다. Pivot Table Pivot table은 원본 데이터에서 원하는 열만 선택하여 행과 열에 배치해 새로운 형태의 테이블을 만들어 줍니다. 즉, 원본 데이터에서 새로운 형태의 데이터(피벗 테이블)를 만들 때, 피벗 테이블의 index, column, value로 사용할 열을 선택하여 재구조화할 수 있습니다. 아래의 함수를 사용하여 pivot table 기능을 사용할 수 있습니다. DataFrame.pivot_table(index=None, columns=None, values=None, aggfunc='mean') index: 피벗 테이블에서 인..

728x90
반응형