본문 바로가기

빅데이터분석기사 실기 | 작업형 1·2·3

[빅분기 실기] 2유형 (3) 회귀 분석 완벽 정복! 당뇨병 데이터 예측 및 모델 평가 (RandomForest)

반응형

빅데이터분석기사(빅분기) 실기 제2유형 회귀 모델링을 완벽하게 대비하세요. 사이킷런(Scikit-learn) 당뇨병 데이터를 활용하여 데이터 전처리, 랜덤포레스트 모델링, 성능 평가(MSE, R2) 및 최종 결과 제출까지의 전 과정을 코드와 함께 상세히 정리했습니다.


안녕하세요 데이터분석 마스터 박박사입니다!

 

지난 포스팅에 이어 오늘은 빅데이터분석기사 실기 제2유형의 '회귀(Regression)' 파트를 정복해 보겠습니다.

 

회귀 문제는 분류 문제와 비슷해 보이지만, 평가 지표(Metric)와 모델 선택에서 차이가 있습니다.

 

이번 연습에서는 당뇨병 환자의 질병 진척 정도를 예측하는 실전 예제를 통해, 시험장에서 바로 쓸 수 있는 템플릿을 몸에 익혀보겠습니다.


1. 데이터 분석의 정석, 5단계 프로세스

빅분기 실기 제2유형은 아래 5단계를 기계적으로 수행할 수 있어야 합니다.

  1. 라이브러리 및 데이터 확인: 데이터 로드 및 구조 파악
  2. EDA(탐색적 데이터 분석): 기초 통계량 및 결측치 확인
  3. 데이터 전처리 및 분리: 불필요한 변수 제거 및 학습/검증 데이터 분할
  4. 모델링 및 성능 평가: 알고리즘 선택 및 평가지표(R2, MSE 등) 산출
  5. 예측값 제출: cust_id를 포함한 최종 결과 파일 생성

2. 실전 코드 및 단계별 해설

Step 1. 라이브러리 및 데이터 로드

시험 환경과 유사하게 데이터를 셋팅합니다.

Python
 
import pandas as pd
import numpy as np
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split

# 데이터 로드 및 데이터프레임 변환
diabetes = load_diabetes()
x = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)
y = pd.DataFrame(diabetes.target)

# 시험 환경과 동일하게 Train/Test 분리 (8:2)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=2023)

# 인덱스 초기화 및 식별자(cust_id) 생성
x_test = x_test.reset_index().rename(columns={'index':'cust_id'})
x_train = x_train.reset_index().rename(columns={'index':'cust_id'})
y_train = y_train.reset_index()
y_train.columns = ['cust_id', 'target']

Step 2. EDA (데이터 탐색)

데이터의 모습과 타입을 확인하여 분석 방향을 결정합니다.

Python
 
# 행/열 확인 및 상위 데이터 확인
print(x_train.shape, x_test.shape)
print(x_train.head(3))

# 결측치 및 데이터 타입 확인
print(x_train.info())

# 기초 통계량 비교 (Train과 Test의 분포가 비슷한지 확인)
print(x_train.describe().T)
  • Tip: describe().T를 사용하면 변수가 많을 때 한눈에 통계량을 파악하기 좋습니다.

Step 3. 데이터 전처리 및 데이터 분리

학습에 불필요한 cust_id는 따로 저장해두고 삭제합니다.

Python
 
# 결측치 재확인
print(x_train.isnull().sum())

# 식별자 분리 및 제거
cust_id = x_test['cust_id'].copy()
x_train = x_train.drop(columns=['cust_id'])
x_test = x_test.drop(columns=['cust_id'])

# 검증용 데이터(Validation) 분리
x_train, x_val, y_train, y_val = train_test_split(x_train, y_train['target'], 
                                                    test_size=0.2, random_state=23)

Step 4. 모델링 및 성능 평가

회귀 문제의 베스트셀러, RandomForestRegressor를 사용합니다.

Python
 
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score

# 모델 학습
model = RandomForestRegressor(random_state=2023)
model.fit(x_train, y_train)

# 검증 데이터 예측
y_pred = model.predict(x_val)

# 평가지표 출력
mse = mean_squared_error(y_val, y_pred)
r2 = r2_score(y_val, y_pred)
rmse = mse**0.5

print(f"MSE: {mse:.4f}, RMSE: {rmse:.4f}, R2 Score: {r2:.4f}")

Step 5. 최종 예측값 제출

