# GIT HUB DEL PROGETTO

{% embed url="<https://github.com/zorb0l1in0/keras_project_montanaro_laterza_tuninetti.git>" %}

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

<figure><img src="https://3561918162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FogR04dpg1L5r2jEog2l4%2Fuploads%2FPkdKWtzBSg2YscKfcoeC%2FScreenshot%202025-10-31%20alle%2016.26.09.png?alt=media&#x26;token=aeb7a98f-6b0f-4226-a90c-83df4d5b1ad3" alt="" width="243"><figcaption></figcaption></figure>

&#x20;📘 DESCRIZIONE DEL FLUSSO COMPLETO DEL PROGETTO&#x20;

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)&#x20;

* 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)&#x20;

* 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.

&#x20;🔁 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.

&#x20;💡 In sintesi:

* main.py → crea e salva il modello addestrato (offline)
* app.py → lo carica e lo rende disponibile via API (online)&#x20;
