2025/02/28 TIL

김학열·2025년 2월 28일

메인 앱 만들기(main.py)

✔️ 전체 앱의 입구 역할, 페이지(대시보드/예측) 간 이동 관리는 main.py파일에 대해 알아봅니다.
  • 구조
    import streamlit as st
    
    # 앱 전체 페이지 타이틀, 레이아웃 설정
    st.set_page_config(page_title="제조 결함 대시보드", layout="wide")
    
    # 페이지 리스트 정의
    pages = [
        st.Page("page/dashboard_page.py", title="대시보드", icon="📊", default=True),
        st.Page("page/prediction_page.py", title="예측 및 EDA", icon="🤖"),
    ]
    
    # 페이지 네비게이션 생성
    pg = st.navigation(pages)
    
    # 사용자가 선택한 페이지 실행
    pg.run()
    
    • 페이지 설정
      • st.set_page_config를 통해 앱의 제목, 레이아웃(와이드/센터) 등 설정
    • 페이지 목록 정의
      • st.Page(...)를 사용하여, 어떤 파일(함수)이 어떤 이름(아이콘)으로 표시될지 결정
      • 예:
        pages = [
            st.Page("page/dashboard_page.py", title="대시보드", icon="📊", default=True),
            st.Page("page/prediction_page.py", title="예측 및 EDA", icon="🤖"),
        ]
        
    • 네비게이션 & 실행
      • pg = st.navigation(pages)
      • pg.run()
      • 위 과정을 통해 사용자가 사이드바상단 탭 등에서 페이지를 선택하면, 해당 페이지에 정의된 함수를 실행
    • 빈 껍데기 파일 2개 만들기
      • dashboard_page.py

      • prediction_page.py

        예측 대시보드 만들기(prediction_page.py)

✔️ 사전 학습된 머신러닝 모델(`.pkl` 파일)을 로딩하고, 사용자 입력값을 통해 결함 발생 여부를 예측하는 대시보드를 구성합니다.
  • 대시보드 페이지의 구조
    • 패키지 로드
      • streamlit, pandas, numpy, plotly.express, pickle
    • load_data & load_model 함수
      • CSV 파일(EDA용)과 사전 학습된 모델(.pkl) 로드
      • @st.cache_data, @st.cache_resource로 캐싱
    • 메인 공간
      • 페이지 헤더 & 데이터/모델 로드
      • 컬럼별 분포 범위 파악
      • 사용자 입력(Form)
      • 예측 결과 표시
      • 입력값 분포 시각화(히스토그램)
profile
QA/QC 1기 김학열

0개의 댓글