빅데이터분석기사 실기 작업형 2유형 고득점 머신러닝 코드 템플릿: 베이스라인 모델 구축과 전처리 파이프라인

빅데이터분석기사 실기 머신러닝 코드와 노트북 데이터 분석 화면

빅데이터분석기사 실기 시험에서 합격의 당락을 가르는 가장 결정적인 파트는 단연 배점 40점이 걸려 있는 작업형 제2유형(머신러닝 예측 및 csv 파일 제출)입니다. 클라우드 구름(Goorm) 환경에서는 자동 완성 기능이 제공되지 않고 인터넷 검색이 전면 차단되므로, 머릿속에 확실히 체화된 표준 모델링 파이프라인 템플릿이 필수적입니다.

분류(Classification) 및 회귀(Regression) 문제 모두에 유연하게 대응할 수 있는 결측치 처리, 라벨 인코딩, RandomForest 베이스라인 구축, 성능 평가 및 to_csv 최종 제출 템플릿 코드를 공유합니다.


1. 작업형 2유형 필수 5단계 파이프라인 흐름

작업형 2유형은 복잡한 하이퍼파라미터 튜닝보다 감점 없이 에러를 방지하고 정상적인 csv 출력 포맷을 생성하는 것이 고득점의 핵심입니다.

  1. 데이터 로드 및 탐색: train.shape, test.shape, info(), 결측치 및 타깃 변수 분포 확인
  2. 데이터 전처리: 불필요한 고유 식별자(ID) 컬럼 분리, 수치형 변수 결측치 대체, 범주형 변수 원핫 또는 라벨 인코딩
  3. 데이터 분할: train_test_split으로 학습용과 내부 검증용 세트 분리
  4. 모델 학습 및 검증: RandomForestClassifier 또는 RandomForestRegressor 기본값 학습 및 평가지표(F1-score, ROC-AUC, RMSE) 확인
  5. 최종 테스트 예측 및 제출: test 데이터 예측 후 ID 컬럼과 결합하여 `result.csv` 저장 및 `index=False` 옵션 필수 적용

2. 분류 문제(ROC-AUC / F1) 실전 올인원 코드 템플릿

시험장에서 그대로 타이핑할 수 있도록 설계된 최소한의 안정적인 분류 모델링 코드입니다.

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score, f1_score
from sklearn.preprocessing import LabelEncoder

# 1. 데이터 불러오기
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')

# 2. 식별자 분리 및 타깃 분리
test_id = test.pop('ID')
y = train.pop('target')
X = train.drop(columns=['ID'])

# 3. 범주형 및 수치형 변수 전처리
cat_cols = X.select_dtypes(include=['object']).columns
num_cols = X.select_dtypes(exclude=['object']).columns

# 수치형 결측치 중앙값 대체
for col in num_cols:
    med = X[col].median()
    X[col] = X[col].fillna(med)
    test[col] = test[col].fillna(med)

# 범주형 라벨 인코딩
for col in cat_cols:
    le = LabelEncoder()
    X[col] = le.fit_transform(X[col].astype(str))
    test[col] = le.transform(test[col].astype(str))

# 4. 검증 데이터셋 분할
X_train, X_val, y_train, y_val = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

# 5. 모델 학습 및 평가
model = RandomForestClassifier(n_estimators=100, max_depth=8, random_state=42)
model.fit(X_train, y_train)

# 확률값 예측 (ROC-AUC 평가 시)
pred_val_prob = model.predict_proba(X_val)[:, 1]
score = roc_auc_score(y_val, pred_val_prob)
print(f"Validation ROC-AUC: {score:.4f}")

# 6. 최종 예측 및 csv 제출
final_pred = model.predict_proba(test)[:, 1]
submit = pd.DataFrame({'ID': test_id, 'target': final_pred})
submit.to_csv('result.csv', index=False)

# 7. 제출 파일 정상 여부 확인 (필수)
check = pd.read_csv('result.csv')
print(check.head())
print(check.shape)

3. 시험장 실격 방지를 위한 4대 체크리스트

  • index=False 누락 금지: to_csv('result.csv', index=False)에서 인덱스를 제거하지 않으면 컬럼 수가 3개가 되어 0점 처리됩니다.
  • 출력 형태(확률 vs 클래스) 확인: 문제 지문에서 요구하는 값이 클래스(0 또는 1)인지, 확률(0.0~1.0)인지 확인하고 predict()와 predict_proba()를 구분해서 사용합니다.
  • test 행 개수 일치 확인: 원본 test.shape[0]과 제출용 submit.shape[0]이 정확히 일치하는지 반드시 프린트문으로 대조합니다.
  • 불필요한 과적합 튜닝 지양: 시험 환경의 실행 시간제한(1분)을 초과하면 에러가 발생하므로 n_estimators는 100~150선으로 고정합니다.

(자료 출처: 한국데이터산업진흥원 데이터자격검정 실기 안내서, 확인 기준일: 2026년 9월)