25.05.19 코딩 공부 시작

코딩 척척석박사 분들 피드백 환영합니다.

공대생이 코딩에서 살아남기

강의자료/머신러닝의 이해와 라이브러리 활용

4강. 데이터 분석 프로세스(06.30, 07.01)

코딩 아가 2025. 7. 1. 14:28

데이터 수집

SNOW FLAKE

Data Source: 적재된 데이터

  • OLTP Database: OnLine Transaction Processing 동시에 발생하는 다수의 트랜잭션(데이터베이스 작업의 단위) 처리 유형
  • Enterprise Applications: 회사 내 데이터 (ex 고객 관계 데이터, 제품 마케팅 세일즈)
  • Third - Party: Google Analytics와 같은 외부소스에서 수집되는 데이터
  • Web/Log: 사용자의 로그데이터

ETL(Extract Transform Load): 데이터 추출 변환 로드

Data Lake: 원시 형태의 다양한 유형의 데이터를 저장

Data Warehouse: 보다 구조화된 형태로 정제된 데이터를 저장

Data Marts: 회사의 금융, 마케팅, 영업 부서와 같이 특정 조직의 목적을 위해 가공된 데이터

BI/Analytics: business Intelligence(BI)는 의사결정에 사용될 데이터를 수집하고 분석하는 프로세스

실제 수집 방법

데이터 존재O: SQL, Python으로 데이터 마트 생성

데이터 존재X: 데이터 수집 필요

  • CSV, EXCEL 파일 다운로드
  • API 이용
  • Data Crawling

탐색적 데이터 분석(EDA)

데이터의 시각화, 기술통계 등의 방법을 통해 데이터를 이해하고 탐구하는 과정

기술통계: df.describe() / include='all': 숫자형+범주형 데이터 확인가능

시각화

  • sns.countplot(x = ' ', data = df): 범주형 자료의 빈도 수 시각화(x축: 범주형 자료, y축: 빈도수)
  • sns.barplot(x = '  ', y = '  ', data = df): 범주형 자료 시각화
  • sns.boxplot(x = '  ', y = '  ', data = df): 수치형&범주형 자료 시각화
  • sns.histplot(data = df,  x = ' '): 수치형 자료 빈도 수 시각
  • sns.scatterplot(x = '  ', y = '  ', data = df): 수치형 자료 시각화
  • sns.pairplot(data =df): 여러 개의 변수를 동시에 시각화

데이터 전처리

이상치(Outlier)란?

보통 관측된 데이터 범위에서 많이 벗어난 아주 작은 값 혹은 큰 값

1. ESD 이용

  • 정규분포 따른다고 가정 > 평균에서 표준편차 3배 이상 떨어진 값(Z)
import numpy as np
mean = np.mean(data)
std = np.std(data)
upper_limit = mean + 3*std
lower_limit = mean - 3*std

2. IQR 이용

  • Box plot 사용(사분위 수)
  • Q1: 25%, Q2: 50%중위수, Q3: 75%
Q1 = df['column'].quantile(0.25)
Q3 = df['column'].qunatile(0.75)
IQR = Q3 - Q1
uppper_limit = Q3 + 1.5*IQR
lower_limit = Q1 - 1.5*IQR

결측치(Missing Value)

존재하지 않는 데이터

1. 수치형 데이터

  • 평균 값 대치
  • 중앙값 대치

2. 범주형 데이터

  • 최빈값 대치

3. 사용 함수

  • 간단한 삭제
    • df.dropna(axis = 0): 행 삭제
    • df.dropna(axis = 1): 열 삭제
  • Boolean Indexing
  • 간단한 대치
    • df.fillna(value): 특정 값으로 대치(평균, 중앙, 최빈값)
  • 알고리즘 이용
    • sklearn.impute.SimpleImputer: 평균, 중앙, 최빈값으로 대치(SimpleImputer.statistics_ : 대치한 값 확인 가능)
    • sklearn.impute.IterativeImputer: 다변량대치(회귀 대치)
    • sklearn.impute.KNNImputer: KNN 알고리즘을 이용한 대치

범주형(인코딩 Encoding)

1. 레이블 인코딩

  • 문자열 범주형 값을 고유한 숫자로 할당(수치형으로 변환)
  • sklearn.preprocessing.LabelEncoder

2. 원-핫 인코딩

  • 각 범주를 이진 형식으로 변환하는 것(독립적 표현)
  • pd.get_dummies
  • sklearn.preprocessing.OneHotEncoder

수치형(스케일링 Scaling)

1. 표준화(Standardization)

  • 이상치 존재, 분포가 치우쳐 있을 때 유용
  • sklearn.preprocessing.StandardScaler

2. 정규화(Normalization)

  • 데이터를 최소0, 최대1로 조정
  • sklearn.preprocessing.MinMaxScaler

3. 로버스트 스케일링(Robust)

  • 중앙값 + IQR 
  • sklearn.preprocessing.RobustScaler

데이터 분리

과적합이란?

데이터를 너무 과도하게 학습한 나머지 해당 문제 이외에 제대로 예측, 분류 못하는 현상

  • 복잡: 과대 적합
  • 간단: 과소 적합

[원인]

복잡도

양이 충분X

반복이 많음(딥러닝)

불균형

[해결]

  • 학습 데이터(Train Data): 모델을 학습(fit)하기 위한 데이터
  • 테스트 데이터(Test Data): 모델을 평가 하기 위한 데이터
  • sklearn.model_selection.train_test_split
    • test_size: 테스트 데이터 세트 크기
    • train_size: 학습 데이터 세트 크기
    • shuffle: 데이터 분리 시 섞기
    • r andom_state: 호출할 때마다 동일한 학습/테스트 데이터를 생성하기 위한 난수 값. 
    • 반환 값: X_train, X_test, y_train, y_test

교차 검증이란?(Cross Validation)

데이터 셋을 여러 개의 하위 집합으로 나누어 돌아가면서 검증 데이터로 사용하는 방법

K-Fold Validation

  • k의 하위 집합으로 나누어 모델을 학습시키고 모델을 최적화 하는 방법
  • 데이터가 부족할 경우 유용(반복 학습)
  • skelarn.model_selection.KFold: 평
  • sklearn.model_selection.StrifiedKFold: 불균형한 레이블(Y)

k 분할 개수

  • Split 1: 학습용(Fold 2~5), 검증용(Fold1)
  • Split 2: 학습용(Fold1, 3~5), 검증용(Fold2)
  • Split 5까지 반복 후 최종 평가

GridSearchV(하이퍼 파라미터)란?

모델을 구성하는 입력 값 중 사람이 임의적으로 바꿀 수 있는 입력 값

정리

 

  •