S Data: 크롤링을 이용한 UCI Machine Learning Repository의 머신러닝 데이터셋 탐색

standout·2026년 6월 25일

+ Coding

목록 보기
68/69
post-thumbnail

🔍 UCI ML 데이터셋 탐색기

UCI Machine Learning Repository의 머신러닝 데이터셋을 쉽게 검색, 탐색, 관리할 수 있는 Streamlit 기반 웹 애플리케이션입니다.


image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image

🎯 주요 기능

홈 탭

  • 📊 데이터셋 검색 및 필터링
  • 🗂️ 테이블 뷰 (페이지네이션 지원, 10개/페이지)
  • ✅ 다중 선택 기능 (멀티셀렉트)
  • ⭐ 즐겨찾기 추가
  • � CSV 내보내기 (전체/필터링 데이터셋)
  • 📄 상세 정보 페이지

즐겨찾기 탭

  • ⭐ 저장된 데이터셋 관리
  • ✅ 다중 선택 삭제 기능
  • 📥 즐겨찾기 CSV 내보내기
  • 🗂️ 테이블 뷰 (페이지네이션 지원)

테스트 탭

  • 🧪 데이터셋 실제 데이터 로드 (ucimlrepo)
  • 📊 데이터프레임 미리보기 (페이지네이션 지원)
  • 📈 데이터 시각화
  • 📝 Python Import 코드 제공

정보 탭

  • ℹ️ 프로젝트 설명 및 기술 스택
  • 🔗 유용한 링크

🚀 빠른 시작

1️⃣ 환경 설정

Windows (PowerShell):

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txt

Windows (Batch):

setup_venv.bat

Unix/macOS:

bash setup_venv.sh

2️⃣ 로컬 실행

streamlit run app.py

브라우저에서 자동으로 열립니다 (http://localhost:8501)

3️⃣ Docker로 실행 (선택사항)

docker-compose up

📦 기술 스택

  • Python 3.9+
  • Streamlit - 웹 프레임워크
  • Pandas - 데이터 처리
  • BeautifulSoup4 - 웹 크롤링
  • Requests - HTTP 요청
  • ucimlrepo - UCI ML 데이터셋 로드

📂 프로젝트 구조

Tool-UCI_ML_repo/
├── app.py                    # Streamlit 메인 애플리케이션
├── scraper.py               # 데이터셋 크롤러
├── utils.py                 # 유틸리티 함수
├── requirements.txt         # 의존성
├── README.md               # 이 파일
├── Dockerfile              # Docker 설정
├── docker-compose.yml      # Docker Compose 설정
├── setup_venv.bat          # Windows venv 스크립트
├── setup_venv.sh           # Unix/Mac venv 스크립트
├── .gitignore              # Git 제외 파일
├── .streamlit/
│   └── config.toml         # Streamlit 설정
├── data/
│   └── datasets.csv        # 크롤링된 데이터셋
├── cache/
│   └── favorites.json      # 즐겨찾기 저장소
└── docs/
    ├── VENV_SETUP.md       # venv 설정 가이드
    ├── DAY2_FEATURES.md    # Day2 기능 문서
    └── DAY3_FEATURES.md    # Day3 고급 기능 문서

💡 사용 예시

데이터셋 검색

  1. 검색창에 키워드 입력
  2. 테이블에서 원하는 데이터셋 확인
  3. 페이지네이션으로 탐색

즐겨찾기 추가

  1. 멀티셀렉트에서 원하는 데이터셋 선택
  2. "⭐ 즐겨찾기 추가" 버튼 클릭
  3. 즐겨찾기 탭에서 확인

데이터 내보내기

  1. 홈 탭의 "📥 내보내기 유형" 선택
  2. 전체 또는 필터링된 데이터셋 선택
  3. "📥 CSV 다운로드" 버튼 클릭

데이터셋 테스트

  1. 테스트 탭에서 데이터셋 선택
  2. 실제 데이터 로드 확인
  3. 데이터프레임 및 시각화 확인

🔧 주요 기능 상세

캐싱

  • 1시간 TTL로 데이터셋 캐싱
  • 데이터셋 데이터 자동 로드

다중 탭 페이지

  • 홈: 주요 검색 및 탐색 기능, 다중 선택, 즐겨찾기 추가
  • 즐겨찾기: 저장된 데이터셋 관리, 다중 삭제
  • 테스트: 실제 데이터 로드 및 시각화
  • 정보: 프로젝트 설명

페이지네이션

  • 모든 테이블에서 10개/페이지 표시
  • 전체 너비 버튼으로 직관적인 네비게이션
  • 세션 상태로 페이지 유지

다중 선택 기능

  • 멀티셀렉트로 여러 데이터셋 동시 선택
  • 세션 상태로 선택 유지 (페이지 리로드 시에도)
  • 즐겨찾기 일괄 추가/삭제 지원

세션 상태 관리

  • 선택된 데이터셋 추적
  • 페이지네이션 상태 유지
  • 다중 선택 상태 유지

📊 통계 정보

앱은 다음 통계를 제공합니다:

  • 📌 전체 데이터셋 수 (사이드바)
  • ⏰ 마지막 업데이트 시간 (사이드바)

🌐 배포

Streamlit Cloud (권장)

  1. GitHub에 저장소 push
  2. Streamlit Cloud에 접속
  3. 새 앱 연결
  4. GitHub 저장소 선택
  5. app.py 파일 지정

Docker / Kubernetes

docker build -t uci-ml-explorer .
docker run -p 8501:8501 uci-ml-explorer

또는 Docker Compose:

docker-compose up -d

📝 개발 노트

Day 1: 기초 설정 & 크롤링

  • venv 환경 설정
  • 크롤링 로직 개발
  • 샘플 데이터 생성

Day 2: 웹앱 UI/UX

  • Streamlit 기본 앱 구조
  • 세션 상태 관리
  • 테이블 뷰
  • 검색 및 필터링

Day 3: 고급 기능 & 배포

  • 캐싱 최적화
  • 다중 탭 페이지
  • CSV 내보내기
  • Docker/Streamlit 배포 설정

Day 4: UI 개선 및 기능 추가

  • 페이지네이션 기능 (10개/페이지)
  • 다중 선택 기능 (멀티셀렉트)
  • 즐겨찾기 기능 개선
  • 테스트 탭 추가 (ucimlrepo 통합)
  • UI 통일 및 최적화

📄 라이센스

MIT License - 자유로이 사용, 수정, 배포 가능합니다.

🔗 링크


개발 기간: 4일 (Day 1-4)
마지막 업데이트: 2026-06-18

profile
명사 美 비격식(무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

0개의 댓글