Flask API und Machine Learning Modell

Stefan Preusler
2 min readMay 18, 2019

--

Das Ausliefern von Modellen (engl. Deployment) ist ein wichtiger Bestandteil von Machine-Learning bzw. Data-Mining Prozessen. Die operative Integration ist essentiell für den Erfolg eines Data Scientists. Schließlich sollte das Modell nicht nur lokal auf dem Rechner des Entwicklers existieren.

Wenn ein potenzieller Kreditnehmer zu seiner Bank geht, werden die Kundenmerkmale von einem Mitarbeiter aufgenommen und an ein Scoringmodell übermittelt. Im Anschluss wird die Kreditwürdigkeit berechnet und im Anschluss zurück an den Bankberater gesendet. Statt mit dem Data Scientist zu telefonieren, der dann mithilfe seines Modells die Bewertung vornimmt, kommunizieren verschiedene IT Systeme miteinander. Dieser Austausch wird sehr oft mithilfe von Schnittstellen (API — Application Programming Interface) implentiert.

Das Python Web Framework Flask bietet hierfür eine ideale Basis. Im Folgenden wird ein Modell für die Überlebenswahrscheinlichkeit von Passagieren auf der Titanic erstellt. Das Modell basiert auf Daten von Reisenden des Unglücks. Anhand des Alters, Geschlechts und Zusteigeorts wird ein logistisches Regressionsmodell erzeugt. Dabei wird über eine JSON API Merkmale übermittelt. Im Anschluss erhält der Anfragende eine Aussage über das Überleben(Ja/Nein). Der Quellcode ist auf Github zugänglich.

model.py

Die Datei model.py erzeugt einmalig ein serialisiertes Modell “model.pkl”. Dadurch kann das logistische Regressionsmodell geladen und gespeichert werden. Für die Erstellung muss das Skript einmalig mittels python model.py in der Konsole ausgeführt werden.

app.py

In diesem Skript wird das erzeugte Modell geladen und unter /predict mittels der HTTP Methode “POST” zugänglich gemacht. Der Request im JSON Format wird in einen Dataframe umgewandelt. Dies wird als Input für das Modell verwendet. Die Rückgabe der Vorhersage wird anschließend im JSON Format zurück gegeben. Damit ist die API fertig programmiert.

API Anfrage

Die API lässt sich beispielsweise mittels Postman anfragen (siehe Screenshot). Im Beispiel wäre der Passagier weiblich, 15 Jahre alt und in Southampton zugestiegen. Die API antwortet mit einer Prognose von “1”, was einem Überleben des Unglücks entspricht. Erhöhen wir das Alter und verändern das Geschlecht in männlich, wird kein Überleben vorhergesagt.

Anfrage an die API und Antwort mittels Postman

Docker (optional)

Optional wurde dieses Projekt noch in einen Docker Container transferiert. Die Datei Dockerfile beinhaltet die relevanten Informationen. Eine ausführliche Anleitung und Erklärung hierzu wird in einem meiner vorherigen Beiträge beschrieben. Das Projekt steht auch auf Dockerhub zum Download zur Verfügung.

Viel Spaß beim Ausprobieren :-)

--

--

Stefan Preusler

Data Science | Python | Qlik Sense | Kaffee | Frankfurt | Kontakt: stefan-preusler.de