GIT HUB DEL PROGETTO

L'idea è quella di sviluppare il progetto usando le classi in questo modo

📘 DESCRIZIONE DEL FLUSSO COMPLETO DEL PROGETTO

Questo progetto è diviso in due fasi principali: 1️⃣ TRAINING (eseguito una tantum) 2️⃣ SERVING (eseguito in produzione per predire nuovi vini)

🔹 FASE 1 — TRAINING (main.py)

  • Si carica il dataset dei vini e si applica il preprocessing.

  • I dati vengono standardizzati (StandardScaler) e divisi in train/validation.

  • Si addestra il modello Keras (WineQualityNeuralNet).

  • Al termine, il modello e lo scaler vengono salvati nella cartella /model:

    • model/wine_quality_model.keras → il modello addestrato

    • model/scaler.pkl → lo scaler usato per la normalizzazione Questi file rappresentano la pipeline "congelata" del sistema.

👉 Questa fase si esegue manualmente solo quando si vuole addestrare o aggiornare il modello.

🔹 FASE 2 — SERVING (Flask API)

  • Si avvia l’API Flask (es. app/app.py o api.py).

  • All’avvio, l’API carica automaticamente:

    • il modello Keras salvato,

    • lo scaler salvato.

  • Rimane in ascolto su una porta (default: 5000) e attende richieste.

Quando arriva una richiesta POST /predict: - legge i dati del nuovo vino (JSON), - li trasforma con lo stesso scaler usato nel training, - li passa al modello per ottenere la predizione, - restituisce la classe di qualità prevista e le probabilità.

👉 Questa fase è continua: serve per fare previsioni “live” senza dover riaddestrare ogni volta.

🔁 FASE 3 — RETRAINING (facoltativa) Se arrivano nuovi dati o si vuole migliorare la performance: - si riesegue main.py, - vengono generati nuovi file .keras e .pkl, - si riavvia Flask per usare il nuovo modello.

💡 In sintesi:

  • main.py → crea e salva il modello addestrato (offline)

  • app.py → lo carica e lo rende disponibile via API (online)

Last updated