top of page

Previsioni meteo con python e machine learning

Nella Data Science , le previsioni meteorologiche sono un'applicazione del machine learning sulle serie temporali dove utilizziamo dati temporali e algoritmi per fare previsioni per un determinato periodo di tempo.


Se vuoi imparare a prevedere il tempo usando le tue competenze di Data Science, questo articolo è per te. Ti guiderò attraverso nelle previsione metereologiche usando Python e un algoritmo di Machine learning.


Previsioni meteo con python e machine learning
Previsioni meteo con python e machine learning

Previsioni meteo con python e machine learning

La previsione meteorologica è il compito di prevedere le condizioni meteorologiche per una data posizione e ora. Con l'uso di dati meteorologici e algoritmi, è possibile prevedere le condizioni meteorologiche per il numero di n giorni successivo.


Per la previsione del tempo utilizzando Python, abbiamo bisogno di un set di dati contenente dati meteorologici storici basati su una posizione particolare. Ho trovato un set di dati su Kaggle basato sui dati meteorologici giornalieri.


Possiamo utilizzare questo set di dati per il compito di previsioni meteorologiche. È possibile scaricare il set di dati da qui sotto oppure nella sezione Dataset cercando

  • "DatiTemperatura.csv"

DatiTemperatura
.csv
Download CSV • 78KB


Nella sezione seguente imparerai come analizzare e prevedere il tempo usando Python.


Ora iniziamo questa attività importando le librerie Python necessarie e il set di dati di cui abbiamo bisogno:


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px

data = pd.read_csv("DatiTemperatura.csv")
print(data.head())

Output:

         date   meantemp   humidity  wind_speed  meanpressure
0  2013-01-01  10.000000  84.500000    0.000000   1015.666667
1  2013-01-02   7.400000  92.000000    2.980000   1017.800000
2  2013-01-03   7.166667  87.000000    4.633333   1018.666667
3  2013-01-04   8.666667  71.333333    1.233333   1017.166667
4  2013-01-05   6.000000  86.833333    3.700000   1016.500000


Diamo un'occhiata alle statistiche descrittive di questi dati prima di andare avanti:


print(data.describe())

Output:

          meantemp     humidity   wind_speed  meanpressure
count  1462.000000  1462.000000  1462.000000   1462.000000
mean     25.495521    60.771702     6.802209   1011.104548
std       7.348103    16.769652     4.561602    180.231668
min       6.000000    13.428571     0.000000     -3.041667
25%      18.857143    50.375000     3.475000   1001.580357
50%      27.714286    62.625000     6.221667   1008.563492
75%      31.305804    72.218750     9.238235   1014.944901
max      38.714286   100.000000    42.220000   7679.333333


Ora diamo un'occhiata alle informazioni su tutte le colonne nel set di dati:



print(data.info())

Output:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1462 entries, 0 to 1461
Data columns (total 5 columns):
 #   Column        Non-Null Count  Dtype  
---  ------        --------------  -----  
 0   date          1462 non-null   object 
 1   meantemp      1462 non-null   float64
 2   humidity      1462 non-null   float64
 3   wind_speed    1462 non-null   float64
 4   meanpressure  1462 non-null   float64
dtypes: float64(4), object(1)
memory usage: 57.2+ KB


La colonna della data in questo set di dati non ha un tipo di dati datetime. Lo cambieremo quando richiesto. Diamo un'occhiata alla temperatura media nel corso degli anni:



figure = px.line(data, x="date", 
                 y="meantemp", 
                 title='Mean Temperature Over the Years')
figure.show()

Output:

Previsioni meteo con python e machine learning
Previsioni meteo con python e machine learning


Ora diamo un'occhiata all'umidità nel corso degli anni:



figure = px.line(data, x="date", 
                 y="humidity", 
                 title='Humidity Over the Years')
figure.show()

Output:

Previsioni meteo con python e machine learning
Previsioni meteo con python e machine learning

Ora diamo un'occhiata alla velocità del vento nel corso degli anni:



figure = px.line(data, x="date", 
                 y="wind_speed", 
                 title='Wind Speed Over the Years')
figure.show()

Output:

Previsioni meteo con python e machine learning
Previsioni meteo con python e machine learning

Fino al 2015, la velocità del vento era maggiore durante agosto, settembre, dicembre e gennaio.


Dopo il 2015 non si sono verificate anomalie nella velocità del vento durante agosto, settembre, dicembre e gennaio. Ora diamo un'occhiata al rapporto tra temperatura e umidità:


figure = px.scatter(data_frame = data, x="humidity",
                    y="meantemp", size="meantemp", 
                    trendline="ols", 
                    title = "Relationship Between Temperature and Humidity")
