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.

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

  1. Pre-elaborazione dei dati: I dati vengono normalizzati usando StandardScaler per garantire che il modello non sia influenzato dalla scala delle caratteristiche.
  2. 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.
  3. 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.
  4. 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.