close
AzureCloudKünstliche Intelligenz

Ein eigenes Machine Learning WebService aufrufen

In meinem letzten Blogbeitrag habe ich gezeigt, wie man mit Microsoft Azure Machine Learning Studio ein Experiment anlegen kann und dieses als Web Service bereitstellt. Heute möchte ich zeigen wie einfach es ist dieses WebService z.B. in einer eigenen Konsolenanwendung zu nutzen. 

Das Machine Learning Experiment

Zur Erinnerung, wir haben zuletzt ein Experiment zur Vorhersage, ob eine Person mehr als US$ 50.000 pro Jahr verdienen kann, angelegt. Wir haben uns dazu, der Azure AI Gallery bedient und uns das fix fertige Experiment, natürlich inklusive der Daten in unser Machine Learning Studio geholt. Wer nochmal wissen will, wie das genau funktioniert hat, kann ganz einfach meinen letzten Blogbeitrag nochmal lesen.

Die Konsolenanwendung

Mit Hilfe von MS Visual Studio 2017 legen wir einfach eine simples Konsolenanwendungs-Projekt mit dem Namen „MLSampleWSCall“ an. Ein kleiner Tipp an dieser Stelle. Abgesehen davon, dass man nun die Konsolenanwendung natürlich selbst erfinden kann, gibt es zum selbst erstellten WebService auch eine Hilfe. Klickt man auf „Request/Response“ in der Spalte „API HELP PAGE“ erscheint zum WebService ein sehr gute Hilfe-Seite.

Nicht nur, dass man hier die Beschreibung zu den Parametern erhält, nein man bekommt auch einen fix fertige Demo-Source-Code in den Sprachen C#, R oder Python zur Verfügung gestellt. Nachdem man den Code selektiert und in sein eigenes Konsolenanwendungs-Projekt reinholt, braucht man nur mehr den API key ändern. Man beachte, dass die Service-URI bereits korrekt im Sample-Code enthalten ist. Wichtig ist auch, dass man den Instruktionen des 1. Kommentars folge leistet. Denn hier steht, dass man auch das Nuget Package Microsoft.AspNet.WebApi.Client für das Projekt benötigt. Das installiert man in Visual Studio mit Hilfe des Nuget Package Managers und somit sollten alle Assemblies und damit verbundenen Referenzen passen.

Jetzt starten wir ganz einfach mal die Anwendung und warten auf das Ergebnis.

Wow! Die Verbindung funktioniert, d.h. der Aufruf war erfolgreich. Das Ergebnis selbst ist nicht berauschend, bedenkt man, dass wir uns um die Eingabewerte kaum gekümmert haben. Die Wahrscheinlichkeit weniger als US$ 50.000 zu verdienen liegt defacto bei 0 % (0,00322…). Das ist auch klar, der Demo-Source-Code beinhaltet ja auch keinen sinnvollen Eingabewerte. Die Zumindest hat der 1. Aufruf aber gezeigt, dass alles funktionell vorhanden und erreichbar ist. 🙂

Also starten wir noch einen Versuch und geben jetzt ein paar andere Eingabewerte mit. Damit wir auch wissen, welche Werte von den Parametern akzeptiert werden, ist es hilfreich nochmals einen Blick auf die Hilfe des WebServices zu werfen. Im Abschnitt „Output Parameters“ sind die möglichen Werte für die einzelnen Parameter aufgeschlüsselt.

Machen wir also einen Aufruf für einen männlichen weißen verheirateten 40-jährigen Amerikaner, der ein Master-Studium abgeschlossen hat. Nehmen wir zusätzlich an er ist Privatangestellter.

  • sex = Male
  • age = 40
  • workclass = Private
  • education = Masters
  • marital-status = Married-civ-spouse
  • occupation = Prof-specialty
  • native-country = United-States

Der Parameter im Source Code sieht dann z.B. wie folgt aus:

Values = new string[,] { { „40“, „Private“, „0“, „Masters“, „“, „Married-civ-spouse“, „Prof-specialty“, „Husband“, „White“, „Male“, „0“, „0“, „40“, „United-States“, „value“ } }

Zur Info, man könnte hier natürlich mehrere Daten übergeben und diese „vorhersagen“ lassen, darauf verzichten wir aber in diesem Schritt. D.h. wir übergeben ein JSON-Array mit nur einem Datensatz. Lassen wir uns also jetzt die Ausgabe für unsere „Machine Learning Dummy“ berechnen.

Wow, und jetzt erhalten wir eine echte Vorhersage, die auch noch dazu plausibel klingt. Diese Person verdient mit einer Wahrscheinlichkeit von ~ 86 % mehr als US$ 50.000 pro Jahr.

Fazit

Ergänzend zu meinem letzten Beitrag wollte ich hier zeigen, wie schnell es geht mit Hilfe des MS Azure Machine Learning Studios eine eigene Anwendung zu programmieren, die ein WebService  basierend auf Machine Learning nutzt. Die Infrastruktur und das Service selbst, das hier Microsoft zur Verfügung stellt, erleichtert die Arbeit ungemein. Der Schritt zu einer eigenen echten Anwendung, Webapplikation, mobilen Applikation oder als Teil einer SharePoint Lösung mit einem „fancy“ Benutzerinterface ist nur mehr sehr klein. Natürlich gibt es hier noch die eine oder andere technische Hürde, wie z.B. das hinlänglich bekannte CORS Problem bei Webapplikationen. Diesbezüglich gibt es natürlich auch Workarounds. Eine Möglichkeit wäre beispielweise hier zu finden.

Aber es muss nicht immer eine eigene/neue Applikation sein. Ganz im Gegenteil denn das Ganze kann man natürlich auch mit Hilfe von Excel nutzen und das möchte ich dann beim nächsten Mal herzeigen.

🙂

Michael König

The author Michael König

Michael König ist leidenschaftlicher Informatiker. Er ist bei HATAHET als Leiter der Abteilung Development Solutions sowie als Lead Developer und Application Architekt tätig. Herr König bringt 20 Jahre Berufserfahrung im Bereich der Software-Entwicklung und im IT-Consulting mit. Seit mehr als 10 Jahren beschäftigt sich Herr König intensiv mit den Microsoft SharePoint Technologien und ist in diesem Segment vorrangig auf die Software-Entwicklung, Erweiterung und Individualisierung von SharePoint spezialisiert. Heute beschäftigt er sich mit den neuen Möglichkeiten von SharePoint Online und On-Premises, Office 365 und Microsoft Azure. Die Themen Bots, Cognitive Services und Machine Learning auf Basis von Microsoft Technologien gehören hier ebenfalls dazu.

Leave a Response