figure.show()

Output:


Previsioni meteo con python e machine learning
Previsioni meteo con python e machine learning

C'è una correlazione negativa tra temperatura e umidità. Significa che una temperatura più alta comporta una bassa umidità e una temperatura più bassa comporta un'umidità elevata.


Analisi del cambiamento di temperatura con Python

Ora analizziamo il cambiamento di temperatura nel corso degli anni. Per questa attività, convertirò prima il tipo di dati della colonna della data in datetime. Quindi aggiungerò due nuove colonne nel set di dati per i valori di anno e mese.


Ecco come possiamo modificare il tipo di dati ed estrarre i dati di anno e mese dalla colonna della data:


data["date"] = pd.to_datetime(data["date"], format = '%Y-%m-%d')
data['year'] = data['date'].dt.year
data["month"] = data["date"].dt.month
print(data.head())

Output:

        date   meantemp   humidity  wind_speed  meanpressure  year  month
0 2013-01-01  10.000000  84.500000    0.000000   1015.666667  2013      1
1 2013-01-02   7.400000  92.000000    2.980000   1017.800000  2013      1
2 2013-01-03   7.166667  87.000000    4.633333   1018.666667  2013      1
3 2013-01-04   8.666667  71.333333    1.233333   1017.166667  2013      1
4 2013-01-05   6.000000  86.833333    3.700000   1016.500000  2013      1


Ora diamo un'occhiata al cambiamento di temperatura nel corso degli anni:


plt.style.use('fivethirtyeight')
plt.figure(figsize=(15, 10))
plt.title("Temperature Change Over the Years")
sns.lineplot(data = data, x='month', y='meantemp', hue='year')
plt.show()

Output:

Previsioni meteo con python e machine learning
Previsioni meteo con python e machine learning

Sebbene il 2017 non sia stato l'anno più caldo dell'estate, possiamo vedere un aumento della temperatura media ogni anno.



Previsioni meteo con Python

Passiamo ora al compito delle previsioni del tempo. Userò il modello del profeta di Facebook per questo compito. Il modello del profeta di Facebook è una delle migliori tecniche per la previsione delle serie temporali.


Se non hai mai utilizzato questo modello prima, puoi installarlo sul tuo sistema utilizzando il comando menzionato di seguito nel prompt dei comandi o nel terminale:


  • pip install prophet



Il modello prophet accetta dati temporali denominati "ds" ed etichettati come "y". Quindi convertiamo i dati in questo formato:



forecast_data = data.rename(columns = {"date": "ds", 
                                       "meantemp": "y"})
print(forecast_data)

Output:

ds          y    humidity  wind_speed  meanpressure  year  month
0    2013-01-01  10.000000   84.500000    0.000000   1015.666667  2013      1
1    2013-01-02   7.400000   92.000000    2.980000   1017.800000  2013      1
2    2013-01-03   7.166667   87.000000    4.633333   1018.666667  2013      1
3    2013-01-04   8.666667   71.333333    1.233333   1017.166667  2013      1
4    2013-01-05   6.000000   86.833333    3.700000   1016.500000  2013      1
...         ...        ...         ...         ...           ...   ...    
1457 2016-12-28  17.217391   68.043478    3.547826   1015.565217  2016     12
1458 2016-12-29  15.238095   87.857143    6.000000   1016.904762  2016     12
1459 2016-12-30  14.095238   89.666667    6.266667   1017.904762  2016     12
1460 2016-12-31  15.052632   87.000000    7.325000   1016.100000  2016     12
1461 2017-01-01  10.000000  100.000000    0.000000   1016.000000  2017      1

[1462 rows x 7 columns]

Di seguito è riportato come possiamo utilizzare il modello del profeta di Facebook per le previsioni del tempo utilizzando Python:



from prophet import Prophet
from prophet.plot import plot_plotly, plot_components_plotly
model = Prophet()
model.fit(forecast_data)
forecasts = model.make_future_dataframe(periods=365)
predictions = model.predict(forecasts)
plot_plotly(model, predictions)

Output:

Previsioni meteo con python e machine learning
Previsioni meteo con python e machine learning

E' così che puoi analizzare e prevedere il meteo usando Python.



Riepilogo sulle Previsioni meteo con python e machine learning

La previsione meteo è il compito di prevedere le condizioni meteorologiche per una data posizione e ora. Con l'uso di dati meteorologici e algoritmi, è possibile prevedere le condizioni meteorologiche per il numero di n giorni successivi. Spero che questo articolo sull'analisi e le previsioni meteorologiche utilizzando Python ti sia piaciuto. Sentiti libero di porre domande nella sezione commenti qui sotto.

Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online