빅데이터분석기사 실기 2유형 합격을 위한 핵심 가이드! 데이터 전처리부터 EDA, RandomForest 모델링, 성능 평가까지 전 과정을 정리했습니다. 실습 코드를 통해 와인 종류 분류 문제를 직접 해결하며 실전 감각을 익혀보세요.
안녕하세요, 데이터분석 마스터 박박사입니다!
지난 포스팅에 이어 오늘은 빅데이터분석기사 실기 제2유형(작업형 2)을 완벽하게 대비할 수 있는 정리 노트를 준비했습니다.
2유형은 데이터를 직접 전처리하고 머신러닝 모델을 만들어 예측값을 제출해야 하므로, '분석의 흐름'을 몸에 익히는 것이 무엇보다 중요합니다.
제가 정리한 핵심 요약과 실제 실습 코드를 바로 확인해 보세요!
1. 분류(Classification) 분석 시 꼭 기억해야 할 주의사항
분석을 시작하기 전, 가장 중요한 포인트는 바로 데이터의 균형입니다.
층화 추출(Stratified Sampling): 종속변수(Y)를 분리할 때 train_test_split 함수에서 stratify=y 옵션을 반드시 사용하세요.
이는 학습 데이터와 검증 데이터 내 클래스 비율을 일정하게 유지해 모델의 신뢰도를 높여줍니다.
2. 모델 성능 평가 지표 정리
모델을 만들었다면 얼마나 잘 예측했는지 평가해야겠죠? 문제 유형(회귀/분류)에 따라 평가 지표가 달라집니다.
회귀(Regression): MSE, RMSE, MAE, MAPE, R2
분류(Classification): Accuracy(정확도), F1 Score, ROC-AUC (본 포스팅 실습에서는 정확도와 F1 Score를 중점적으로 다룹니다.)
3. 데이터 전처리 및 분석 순서 (Cheat Sheet)
2유형의 합격 공식은 다음과 같은 5단계를 따릅니다.
라이브러리 및 데이터 확인: Pandas, Numpy 등 필수 라이브러리 로드
EDA (탐색적 데이터 분석): shape, info(), describe(), value_counts()로 데이터 파악
데이터 전처리: 결측치 처리(dropna, fillna), 이상치 처리, 변수 인코딩(One-Hot Encoding 등)
모델링 및 성능 평가: 성능이 뛰어난 RandomForest 모델 추천
예측값 제출: 최종 결과를 요구하는 양식(CSV 등)으로 저장
💡 왜 RandomForest인가요?
회귀와 분류 모두에 사용 가능하며, 앙상블 모형이라 성능이 매우 우수합니다.
이상치에 민감하지 않고 데이터 분석 속도가 적절해 시험 환경에서 가장 안정적입니다.
4. [실습] 와인 종류 분류 모델 만들기
이제 실제 코드를 통해 실전 연습을 해보겠습니다. 와인 데이터를 활용해 종류를 분류하는 프로세스입니다.
Step 1. 라이브러리 및 데이터 로드
Python
import pandas as pd
import numpy as np
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
# 데이터 불러오기
wine = load_wine()
x = pd.DataFrame(wine.data, columns = wine.feature_names)
y = pd.DataFrame(wine.target)
# 데이터 분리 (stratify 옵션 필수!)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2,
stratify=y,
random_state=2023)
x_test = pd.DataFrame(x_test)
x_train = pd.DataFrame(x_train)
y_train = pd.DataFrame(y_train)
y_train.columns =['target']
# 인덱스 초기화가 필요한 경우
x_test = x_test.reset_index(drop=True)
Step 2. 데이터 탐색 (EDA)
데이터의 생김새를 알아야 전처리 방향을 정할 수 있습니다.
Python
# 데이터 크기 및 상위 행 확인
print(x_train.shape)
print(x_train.head(3))
# 결측치 및 데이터 타입 확인
print(x_train.info())
# 기초 통계량 확인 (T를 붙여 행/열 전치해서 보면 편합니다)
print(x_train.describe().T)
# 타겟 레이블 분포 확인
print(y_train['target'].value_counts())
Step 3. 데이터 전처리 및 검증 데이터 분리
Python
# 결측치 확인 (있다면 median이나 mean으로 대체 고려)
print(x_train.isnull().sum())
# 학습용 데이터를 다시 훈련용(80%)과 검증용(20%)으로 분리
x_train, x_val, y_train, y_val = train_test_split(x_train,
y_train['target'],
test_size = 0.2,
random_state = 2023)
print(f"훈련 데이터: {x_train.shape}, 검증 데이터: {x_val.shape}")
마치며
빅데이터분석기사 실기 2유형은 당황하지 않고EDA → 전처리 → 모델링 → 제출의 흐름을 유지하는 것이 핵심입니다.
위 코드를 직접 Jupyter Notebook에 입력해보며 손에 익혀보시기 바랍니다. 다음 포스팅에서는 더 심화된 변수 처리 기법으로 돌아오겠습니다!