TIL(Today I Learned)
1️⃣실전 프로젝트(7)
BMW i3 주행거리 예측 대시보드 — 제작부터 피드백까지
1. 대시보드 제작
두 개의 노트북(데이터 병합·전처리 노트북 + 머신러닝 노트북)을 기반으로 Streamlit 대시보드를 만들었다. 70개 trip, 타깃은 Distance(km)이고, 최종 모델은 Optuna로 튜닝한 CatBoost(R²≈0.84, MAE≈3.7km)다.
화면은 F1 피트월 느낌으로 잡았다. 다크 카본 + 레드 테마에 Orbitron 폰트, 평균 속도를 보여주는 Plotly 속도계 게이지, 예측 거리 대형 표시, KPI 카드(물리 거리 v×t, 주행 시간, SOC 소모, SOC 효율), 모델 성능 지표(R²/MAE/RMSE), feature importance 막대그래프로 구성했다. df_final_vif.csv가 있으면 실데이터를 쓰고, 없으면 업로드 또는 합성 데이터로 동작하게 했다.
2. 배포
GitHub(ByeongJun0530/BMW-i3-DashBoard)에 올리고 Streamlit Cloud에 배포했다. 처음엔 PowerShell pip 인식 문제와 컬럼명 불일치 ValueError로 막혔지만(원본 긴 컬럼명 vs. 일부만 줄인 컬럼명 충돌), 둘 다 해결하고 라이브로 띄웠다. 데이터 70행 58컬럼이 정상적으로 로드된다.
BMW i3 · EV Dashboard · Streamlit
3. 피드백 — 코드 리뷰에서 나온 두 가지 문제
배포된 코드를 다시 뜯어보니, 튜터가 앞서 지적했던 두 가지가 대시보드에 그대로 남아 있었다.
- 어떤 사용자를 위해 대시보드를 구성한건지
- 단일 트립에 대한 예측을 진행한 이유는 무엇인지
- 발표용 PPT랑 겹치는 내용이 대시보드에 포함되는 것
4. 다음 할 일
- 전체적인 흐름 정리하기, 통계검정의 이유, 모든걸 근거를 준비하기
- 제출용 PPT 완성하고 발표용 PPT로 압축하기
- 대시보드를 어떤 사용자를 관점으로 할지
💡 느낀점
대시보드를 만들면서 가장 크게 느낀 건, 화면에 보여주는 숫자가 곧 메시지가 된다는 점이었다. R²=0.871을 큼지막하게 띄워놓으니 보는 사람은 그게 모델 성능이라고 믿게 되는데, 사실은 단일 split의 운 좋은 한 값이었다. 대시보드는 결과를 정리해 보여주는 도구인 만큼, 어떤 값을 어떻게 띄우느냐가 사용자의 판단을 좌우한다는 책임을 느꼈다. 멋지게 꾸미는 것보다 정직하게 보여주는 대시보드를 목표로 하려고 한다. 누수 변수에는 "사후 변수" 표시를 붙이고, 성능도 단일 값 대신 KFold 평균±표준편차로 띄워서, 사용자가 모델을 과신하지 않도록 만드는 게 좋은 대시보드라는 생각이 들었다.
'실전 프로젝트 대시보드' 카테고리의 다른 글
| Chapter.7 실전 프로젝트 대시보드(9) (0) | 2026.06.10 |
|---|---|
| Chapter.7 실전 프로젝트 대시보드(8) (0) | 2026.06.09 |
| Chapter.7 실전 프로젝트 대시보드(6) (0) | 2026.06.05 |
| Chapter.7 실전 프로젝트 대시보드(5) (0) | 2026.06.04 |
| Chapter.7 실전 프로젝트 대시보드(4) (0) | 2026.06.02 |