La qualità dell’aria nelle nostre città è diventata una questione cruciale per la salute pubblica, l’ambiente e la qualità della vita urbana.
L’inquinamento atmosferico, secondo l’Organizzazione Mondiale della Sanità, è collegato a una serie di gravi problemi di salute, inclusi disturbi respiratori e cardiovascolari, che possono portare a morte prematura.
In questo scenario, la tecnologia, in particolare il machine learning (ML), emerge come uno strumento fondamentale per combattere questa minaccia invisibile, offrendo soluzioni innovative per monitorare e prevedere la qualità dell’aria in tempo reale.
Indice dei contenuti
La Sfida dell’Inquinamento Urbano
Le città di tutto il mondo stanno affrontando livelli crescenti di inquinanti atmosferici come PM2.5, NO2 e SO2, spesso superando i limiti considerati sicuri.
Questi inquinanti sono principalmente prodotti da attività umane quali il traffico, l’industria e il riscaldamento domestico.
La sfida è non solo monitorare questi livelli in modo accurato, ma anche prevedere le loro fluttuazioni per prendere provvedimenti proattivi che possano mitigare l’impatto sulla salute pubblica.
Il Ruolo del Machine Learning
Il machine learning offre un potenziale enorme nel trattare la complessità dei dati ambientali. Modelli predittivi possono essere addestrati su vasti dataset che includono misurazioni storiche degli inquinanti, dati meteorologici (come temperatura, umidità e velocità del vento) e altre variabili geospaziali per prevedere i livelli futuri di inquinamento.
Costruzione del Modello
Supponiamo di avere un dataset che comprende giornalmente i livelli di PM2.5, le condizioni meteorologiche, e altre variabili rilevanti per un periodo di diversi anni.
Utilizzando Python, potremmo costruire un modello di regressione o una rete neurale per prevedere i livelli di PM2.5 basandoci su queste variabili.
Di seguito è presentato un esempio di come potrebbe essere sviluppato questo modello usando il popolare framework scikit-learn.
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import mean_squared_error # Carica i dati data = pd.read_csv('air_quality_dataset.csv') # Preparazione dei dati features = data[['temperature', 'humidity', 'wind_speed', 'previous_PM2.5']] target = data['PM2.5'] # Divisione dei dati in set di addestramento e test X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42) # Addestramento del modello model = RandomForestRegressor(n_estimators=100) model.fit(X_train, y_train) # Valutazione del modello predictions = model.predict(X_test) mse = mean_squared_error(y_test, predictions) print(f'Mean Squared Error: {mse}')
Questo script è un esempio basilare che dimostra come addestrare e valutare un modello di regressione per prevedere i livelli di PM2.5 basandosi su condizioni meteorologiche e misurazioni storiche.
Impatti e Benefici
Implementando modelli di ML per la previsione della qualità dell’aria, le città possono beneficiare in vari modi.
Gli avvisi possono essere generati automaticamente quando i modelli prevedono superamenti dei limiti di sicurezza, permettendo alle autorità di reagire rapidamente con misure come restrizioni al traffico o raccomandazioni sanitarie.
Questo non solo aiuta a proteggere la salute dei cittadini, ma supporta anche una pianificazione urbana più informata e sostenibile.
Miglioramento delle tecniche applicate
Per rendere lo script di machine learning più avanzato e completo, possiamo utilizzare una combinazione di diverse tecniche e librerie, come la normalizzazione dei dati, la selezione delle caratteristiche, e l’ottimizzazione dei parametri del modello.
Inoltre, integrerò un modello di rete neurale usando Keras, una popolare libreria di deep learning. Questo approccio permette di catturare relazioni più complesse nei dati.
Ecco come potrebbe apparire uno script più avanzato per la previsione della qualità dell’aria:
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_squared_error from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout from tensorflow.keras.optimizers import Adam # Caricamento dei dati data = pd.read_csv('air_quality_dataset.csv') # Pre-elaborazione dei dati features = data[['temperature', 'humidity', 'wind_speed', 'previous_PM2.5']] target = data['PM2.5'] # Normalizzazione dei dati scaler = StandardScaler() features_scaled = scaler.fit_transform(features) # Divisione dei dati in training e test set X_train, X_test, y_train, y_test = train_test_split(features_scaled, target, test_size=0.2, random_state=42) # Creazione del modello di rete neurale model = Sequential([ Dense(128, activation='relu', input_dim=X_train.shape[1]), Dropout(0.2), Dense(64, activation='relu'), Dropout(0.2), Dense(1, activation='linear') ]) # Compilazione del modello model.compile(optimizer=Adam(learning_rate=0.001), loss='mean_squared_error') # Addestramento del modello history = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2, verbose=1) # Valutazione del modello sul test set predicted_values = model.predict(X_test) mse = mean_squared_error(y_test, predicted_values) print(f'Mean Squared Error: {mse}') # Visualizzazione dell'andamento della perdita import matplotlib.pyplot as plt plt.plot(history.history['loss'], label='Training loss') plt.plot(history.history['val_loss'], label='Validation loss') plt.title('Model loss progress during training') plt.ylabel('Mean Squared Error') plt.xlabel('Epoch') plt.legend() plt.show()
Dettagli dello Script
- Pre-elaborazione dei dati: I dati vengono normalizzati usando
StandardScaler
per garantire che il modello non sia influenzato dalla scala delle caratteristiche. - Modello di Rete Neurale: Viene creato un modello di rete neurale usando Keras. Il modello contiene layer densi con attivazione ReLU e layer di dropout per ridurre il rischio di overfitting.
- Compilazione e Addestramento: Il modello viene compilato con l’ottimizzatore Adam e addestrato sui dati. Vengono anche visualizzate le curve di perdita per valutare l’andamento dell’addestramento e della validazione, utili per monitorare eventuali problemi come l’overfitting.
- Valutazione: Dopo l’addestramento, il modello viene valutato sul set di test per determinare l’errore quadratico medio (MSE), che misura quanto bene il modello è in grado di prevedere i livelli di PM2.5.
Conclusioni
L’uso del machine learning per monitorare e prevedere la qualità dell’aria è un esempio eclatante di come la tecnologia moderna possa essere applicata per risolvere alcuni dei problemi più pressanti del nostro tempo.
Nonostante le sfide, i benefici di tali innovazioni possono migliorare significativamente la qualità della vita nelle aree urbane.