Michael Zickert, Trainer auf dem Python Summit, im Interview

„Jupyter ist das ideale Tool für Datenanalyse, interaktives Programmieren und die Erstellung von Programmierbeispielen“
Keine Kommentare

Jupyter Notebooks: Wer sich mit Machine Learning beschäftigt, stolpert irgendwann über diesen Namen. Wann aber lohnt es sich, einen Blick darauf zu werfen? Diese Frage beantwortet Michael Zickert im Interview zum Python Summit 2018.

Entwickler: Python ist eine der wichtigsten Sprachen im Bereich des Machine Learnings. In deinem Workshop auf dem Python Summit geht es unter anderem um die Entwicklungsumgebung Jupyter, mit der man mit Python arbeiten kann. Was kann man damit machen, warum lohnt sich ein Blick darauf?

Michael Zickert: Jupyter ist eine Programmierumgebung, um interaktiv Code auszuführen und Daten visualisieren zu lassen. Jupyter ist dokumentenorientiert, das heißt Projekte werden in sogenannten „Notebooks“ organisiert, in denen man nicht nur Code ausführen, sondern auch Inhalte via Markup Language, Grafiken oder Mediafiles anzeigen lassen kann. Die Notebooks sind direkt über die Kommandozeile ausführbar. Über die Jupyter-Notebook-App kann man sie aber auch einfach und komfortabel im Browser bearbeiten und ausführen.

Bei der Ausführung von Code ist man dabei nicht auf Python beschränkt, sondern es gibt mehr als 100 Kernels, die es möglich machen, Programmiersprachen einzubinden. So ist es z. B. möglich Funkionen mit Cython zu implementieren und dann direkt im Python-Code aufzurufen, um Algorithmen performanter ausführen zu lassen. Oder nehmen wir die Sprache R, die für statistische Berechnungen verwendet wird. Hier ist es sogar möglich, Variablen mit dem Python-Code auszutauschen.

Die Notebooks sind eingeteilt in einzelne Zellen, die entweder Code oder Content in Form von Markup Language enthalten können. Jede Zelle ist ausführbar und enthält nach Ausführung die Ausgaben des Codes. Somit können Daten, die im Code geladen bzw. erzeugt werden, direkt visualisiert werden. Da der Zustand des Notebooks während der Laufzeit gespeichert wird, muss man nicht immer alle Zellen ausführen, sondern kann interaktiv einzelne Zellen ausführen, um z. B. Parameter oder Code zu verändern und den Code der Zelle dann direkt erneut ausführen zu lassen. Das kann gerade bei rechenintensiven Vorgängerschritten viel Zeit sparen und ermöglicht beispielsweise eine explorative Datenanalyse.

Python Summit 2018

Advanced Flow Control in Python

mit Oz Tiram (derico – web development & consulting)

Azure in Action: Pragmatische Cloud-Lösungen für alle

mit Thorsten Hans und Christian Weyer (Thinktecture AG)

Zur Analyse von Daten gehört natürlich auch eine geeignete Repräsentation. Zur Darstellung kann man die unterschiedlichsten Formen, z. B. Tabellen, Graphen oder Mediastreams, direkt im Notebook anzeigen. Letzteres ist beispielsweise interessant, wenn Sie Algorithmen zur Erkennung von Objekten via Webcam testen möchten.

Da Notebooks nicht nur zur Ausführung von Code, sondern auch zur Dokumentation bzw. Präsentation gedacht sind, ist es wichtig zu erwähnen, dass diese in Repositories bei GitHub bzw. GitLab nicht als Source-Code, sondern gerendert angezeigt werden. Außerdem ist es möglich, Notebooks in die unterschiedlichsten Dateiformate, wie HTML, PDF oder Latex zu exportieren.

Entwickler: Gibt es Grenzen für die Nutzung von Jupyter Notebooks, also Einsatzfälle, in denen man eher auf eine andere Lösung zurückgreifen sollte?

Zickert: Jupyter ist meiner Meinung nach optimal zur Datenanalyse, für das interaktive Programmieren oder der Erstellung von Programmierbeispielen, z. B. für Bildungszwecke, geeignet. Es gibt Frameworks zur Erstellung von Reporting Dashboards oder zur Erstellung von Pipelines, wobei jedes Notebook einen Task in der Pipeline darstellen kann. Erzeugte Daten können in repräsentativer Form oder direkt als Notebook zur Live-Berechnung weitergegeben werden. Die Anwendungsgebiete sind also mannigfaltig.

