Siamo giunti all’ultimo capitolo di questa appassionante guida! In questo percorso assieme abbiamo imparato cosa è il machine learning, come raccogliere i dati e come scegliere il modello più adatto al nostro caso, abbiamo inoltre visto come addestrare i modelli e come ottenere le nostre amate previsioni.
In questo ultimo articolo ci concentriamo finalmente sulla visualizzazione delle previsioni. Abbiamo scelto di visualizzarle all’interno della pagina web che mostra i dati raccolti dalla nostra stazione meteo, pagina già descritta nell’articolo Come realizzare una stazione meteo – PARTE 6/6: visualizzare i dati raccolti. Quindi oggi analizzeremo solo la parte di codice che siamo andati ad integrare per mostrare la sezione dedicata alle previsioni.
In fondo al questa pagina sarà possibile come sempre scaricare il file completo!

Come mostrato nell’immagine sopra creeremo due sezioni:
- Previsioni per la giornata odierna con machine learning: i dati predetti dai nostri modelli per il giorno attuale;
- Valutazione previsioni giornata di ieri: la variazione tra i dati predetti e i valori effettivamente raccolti dalla stazione meteo al termine della giornata di ieri.
Riteniamo molto interessante poter confrontare i dati predetti con i valori reali così da renderci conto della bontà dei modelli.
Iniziamo col recuperare i valori di temperatura massima, temperatura minima, precipitazioni cumulate e timestamp relativi all’ultima riga inserita nella tabella previsione nel nostro database ed i valori che erano stati previsti per la giornata di ieri, oltre ai valori di temperatura massima, temperatura minima e precipitazioni cumulate rilevati dalla stazione meteo per la giornata di ieri.
// calcolo valori per tabella previsioni
// ultimi timestamp, temperatura_max, temperatura_min, precipitazioni_cumulate previsioni
$queryprevisioni = mysqli_query($con, "select time_stamp, temperatura_max, temperatura_min, precipitazioni_cumulate from previsione order by time_stamp desc limit 1");
$arrayprevisioni = mysqli_fetch_array($queryprevisioni);
$lasttimestampprevisioni = $arrayprevisioni['0'];
$lasttimestampprevisioni = date("d-m-Y", strtotime($lasttimestampprevisioni));
$temperatura_maxprevisioni = $arrayprevisioni['1'];
$temperatura_minprevisioni = $arrayprevisioni['2'];
$precipitazioni_cumulateprevisioni = $arrayprevisioni['3'];
// temperatura massima, temperatura minima e precipitazioni di ieri
$oggi = date('d-m-Y');
$ieri = date('Y-m-d', strtotime('-1 day'));
$querydatiieri = mysqli_query($con, "SELECT max(temperatura) as temperatura_max_ieri, min(temperatura) as temperatura_min_ieri, sum(precipitazioni) as precipitazioni_ieri FROM `stazione_meteo` WHERE DATE(time_stamp) = '".$ieri."'");
$arraydatiieri = mysqli_fetch_array($querydatiieri);
$temperatura_maxieri = $arraydatiieri['0'];
$temperatura_minieri = $arraydatiieri['1'];
$precipitazioni_cumulateieri = $arraydatiieri['2'];
// temperatura massima, temperatura minima e precipitazioni previste di ieri
$queryprevisioniieri = mysqli_query($con, "select temperatura_max, temperatura_min, precipitazioni_cumulate from previsione WHERE DATE(time_stamp) = '".$ieri."'");
$arrayprevisioniieri = mysqli_fetch_array($queryprevisioniieri);
$temperatura_maxprevisioniieri = $arrayprevisioniieri['0'];
$temperatura_minprevisioniieri = $arrayprevisioniieri['1'];
$precipitazioni_cumulateprevisioniieri = $arrayprevisioniieri['2'];
Procediamo a calcolare la differenza tra i valori predetti ed i valori effettivamente rilevati per la giornata che si è appena conclusa ed approfittiamo per calcolare il numero di righe registrate dalla stazione meteo:
// calcolo errori previsioni per la giornata di ieri
$deltatemperatura_max = round($temperatura_maxprevisioniieri-$temperatura_maxieri, 2);
$deltatemperatura_min = round($temperatura_minprevisioniieri-$temperatura_minieri, 2);
$deltaprecipitazioni_cumulate = round($precipitazioni_cumulateprevisioniieri - $precipitazioni_cumulateieri, 2);
// calcolo numero righe tabella stazione meteo
$querynumerorighe = mysqli_query($con, "SELECT COUNT(*) FROM stazione_meteo");
$arraynumerorighe = mysqli_fetch_array($querynumerorighe);
$numerorighe = $arraynumerorighe['0'];
Nel codice seguente vediamo finalmente come visualizzare le previsioni.
<? if ($lasttimestampprevisioni == $oggi) { ?>
<br>
<h2 style="text-align:center; font-family:tahoma; color: white;">Previsioni per la giornata odierna con machine learning</h2>
<center>
<table border="1" cellspacing="0" cellpadding="5" frame="void" style="font-family:tahoma; margin-left: 40px; margin-right: 40px;">
<tr><td style="color: white" width="15%"></td><td style="color: white" align="center" width="15%"><b>Temperatura massima<br></b></td><td style="color: white" align="center" width="15%"><b>Temperatura minima</b></td><td style="color: white" align="center" width="15%"><b>Precipitazioni</b></td></tr>
<tr><td style="color: white" width="15%"><b>Previsioni per oggi</b></td><td style="color: white" align="center" width="15%"><? echo $temperatura_maxprevisioni;?> °C</td><td style="color: white" align="center" width="15%"><? echo $temperatura_minprevisioni;?> °C</td><td style="color: white" align="center" width="15%"><? echo $precipitazioni_cumulateprevisioni;?> mm</td></tr>
</table>
</center>
<br>
<p style="text-align:left; font-family:tahoma; color: white; margin-left: 40px; margin-right: 40px;">Il machine learning è un sottoinsieme dell'intelligenza artificiale che permette ai sistemi di apprendere dai dati per migliorare le proprie prestazioni senza essere esplicitamente programmati.
<br>Le previsioni riportate in questa pagina si basano su <?echo $numerorighe?> dati raccolti dalla stazione meteo dal 3 ottobre 2021.
<br>I valori previsti si basano su 2 modelli differenti: Random Forest Regressor per la temperatura massima e minima e Linear Regression per le precipitazioni.
<br>Le previsioni riportate, essendo frutto di calcoli automatici, possono essere corrette come completamente errate.</p>
<br>
<h2 style="text-align:center; font-family:tahoma; color: white;">Valutazione previsioni giornata di ieri</h2>
<center>
<table border="1" cellspacing="0" cellpadding="5" frame="void" style="font-family:tahoma; margin-left: 40px; margin-right: 40px;">
<tr><td style="color: white" width="15%"></td><td style="color: white" align="center" width="15%"><b>Temperatura massima<br></b></td><td style="color: white" align="center" width="15%"><b>Temperatura minima</b></td><td style="color: white" align="center" width="15%"><b>Precipitazioni</b></td></tr>
<tr><td style="color: white" width="15%"><b>Differenza previsione-realtà</b></td><td style="color: white" align="center" width="15%"><? echo $deltatemperatura_max;?> °C</td><td style="color: white" align="center" width="15%"><? echo $deltatemperatura_min;?> °C</td><td style="color: white" align="center" width="15%"><? echo $deltaprecipitazioni_cumulate;?> mm</td></tr>
</table>
</center>
<br><br><br>
<? } ?>
Trattasi di semplici tabelle realizzate in html. La cosa più significativa da notare è che le previsioni odierne e quindi le relative tabelle saranno mostrate solo se è presente una previsione corrispondente alla data di oggi.
Il risultato finale di tutto questo lavoro è possibile vederlo cliccando qui!!!
Il codice completo per visualizzare i dati della stazione meteo e delle previsioni è disponibile cliccando qui ma ricordate di modificare i dati di accesso al vostro database mysql per una corretta connessione.