가장 실수가 많은 부분입니다. 반드시 x_test로 예측해야 합니다.

Python
 
# 최종 테스트 데이터 예측
y_result = model.predict(x_test)

# 제출 형식 생성
result = pd.DataFrame({'cust_id': cust_id, 'target': y_result})

# 저장 전 확인
print(result.head())
# result.to_csv('result.csv', index=False) # 실제 시험 시 필수


💡 합격을 위한 빅분기 실기 핵심 팁

  1. 회귀 vs 분류 구분: 이번 문제는 수치를 예측하는 회귀이므로 RandomForestRegressor를 사용했습니다. 만약 범주(0, 1)를 예측한다면 Classifier를 써야 합니다.
  2. R-squared(R2)의 의미: 1에 가까울수록 모델의 설명력이 좋다는 뜻입니다. 만약 값이 마이너스라면 모델에 심각한 오류가 있는 것이니 전처리를 다시 확인하세요.
  3. 랜덤 스테이트 고정: random_state를 고정해야 코드를 다시 실행해도 같은 결과가 나옵니다. 채점 시 일관성을 위해 필수입니다.
  4. 제출 형식 엄수: 문제에서 요구하는 컬럼명(cust_id, target)과 데이터프레임 형태를 반드시 확인하세요.

회귀 분석은 전처리만 깔끔하게 해도 기본 점수를 확보할 수 있는 유형입니다.

 

위 코드를 반복해서 직접 타이핑해보며 익숙해지시길 권장합니다!

 

궁금한 점은 댓글로 남겨주세요. 모두 합격합시다! 🚀

 

https://intjpark.tistory.com/55

 

[빅분기 실기] 1유형 데이터 다루기 마스터하기

2026 빅데이터분석기사 실기 1유형 완벽 대비! Pandas 전처리, 기초 통계, 그룹연산, 시각화까지 30점 만점 받는 핵심 전략과 실전 코드 예제를 한 번에 정리했습니다. 실기 시험 직전 복습용으로 최

intjpark.tistory.com

https://intjpark.tistory.com/58

 

[빅분기 실기] 1유형 데이터 다루기 마스터하기 (3) - 결측치, 이상치, 중복값 완벽하게 처리하기

[빅분기 실기] 04. 데이터 전처리 필살기: 결측치, 이상치, 중복값 완벽하게 처리하기 (Python)설명: 빅데이터분석기사 실기 1유형의 핵심! 타이타닉 데이터셋을 활용해 결측치 대체/제거, IQR 및 Z-sco

intjpark.tistory.com

https://intjpark.tistory.com/56

 

[빅분기 실기] 1유형 데이터 다루기 마스터하기 (2) - 필터링, 정렬, 조건부 수정

빅데이터분석기사 실기 1유형 | mtcars로 배우는 필터링·정렬·np.where 파이썬 실습빅데이터분석기사 실기 1유형 대비를 위해 mtcars 데이터셋으로 파이썬 필터링, 정렬, np.where 활용법을 예제 코드와

intjpark.tistory.com

https://intjpark.tistory.com/60

 

[빅분기 실기] 1유형 데이터 다루기 마스터하기 (4) 데이터 스케일링, 결합, 그리고 날짜 데이터

주제: 빅데이터분석기사 실기 1유형 대비 데이터 전처리 마스터 (4편)핵심 내용: 데이터 스케일링(표준화/정규화), 데이터 결합(pd.concat), 날짜 및 시간 데이터 처리 기법목표: 실기 시험에서 자주

intjpark.tistory.com

https://intjpark.tistory.com/61

 

[빅분기 실기] 2유형 데이터 전처리, EDA, 모델선정

빅데이터분석기사 실기 2유형 합격을 위한 핵심 가이드! 데이터 전처리부터 EDA, RandomForest 모델링, 성능 평가까지 전 과정을 정리했습니다. 실습 코드를 통해 와인 종류 분류 문제를 직접 해결하

intjpark.tistory.com

https://intjpark.tistory.com/62

 

[빅분기 실기] 2유형 모델링 및 성능평가, 예측값 제출

빅데이터분석기사(빅분기) 실기 합격을 위한 필수 관문! 랜덤포레스트(RandomForest) 모델을 활용한 머신러닝 모델링 방법과 정확도(Accuracy), F1-score 등 성능 평가 지표를 파이썬 코드로 완벽하게 구

intjpark.tistory.com

 

반응형