빅데이터분석기사 실기 시험에서 합격의 당락을 가르는 가장 결정적인 파트는 단연 배점 40점이 걸려 있는 작업형 제2유형(머신러닝 예측 및 csv 파일 제출)입니다. 클라우드 구름(Goorm) 환경에서는 자동 완성 기능이 제공되지 않고 인터넷 검색이 전면 차단되므로, 머릿속에 확실히 체화된 표준 모델링 파이프라인 템플릿이 필수적입니다.
분류(Classification) 및 회귀(Regression) 문제 모두에 유연하게 대응할 수 있는 결측치 처리, 라벨 인코딩, RandomForest 베이스라인 구축, 성능 평가 및 to_csv 최종 제출 템플릿 코드를 공유합니다.
1. 작업형 2유형 필수 5단계 파이프라인 흐름
작업형 2유형은 복잡한 하이퍼파라미터 튜닝보다 감점 없이 에러를 방지하고 정상적인 csv 출력 포맷을 생성하는 것이 고득점의 핵심입니다.
- 데이터 로드 및 탐색:
train.shape,test.shape,info(), 결측치 및 타깃 변수 분포 확인 - 데이터 전처리: 불필요한 고유 식별자(ID) 컬럼 분리, 수치형 변수 결측치 대체, 범주형 변수 원핫 또는 라벨 인코딩
- 데이터 분할:
train_test_split으로 학습용과 내부 검증용 세트 분리 - 모델 학습 및 검증: RandomForestClassifier 또는 RandomForestRegressor 기본값 학습 및 평가지표(F1-score, ROC-AUC, RMSE) 확인
- 최종 테스트 예측 및 제출: 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월)