2026 빅데이터분석기사 실기 6 | 작업형2 분류모형·전처리·제출파일 — 표·코드·풀이
데이터위자드 ·
실기 · 컴퓨터 작업형
학습 자료의 churn을 예측하고 정답 없는 test의 고객별 이탈 확률을 제출합니다. 목표열을 입력에서 제거하고 같은 전처리·열 순서를 적용합니다. 확률과 0·1 범주를 구분하는 것이 핵심입니다.
컴퓨터에서 코드와 결과 파일을 작성하는 작업형 실습입니다. 표의 데이터와 조건을 사용하세요.
실습 준비
- ZIP을 풀고 데이터 파일과 풀이 코드를 같은 폴더에 둡니다. 원본은 합성된 연습 데이터입니다.
- Python 풀이는 pandas·NumPy와 해당 코드의 scipy 또는 scikit-learn을 사용할 수 있는 환경에서 실행합니다. R 코드가 포함된 경우 base R로 실행할 수 있습니다.
- 먼저 작업 지시만 보고 풀고, 아래 해설에서 결과·분모·자료형을 대조합니다.
- 이 표에서 빈 값은 미입력입니다. 숫자 0이나 문자 NULL로 임의 치환하지 않습니다.
원본 표 — train 앞 12행
| id | region | visits | amount | churn |
|---|---|---|---|---|
| 1 | 부산 | 8 | 57 | 0 |
| 2 | 대전 | 15 | 94 | 0 |
| 3 | 서울 | 3 | 131 | 1 |
| 4 | 부산 | 10 | 168 | 0 |
| 5 | 대전 | 17 | 205 | 0 |
| 6 | 서울 | 5 | 242 | 1 |
| 7 | 부산 | 12 | 279 | 0 |
| 8 | 대전 | 19 | 316 | 0 |
| 9 | 서울 | 7 | 353 | 0 |
| 10 | 부산 | 14 | 390 | 0 |
| 11 | 대전 | 2 | 427 | 0 |
| 12 | 서울 | 9 | 464 | 0 |
test 앞 5행 · 정답열 없음
| id | region | visits | amount |
|---|---|---|---|
| 241 | 부산 | 16 | 279 |
| 242 | 대전 | 4 | 316 |
| 243 | 서울 | 11 | 353 |
| 244 | 부산 | 18 | 390 |
| 245 | 대전 | 6 | 427 |
작업 1. 학습·시험 분리
train의 churn을 타깃으로 정하고 test에 타깃이 없는지 확인하세요.
정답·풀이·검산
train240행·test60행
id는 제출용으로 보관하고 입력에서 제외합니다.
작업 2. 검증 분리
계층화한 80:20 분할과 시드 42를 사용하세요.
정답·풀이·검산
학습 192행·검증 48행
전처리는 학습 부분으로만 적합합니다. 최종 test는 선택에 사용하지 않습니다.
작업 3. 전처리
숫자는 중앙값 대체, 지역은 최빈값 대체 후 원핫 인코딩하세요.
정답·풀이·검산
ColumnTransformer와 Pipeline으로 연결
새 범주 처리와 동일한 열 구조를 유지합니다.
작업 4. 평가
검증 ROC-AUC·정밀도·재현율을 확인하세요.
정답·풀이·검산
AUC에는 확률, 정밀도·재현율에는 범주 사용
확률과 범주를 지표에 맞게 사용하고 정확도 하나만 보지 않습니다.
작업 5. 최종 적합
정한 설정으로 전체 train을 다시 적합하고 test의 확률을 구하세요.
정답·풀이·검산
60개의 0~1 확률
test 정답으로 설정을 선택하지 않습니다.
작업 6. 제출 검증
id·churn 두 열로 인덱스 없이 저장하고 다시 읽으세요.
정답·풀이·검산
60행·id 중복 0·결측 0·확률 0~1
열 이름과 키 순서가 요구 형식과 일치하는지 확인합니다.
전체 풀이 — Python
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score, precision_score, recall_score
train=pd.read_csv("train.csv"); test=pd.read_csv("test.csv")
y=train["churn"]; X=train.drop(columns=["id","churn"]); Xt=test.drop(columns=["id"])
Xa,Xb,ya,yb=train_test_split(X,y,test_size=.2,random_state=42,stratify=y)
pre=ColumnTransformer([("num",SimpleImputer(strategy="median"),["visits","amount"]),("cat",Pipeline([("impute",SimpleImputer(strategy="most_frequent")),("onehot",OneHotEncoder(handle_unknown="ignore"))]),["region"])])
model=Pipeline([("pre",pre),("model",RandomForestClassifier(n_estimators=200,max_depth=5,random_state=42))])
model.fit(Xa,ya)
p=model.predict_proba(Xb)[:,list(model.named_steps["model"].classes_).index(1)]
print("AUC",roc_auc_score(yb,p))
print("precision",precision_score(yb,p>=.5,zero_division=0),"recall",recall_score(yb,p>=.5,zero_division=0))
model.fit(X,y)
pred=model.predict_proba(Xt)[:,list(model.named_steps["model"].classes_).index(1)]
out=pd.DataFrame({"id":test.id,"churn":pred})
assert len(out)==60 and out.id.is_unique and not out.isna().any().any()
assert out["churn"].between(0,1).all()
out.to_csv("submission.csv",index=False)
check=pd.read_csv("submission.csv")
assert check.columns.tolist()==["id","churn"] and check.id.tolist()==test.id.tolist()
print(check.head())
제출 전 점검
- 요구한 열·행 수·순서·자료형이 맞는지 결과를 다시 읽습니다.
- 평균·분산·검정에서 분모와 보정 옵션을 확인합니다.
- 학습에서 정한 전처리를 검증·시험에 그대로 적용했는지 확인합니다.
- 설명 문장에서는 유의성과 효과 크기, 예측과 인과를 구분합니다.
범위 확인
2026년 학습 범위를 기준으로 구성했습니다. 시험 시행기관의 자격 안내·출제 기준에서 과목과 변경 공지를 확인할 수 있습니다.
빅데이터분석기사 전체 목차
과목별 이론
- 1과목 · 1장 1절 · 데이터·정보·데이터베이스의 이해
- 1과목 · 1장 2절 · 빅데이터 가치·활용·위험과 통제
- 1과목 · 2장 1~2절 · 분석 기획·방법론·과제 발굴
- 2과목 · 1장 1~2절 · 결측값·이상값·스케일링·데이터 누수
- 2과목 · 3장 1절 · 기술통계·척도·분산·상관계수
- 2과목 · 3장 1절 · 확률·조건부확률·분포·표본분포
- 2과목 · 3장 2절 · 추정·신뢰구간·가설검정
- 3과목 · 2장 1절 · 회귀분석·회귀계수·모형 진단
- 2과목 · 1장 2절 · 다변량 분석·PCA·거리·요인분석
- 3과목 · 2장 2절 · 시계열·정상성·ARIMA·시계열 검증
- 3과목 · 2장 1절 · 분류분석·로지스틱·나무·앙상블
- 3과목 · 2장 1절 · 군집분석·K-means·계층·DBSCAN
- 3과목 · 2장 1절 · 연관분석·지지도·신뢰도·향상도
- 4과목 · 1장 1~2절 · 모형 평가·혼동행렬·교차검증
- 3과목 · 2장 1~2절 · SVM·신경망·고급 앙상블
- 4과목 · 2장 2절 · 시각화 인사이트·탐색·분석·활용
- 4과목 · 2장 2절 · 시각화 디자인·구현·접근성
- 4과목 · 2장 3절 · 모형 해석·배포·모니터링·재학습
단원별 객관식
- 1과목 · 1장 1절 · 데이터·정보·데이터베이스의 이해
- 1과목 · 1장 2절 · 빅데이터 가치·활용·위험과 통제
- 1과목 · 2장 1~2절 · 분석 기획·방법론·과제 발굴
- 2과목 · 1장 1~2절 · 결측값·이상값·스케일링·데이터 누수
- 2과목 · 3장 1절 · 기술통계·척도·분산·상관계수
- 2과목 · 3장 1절 · 확률·조건부확률·분포·표본분포
- 2과목 · 3장 2절 · 추정·신뢰구간·가설검정
- 3과목 · 2장 1절 · 회귀분석·회귀계수·모형 진단
- 2과목 · 1장 2절 · 다변량 분석·PCA·거리·요인분석
- 3과목 · 2장 2절 · 시계열·정상성·ARIMA·시계열 검증
- 3과목 · 2장 1절 · 분류분석·로지스틱·나무·앙상블
- 3과목 · 2장 1절 · 군집분석·K-means·계층·DBSCAN
- 3과목 · 2장 1절 · 연관분석·지지도·신뢰도·향상도
- 4과목 · 1장 1~2절 · 모형 평가·혼동행렬·교차검증
- 3과목 · 2장 1~2절 · SVM·신경망·고급 앙상블
- 4과목 · 2장 2절 · 시각화 인사이트·탐색·분석·활용
- 4과목 · 2장 2절 · 시각화 디자인·구현·접근성
- 4과목 · 2장 3절 · 모형 해석·배포·모니터링·재학습
실습
- 작업형 실습 1 · 6작업 · 결측값 탐색·학습 기준 대체
- 작업형 실습 2 · 6작업 · IQR 이상값·상한 절단·영향 비교
- 작업형 실습 3 · 6작업 · 그룹 집계·결측 제외·결과 검산
- 작업형 실습 4 · 6작업 · 표준화·min-max·미래 범위
- 작업형 실습 5 · 6작업 · 대표값·분산·상관·단순 회귀 계산
- 작업형 실습 6 · 6작업 · 작업형 2 분류모형·전처리·제출파일
- 작업형 실습 7 · 6작업 · 작업형 2 회귀모형·오차·예측 제출
- 작업형 실습 8 · 6작업 · 작업형 3 대응표본 t검정·신뢰구간
- 작업형 실습 9 · 6작업 · 작업형 3 카이제곱 독립성·기대도수
- 작업형 실습 10 · 6작업 · 작업형 3 OLS 회귀·계수 검정·잔차
- 작업형 실습 11 · 6작업 · PCA·표준화·설명분산·새 자료 변환
- 작업형 실습 12 · 6작업 · 시계열 차분·나이브·롤링 검증
필기 모의고사
실기 모의고사
예상 모의문제입니다.