iT邦幫忙

2025 iThome 鐵人賽

DAY 3
2
AI & Data

從0開始的MLFLOW應用搭建系列 第 3

Day 03 – 從 Kaggle 抓動畫資料

  • 分享至 

  • xImage
  •  

背景與目標

為了訓練動畫推薦系統,我們需要可靠的資料來源。本專案選擇使用 Kaggle 上的 Anime Recommendation Database 當作參考,其中包含:

  • anime.csv:動畫清單(ID、標題、類型、描述…)
  • rating.csv:使用者對動畫的評分紀錄

詳細的資料介紹可以參考Kaggle內容。
類似的資料集介紹合併資料初探歡迎參考我同伴的系列文章:
動漫宅的 30 天 AWS Lakehouse 修行日誌 - DAY2 知識之章-理解資料本源

今天的目標是:

  1. 透過 Kaggle API 自動下載資料,而不是手動上傳。
  2. 將資料統一放在 workspace/data/ 目錄。
  3. 使用 環境變數管理 Kaggle API Key,避免把 kaggle.json 放到專案裡,確保安全性。

詳細步驟與程式碼範例

1. Kaggle API Token 取得

  1. 登入 Kaggle

  2. 點選右上角頭像 → Setting

  3. 下滑在 API 區塊點選 Create New Token

    • 會下載 kaggle.json,裡面有 usernamekey

https://ithelp.ithome.com.tw/upload/images/20250915/20178626iMY0hujmFW.png

2. 用 .env 管理金鑰(避免上傳到 GitHub)

在專案根目錄建立 .env(與 docker-compose.yml 同層):

KAGGLE_USERNAME=你的_kaggle帳號
KAGGLE_KEY=你的API金鑰

並且把 .env 加進 .gitignore

# .gitignore
.env
kaggle.json
.kaggle/
__pycache__/
mlruns/

(建議另外放一份 .env.example,方便團隊成員知道需要哪些變數。)
以上的新增讓你可以把機密資料只存在本機環境變數裡面讓Kaggle API直接索引,且不會傳到git上。


3. 修改 requirements-dev.txt

在最後加上 Kaggle 套件(版本固定避免不相容):

kaggle==1.6.14
requests==2.31.0

4. 修改 docker-compose.yml

確保 python-dev 服務有帶入環境變數:

  python-dev:
    build:
      context: .
      dockerfile: docker/Dockerfile.dev
    container_name: python-dev
    environment:
      - KAGGLE_USERNAME=${KAGGLE_USERNAME}
      - KAGGLE_KEY=${KAGGLE_KEY}
    volumes:
      - ./workspace:/workspace
    working_dir: /workspace

5. 在 Notebook 中下載資料

建立一個新的 Notebook:
/workspace/notebooks/Day3_Download_Data.ipynb

在裡面撰寫:

import os
import kaggle

# 指定資料存放路徑
DATA_DIR = "/usr/mlflow/data"
os.makedirs(DATA_DIR, exist_ok=True)

# Kaggle 資料集名稱
dataset = "CooperUnion/anime-recommendations-database"

# 下載並解壓縮
kaggle.api.dataset_download_files(dataset, path=DATA_DIR, unzip=True)
print("✅ 動畫資料下載完成!存放於:", DATA_DIR)

6. 驗證下載結果

在 Notebook 裡新增一格:

import pandas as pd

animes = pd.read_csv(f"{DATA_DIR}/anime.csv")
ratings = pd.read_csv(f"{DATA_DIR}/rating.csv")

print("動畫數量:", len(animes))
print("評分數量:", len(ratings))
animes.head(3)

這樣就能在 Notebook 內直接看到資料表格。
https://ithelp.ithome.com.tw/upload/images/20250915/20178626mkTtrRlNWq.png

流程圖

[.env 檔 → docker-compose → 容器環境變數] 
             ↓
     [Kaggle API 認證] 
             ↓
   [Notebook: Day3_Download_Data.ipynb]
             ↓
 [下載 dataset → /workspace/data/]

重點總結

✅ Kaggle API 金鑰用 .env 管理,不會洩漏到 GitHub。

✅ 資料下載流程移到 Notebook,方便即時檢查與探索。

✅ 所有資料集中存放於 /workspace/data/,後續分析統一存取。

延伸思考 & 預告

明天(Day 4):我們會進行 自動化 EDA 與資料清理,用 ydata-profiling 產生互動式報告,並處理缺失值與異常資料,讓資料更乾淨。


上一篇
Day 02|MLflow 架構與 Tracking/Registry 實作
系列文
從0開始的MLFLOW應用搭建3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言