Applica il modello al flusso di dati
Applichiamo ora la tua Pipeline di Machine Learning addestrata ai dati in streaming, per categorizzare subito i valori.
Userai quindi predict() sui messaggi in arrivo per determinare la categoria.
In base al risultato della previsione prenderai una decisione e chiuderai (o meno) le finestre di casa.
Ricorda: la categoria 1 indica bel tempo, mentre la categoria 0 indica tempo brutto e freddo.
Inoltre, la pipeline restituisce un array di previsioni. Poiché hai passato un solo elemento, devi accedere al primo elemento usando category[0].
La funzione close_window() gestirà questo per te e registrerà anche il record per analisi successive.
pandas come pd e json sono già stati caricati nella sessione per te, e il modello è disponibile come pl.
Questo esercizio fa parte del corso
Analizzare i dati IoT in Python
Istruzioni dell'esercizio
- Analizza il dizionario in un DataFrame pandas con
DataFrame.from_records(), usando"timestamp"come indice ecolscome colonne. - Determina la categoria di questo record usando
predict()dell'oggetto pipeline e assegna il risultato acategory. - Chiama
close_window()con il DataFramedfcome primo argomento ecategorycome secondo argomento.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
def model_subscribe(client, userdata, message):
data = json.loads(message.payload)
# Parse to DataFrame
df = pd.____.____([data], index=____, columns=____)
# Predict result
category = ____
if category[0] < 1:
# Call business logic
____
else:
print("Nice Weather, nothing to do.")
# Subscribe model_subscribe to MQTT Topic
subscribe.callback(model_subscribe, topic, hostname=MQTT_HOST)