Natürlich gibt es auch Einsatzfälle, für die Jupyter vielleicht nicht die optimale Lösung darstellt, z. B. wenn interaktive Programmierung für das Projekt gar nicht sinnvoll ist oder eine Applikation entwickelt werden soll. Hier möchte ich mich aber nicht festlegen, da ich immer wieder auf interessante Integrationen von Jupyter stoße.

Entwickler: Welche weiteren Python-Tools und Frameworks empfiehlst du für die Nutzung mit Jupyter?

Zickert: Im Bereich Machine Learning nutze ich gern TensorFlow. Mit dessen Graphenmodell lassen sich ML-Algorithmen einfach implementieren und mittels TensorBoard detailliert analysieren. In Jupyter kann ich den Graphen sowie dessen Hyperparameter einfach verändern und mir einen guten Überblick über die daraus resultierenden Veränderungen verschaffen oder z. B. Verteilungen in den Eingabedaten analysieren und grafisch darstellen.

Zur Manipulation der Daten sind meiner Meinung nach Pandas und NumPy eine gute Wahl. Damit lassen sich vor allem tabellarische Daten und multidimensionale Arrays performant bearbeiten. Zur Bearbeitung von Bilddaten und zur Objekterkennung setze ich OpenCV ein. Dabei ist sehr praktisch, dass ich mir die Resultate direkt in Jupyter anschauen kann.

Für Jupyter selbst gibt es die Jupyter Notebook Extensions. Damit kann man die Funktionen von Jupyter erweitern. Unter anderem kann man einen Table of Content nutzen, was sehr zur Übersichtlichkeit der Notebooks beiträgt, oder Notifications anzeigen lassen, wenn z. B. ein Task mit langer Laufzeit beendet ist.

Entwickler: Wie findet man am besten den Einstieg in das Machine Learning mit Python, kannst du uns einen Tipp geben?

Zickert: Es gibt gute Literatur zum Thema Machine Learning mit Python. Oft werden dabei die exerzierten Beispiele mit IPython bzw. Jupyter bereitgestellt. Durch die Möglichkeit, Daten bzw. Iterationsschritte von Algorithmen zu visualisieren und einfach mit veränderten Parametern erneut auszuführen, lassen sich meiner Meinung nach komplizierte Zusammenhänge einfacher erfassen. Auch bei YouTube findet man gute Sessions zum Thema, Vorträge von Konferenzen, Tutorials zum Einsetzen von Tools und Vorlesungen von Hochschulen und Universitäten. Nicht zuletzt sind Usergroups oder Konferenzen, wie der Python Summit in Berlin, eine gute Möglichkeit, sich mit anderen ML-Enthusiasten auszutauschen und seinen Horizont zu erweitern.

Entwickler: Was ist das wichtigste Take-away deines Workshops, das jeder mitnehmen sollte?

Zickert: Mein Workshop richtet sich vor allem an Einsteiger, die tabellarisch organisierte Daten analysieren und transformieren wollen, um allgemeine Import- und Export-Prozesse zu realisieren oder z. B. Business Reports zu erstellen.

Dabei werden wir mit Pandas Daten aus verschiedenen Datenquellen, wie CSV-Dateien, Datenbanken oder JSON-APIs, importieren und diese dann analysieren, umwandeln, visualisieren und die Ergebnisse exportieren.

Alle Beispiele werden natürlich als Jupyter Notebooks zur Verfügung gestellt. Während des Workshops können die Teilnehmer diese interaktiv ausführen und verändern. Nach dem Workshop sollte jeder Jupyter verwenden können und in der Lage sein, die Pandas-Bibliothek zur Datenanalyse, Visualisierung und Bearbeitung nutzen zu können.

Im Interview: Michael Zickert (Internet Union)

  • seit 2005 selbständiger Programmierer
  • 2008 – 2010 netzschaffende.de UG – Gründer, Geschäftsführer und CTO
  • 2011 – 2014 food.de – CTO
  • seit 2014 Internet-Union GmbH – CTO
Unsere Redaktion empfiehlt:

Relevante Beiträge

X
- Gib Deinen Standort ein -
- or -