Tillämpa modellen på dataströmmen
Nu ska du tillämpa din tränade maskininlärningspipeline på strömmande data och kategorisera värdena direkt.
Du använder predict() på inkommande meddelanden för att fastställa kategorin.
Baserat på prediktionens resultat vidtar du åtgärder och stänger fönstren i ditt hus – eller låter bli.
Kom ihåg att kategori 1 betyder bra väder, medan kategori 0 innebär dåligt, kallt väder.
Pipelinen returnerar en array med prediktioner. Eftersom du skickade in bara ett element behöver du hämta det första elementet med category[0].
Funktionen close_window() hanterar detta åt dig och loggar dessutom posten för vidare analys.
pandas som pd och json har förinslästs i sessionen, och modellen finns tillgänglig som pl.
Den här övningen är en del av kursen
Analysera IoT-data i Python
Övningsinstruktioner
- Omvandla dictionaryn till en pandas DataFrame med
DataFrame.from_records(), med"timestamp"som index ochcolssom kolumner. - Bestäm kategorin för denna post genom att använda
predict()från pipeline-objektet och tilldela resultatet tillcategory. - Anropa
close_window()med DataFrame:ndfsom första argument ochcategorysom andra argument.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)