2026 빅데이터분석기사 실기 7 | 작업형2 회귀모형·오차·예측 제출 — 표·코드·풀이

데이터위자드 ·

2026 빅데이터분석기사 실기 7 | 작업형2 회귀모형·오차·예측 제출 — 표·코드·풀이

실기 · 컴퓨터 작업형

고객의 다음 달 금액을 예측합니다. 분류용 정확도 대신 RMSE와 MAE로 오차를 평가하고, 최종 제출에는 실수 예측값을 저장합니다.

수행 방식

컴퓨터에서 코드와 결과 파일을 작성하는 작업형 실습입니다. 표의 데이터와 조건을 사용하세요.

데이터·Python 풀이 파일 내려받기 (.zip)

실습 준비

  • ZIP을 풀고 데이터 파일과 풀이 코드를 같은 폴더에 둡니다. 원본은 합성된 연습 데이터입니다.
  • Python 풀이는 pandas·NumPy와 해당 코드의 scipy 또는 scikit-learn을 사용할 수 있는 환경에서 실행합니다. R 코드가 포함된 경우 base R로 실행할 수 있습니다.
  • 먼저 작업 지시만 보고 풀고, 아래 해설에서 결과·분모·자료형을 대조합니다.
  • 이 표에서 빈 값은 미입력입니다. 숫자 0이나 문자 NULL로 임의 치환하지 않습니다.

원본 표 — train 앞 12행

idregionvisitsamounttarget
1부산857222
2대전1594387
3서울3131179
4부산10168344
5대전17205478
6서울5242300
7부산12279465
8대전19316599
9서울7353422
10부산14390556
11대전2427379
12서울9464513

test 앞 5행 · 정답열 없음

idregionvisitsamount
241부산16279
242대전4316
243서울11353
244부산18390
245대전6427

작업 1. 타깃 확인

train의 target을 분리하고 id를 입력에서 제외하세요.

정답·풀이·검산
기대 결과

train240행·test60행

test에는 target이 없습니다. 식별자와 예측변수를 구분합니다.

작업 2. 검증 분리

80:20 분할과 시드 42를 사용하세요.

정답·풀이·검산
기대 결과

학습 192행·검증 48행

검증 자료와 최종 test는 역할이 다릅니다.

작업 3. 기준모형

학습 타깃의 평균을 모든 검증 행에 예측하고 RMSE를 구하세요.

정답·풀이·검산
기대 결과

평균 예측을 기준선으로 비교

복잡한 모형이 기준선을 개선하는지 확인합니다.

작업 4. 모형 평가

전처리와 랜덤포레스트 회귀를 연결해 RMSE·MAE를 비교하세요.

정답·풀이·검산
기대 결과

RMSE=√MSE,MAE=평균 절대오차

설정은 검증으로 고르고 학습 점수만 비교하지 않습니다.

작업 5. 최종 예측

전체 train으로 재적합해 test60행을 예측하세요.

정답·풀이·검산
기대 결과

60개의 유한한 수치

회귀 예측은 0~1 확률이 아닙니다. 임의 정수화하지 않습니다.

작업 6. 저장·검산

id·target 두 열로 저장하고 행 수·키·결측을 검사하세요.

정답·풀이·검산
기대 결과

60행·id 일치·예측 결측 0

index=False로 원하지 않는 추가 열을 막습니다.

전체 풀이 — 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 RandomForestRegressor
from sklearn.metrics import mean_squared_error, mean_absolute_error

train=pd.read_csv("train.csv"); test=pd.read_csv("test.csv")
y=train["target"]; X=train.drop(columns=["id","target"]); Xt=test.drop(columns=["id"])
Xa,Xb,ya,yb=train_test_split(X,y,test_size=.2,random_state=42)
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",RandomForestRegressor(n_estimators=200,max_depth=5,random_state=42))])
model.fit(Xa,ya)
p=model.predict(Xb)
base=np.repeat(ya.mean(),len(yb))
print("baseline RMSE",np.sqrt(mean_squared_error(yb,base)))
print("RMSE",np.sqrt(mean_squared_error(yb,p)),"MAE",mean_absolute_error(yb,p))
model.fit(X,y)
pred=model.predict(Xt)
out=pd.DataFrame({"id":test.id,"target":pred})
assert len(out)==60 and out.id.is_unique and not out.isna().any().any()
assert np.isfinite(out["target"]).all()
out.to_csv("submission.csv",index=False)
check=pd.read_csv("submission.csv")
assert check.columns.tolist()==["id","target"] and check.id.tolist()==test.id.tolist()
print(check.head())

제출 전 점검

  • 요구한 열·행 수·순서·자료형이 맞는지 결과를 다시 읽습니다.
  • 평균·분산·검정에서 분모와 보정 옵션을 확인합니다.
  • 학습에서 정한 전처리를 검증·시험에 그대로 적용했는지 확인합니다.
  • 설명 문장에서는 유의성과 효과 크기, 예측과 인과를 구분합니다.

범위 확인

2026년 학습 범위를 기준으로 구성했습니다. 시험 시행기관의 자격 안내·출제 기준에서 과목과 변경 공지를 확인할 수 있습니다.

관련 이론 다시 보기

이전 · 작업형 2 분류모형·전처리·제출파일

다음 · 작업형 3 대응표본 t검정·신뢰구간

빅데이터분석기사 전체 목차

과목별 이론

단원별 객관식

실습

필기 모의고사

실기 모의고사

예상 모의문제입니다.

스터디클럽의 다른 강의 보기