Modell auf Datenstrom anwenden
Wenden wir jetzt deine trainierte Machine-Learning-Pipeline auf Streaming-Daten an und kategorisieren die Werte sofort.
Du verwendest dann predict() auf den eingehenden Nachrichten, um die Kategorie zu bestimmen.
Abhängig vom Ergebnis der Vorhersage ergreifst du Maßnahmen und schließt die Fenster in deinem Haus (oder eben nicht).
Denk daran: Kategorie 1 bedeutet gutes Wetter, Kategorie 0 steht für schlechtes, kaltes Wetter.
Außerdem gibt die Pipeline ein Array von Vorhersagen zurück. Da du nur ein Element übergeben hast, musst du mit category[0] auf das erste Element zugreifen.
Die Funktion close_window() übernimmt das für dich und protokolliert den Datensatz zusätzlich für eine spätere Auswertung.
pandas als pd und json wurden bereits für dich in die Session geladen, und das Modell ist als pl verfügbar.
Diese Übung ist Teil des Kurses
IoT-Daten in Python analysieren
Anleitung zur Übung
- Parse das Dictionary in ein pandas-DataFrame mit
DataFrame.from_records(), verwende"timestamp"als Index undcolsals Spalten. - Bestimme die Kategorie dieses Datensatzes mit
predict()aus dem Pipeline-Objekt und weise das Ergebniscategoryzu. - Rufe
close_window()mit dem DataFramedfals erstem Argument undcategoryals zweitem Argument auf.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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)