
제출자: 이영호
제출일: 2025년 10월 13일
train.csv 데이터를 기반으로 Jupyter Notebook(.ipynb)에서scikit-learn을 사용한 회귀 모델링을 수행한다. model.pkl 파일로 저장한다. .py 스크립트로 정리한다. docker-compose로 구성한다.model.pkl 파일과 컨테이너 내부의 test.csv 파일을 활용하여result.csv 파일로 저장한다. (참고: [연구자 2]는 사전에 데이터나 모델 파일을 보유하지 않은 상태이며,
[연구자 1]의 Docker Hub 이미지를 통해 필요한 파일을 가져와야 한다.)
Repository: https://hub.docker.com/r/lyh205/ml-trainer
사용 가능한 태그:
lyh205/ml-trainer:0.0.2 (최신 버전, 649MB)lyh205/ml-trainer:latest (0.0.2와 동일)lyh205/ml-trainer:0.0.1 (이전 버전, 671MB)Pull 명령어:
docker pull lyh205/ml-trainer:0.0.2
여러 모델을 비교 실험한 결과:
| 모델 | Train RMSE | Val RMSE | Val MAE | Val R² |
|---|---|---|---|---|
| Linear Regression | 2.51 | 2.48 | 1.93 | 0.982 |
| Ridge | 2.51 | 2.48 | 1.93 | 0.982 |
| Lasso | 2.51 | 2.48 | 1.93 | 0.982 |
| Random Forest | 0.75 | 2.24 | 1.71 | 0.986 |
| Gradient Boosting | 1.52 | 2.38 | 1.85 | 0.984 |
선택된 모델: Random Forest Regressor
하이퍼파라미터:
최종 성능 지표:
Feature Importance (상위 3개):
1. Previous Scores: 0.6421 (64.2%)
2. Hours Studied: 0.2157 (21.6%)
3. Sample Question Papers Practiced: 0.0842 (8.4%)


1. Named Volume 사용 (shared-data)
volumes:
shared-data: # Docker가 관리하는 영구 볼륨
services:
trainer:
volumes:
- shared-data:/app/output # 쓰기 (model.pkl 생성)
jupyter:
volumes:
- shared-data:/home/jovyan/data # 읽기 (model.pkl 사용)
2. 호스트 폴더 마운트
jupyter:
volumes:
- ./notebooks:/home/jovyan/work # 양방향 동기화
장점:
Python 버전 통일:
python:3.10-slim 베이스 이미지패키지 버전 고정:
pandas==2.0.3
numpy==1.24.3
scikit-learn==1.3.0
버전 불일치 해결:
requirements.txt 사용jupyter:
depends_on:
- trainer # trainer 컨테이너 먼저 시작
실행 순서:
1. trainer 컨테이너 시작 → model.pkl 생성 → 종료
2. jupyter 컨테이너 시작 → model.pkl 사용 → 추론
Jupyter Token 설정:
environment:
- JUPYTER_TOKEN=easy # 간편한 접근 (개발 환경용)
포트 매핑:
슬림 이미지 사용:
python:3.10-slim (649MB)alpine 대신 slim 사용 (C 컴파일러 필요)레이어 캐싱:
COPY requirements.txt .
RUN pip install -r requirements.txt # 자주 변경 안 됨 (캐시)
COPY src/ ./src/ # 자주 변경됨
본 프로젝트에서는 Docker를 활용하여 두 연구자가 서로 다른 환경에서 협업할 수 있는 ML 워크플로우를 성공적으로 구축하였습니다.
주요 성과:
1. ✅ 재현 가능한 환경 구축 (Docker 이미지)
2. ✅ 효율적인 파일 공유 메커니즘 (Named Volume)
3. ✅ 버전 일관성 보장 (requirements.txt)
4. ✅ 우수한 모델 성능 (RMSE 2.24, R² 0.986)
학습 내용: