Snippet Library: Effizientes Coding unterstützen

Autor*in:
Hammam
Abdelwaha

Maschinelles Lernen ist Teil unseres Alltags geworden, und begegnet uns beispielsweise bei Musikempfehlungen, Suchmaschinen oder virtuellen Assistenten auf unseren Smartphones. Darüber hinaus ist Maschinelles Lernen heute auch in vielen Aspekten in Unternehmen involviert, wie zum Beispiel bei der Erkennung ungewöhnlicher Verhaltensweisen in einem Produktionssystem, beim Verständnis des Verbraucherverhaltens für Prognosen und bei der Analyse medizinischer Berichte.

Das Erlernen eines grundlegenden Algorithmus für maschinelles Lernen oder das Lösen eines fortgeschrittenen Problems ist dank des einfachen Zugangs zu Informationen im Internet und der Verfügbarkeit zahlreicher Open-Source-Tools, die uns viel Zeit sparen, einfacher geworden. Um ein Softwareprogramm zu entwickeln oder ein Problem mit einem Algorithmus für maschinelles Lernen zu lösen, ist es wichtig, einen klaren Code zu schreiben, der das Ergebnis dieses Algorithmus zeigt. Dabei sollte der Code alle erforderlichen Aufgaben in einer klaren Struktur enthalten.  In dem Alltag eines Data Scientist kann es manchmal passieren, dass man Code für eine Aufgabe schreibt, die man bereits in der Vergangenheit in einem anderen Projekt implementiert hat. Klassischerweise kann man den bereits vorhandenen Code kopieren und dort einfügen, wo er gebraucht wird. Das kann viel Zeit sparen, wenn die Aufgabe kompliziert oder zeitaufwendig ist, da der Code nicht neu geschrieben werden muss.
Doch manchmal interessiert es den Data Scientist primär nicht, wie eine bestimmte Aufgabe funktioniert, sondern man braucht nur das Ergebnis. Daher wäre es hilfreich, eine Referenz für Codeschnipsel zu haben, mit denen man die für die Aufgabe benötigten Aufgaben schnell und praktisch implementieren kann.

Notizbücher für die Codierung

Für Data Scientists vergeht kaum ein Tag, an dem sie nicht einen Codeschnipsel schreiben. Neben dem Lesen von Forschungsarbeiten ist das Schreiben von Code zum Testen und für weitere Änderungen unumgänglich. Abgesehen von der Entwicklung reiner Skripte wie Python-Dateien gibt es viele Tools für maschinelles Lernen, die die Code-Entwicklung in einer interaktiven Umgebung ermöglichen, zum Beispiel Jupyter Notebook und Google Collab. Beide gelten als effizient für die Codeentwicklung, bevor Skripte für die Produktion geschrieben werden. In der Data-Science-Community ist Jupyter Notebook ein unverzichtbares Werkzeug für die Forschung und Projektentwicklung. Die Möglichkeit, die Codeausführung anzupassen und die interaktive Visualisierung zu nutzen, hat Jupyter Notebook in den letzten Jahren zu enormer Popularität verholfen.

Aus diesen Gründen wird es immer einfacher, Programmieren zu lernen, Software-Tools zu entwickeln oder praktische Probleme mit maschinellem Lernen zu lösen. Normalerweise besteht ein typisches Softwareprojekt aus einer Menge Code-Entwicklung. Aber wir haben festgestellt, dass man manchmal vielleicht eine komplexe Aufgabe entwickeln möchte, ohne sich um einfache Programmieraufgaben wie den Import von Basisbibliotheken, das Hochladen von Daten oder die Visualisierung von Daten zu kümmern. Oder man möchte einige Codetricks speichern, die man in früheren Projekten verwendet hat, um die eigene Arbeit zu erleichtern. Es gibt so viele verschiedene Lösungen für die Ausführung von Python-Code für ein bestimmtes Data-Science-Projekt, dass es für junge Data Scientist sehr überwältigend sein kann, den richtigen Code zu finden. Aus all diesen Gründen und vielen mehr haben wir eine Erweiterung für Jupyter-Umgebungen entwickelt – die Snippet Library – die Code-Schnipsel speichert, die man immer dann verwenden kann, wenn man sie braucht, und grundlegende Code-Schnipsel für ein typisches Data-Science-Projekt bereitstellt.

Warum unterstützt die Snippet Library Data Scientist?

Die Idee der Snippet Library ist es, ein Werkzeug für schnelles Prototyping zu schaffen, mit dem Ziel, Datenanalyse-Workflows effizient und einfach zu entwickeln. Dabei sollen die Vorteile von grafischen Werkzeugen wie KNIME oder Rapid Miner und Programmiersprachen wie Python kombiniert werden. Die Snippet-Bibliothek ist eine Menüerweiterung für Jupyter Notebook. Sie fügt ein anpassbares Menü hinzu, um Code-Schnipsel, Code-Beispiele und Boilerplate-Code in Notebooks einzufügen.

So enthält das Dropdown-Menü der Erweiterung mehrere Codeschnipsel zur direkten Verwendung in einem Notizbuch. Schließlich kann der Data Scientist sehr schnell grundlegende Codes für viele Probleme erhalten, wie zum Beispiel: Wie lese ich eine csv-Datei? Wie visualisiere ich fehlende Werte in einem Pandas-Datenframe? Wie stelle ich die Korrelationsmatrix meines Pandas-Datenrahmens dar (und lasse sie gut aussehen)? Für alles gibt es ein Snippet.

Wie man die Snippet-Bibliothek zum Laufen bringt

Um loszulegen und die Erweiterung zu nutzen, müssen zunächst die Snippet Library installiert werden. Installiere die Bibliothek einfach über pip:

  • pip install snippetlib

Wenn Sie die Snippet-Bibliothek auf Jupyter Lab ausprobieren möchten, müssen Sie Folgendes eingeben:

  • pip install snippetlib_jl

Manchmal lässt sich die Jupyter Lab-Erweiterung nicht einwandfrei über pip installieren. Um eine sichere Installation zu gewährleisten, sollten Sie versuchen, sie aus dem Github Repo zu installieren.

Verwendung bereits vorhandener Coding-Snippets: Das Menü bietet mehrere Snippets, die nach typischen Aufgabengruppen für die Erkundung und Visualisierung von Daten geordnet sind:

  • Daten: einschließlich Snippets zum Lesen, Schreiben und Transformieren von Daten.
  • Modellierung: enthält Code-Snippets für das Training von Modellen für maschinelles Lernen, die größtenteils auf sklearn basieren. Zu den Codebeispielen gehören Klassifizierungs-, Regressions- und Clustering-Aufgaben.
  • Plotten: enthält Snippets zum Plotten von Daten mit Matplotlib, Bokeh und Pandas.
  • Utils: enthält Snippets, die nützlich sind, aber nicht in den oben genannten Kategorien erwähnt werden, wie z. B. die Erstellung eines Flask-Servers, einer interaktiven Tabelle und vieles mehr.
© ML2R
Ein Beispiel für die Verwendung der Snippet-Bibliothek in der Menüleiste von Jupyter Notebook.

Hinzufügen von angepassten Snippets zur Bibliothek: Die Snippet-Erweiterung ermöglicht es Benutzern, der Bibliothek eigene Snippets hinzuzufügen. Es gibt zwei Möglichkeiten:
Die Snippets können einerseits aus lesbaren Dateien hochzuladen hochgeladen werden. Um ein neues Snippet in das Jupyter-Notebook hochzuladen, muss der folgende Python-Befehl in das Jupyter-Notebook eingegeben werden.

  • *from snippetlib import upload_snippet as us*
  • *upload_snippets = us.Upload_Snippet()*

Nachdem die Seite einmal aktualisiert wurde, sollte das neu hinzugefügte Snippet im Snippet-Menü zusehen sein. Andererseits kann das Code-Snippet aus der Zelle kopiert und direkt in der Snippet-Bibliothek gespeichert werden.

Neue Snippets erstellen: Um neue Snippets im Jupyter Notebook zu erstellen, sollte folgender Befehl im Jupyter Notebook verwendet werden:

  • *from snippetlib import paste_snippet as ps*
  • *paste_snippets = ps.Paste_Snippet()*

Auch hier gilt: Nachdem die Seite einmal aktualisiert wurde, sollte das neu hinzugefügte Snippet im Snippet-Menü zusehen sein.

© ML2R
Ein Beispiel für die Verwendung der Snippet-Bibliothek des Jupyter Notebooks.

Jetzt liegt es an Dir: Teste die library aus und versuche Dir damit einige Arbeitsschritte zu vereinfachen. Die Snippet-Bibliothek bringt Data Scientist die Möglichkeit zum schnellen Prototyping, während man schnell und einfach Datenanalyse-Workflows entwickelt. Mit der Option, Snippets mit der Extension einzufügen, kann man sich bei Projekten auf die wichtigeren Aufgaben konzentrieren und muss sich weniger Gedanken über die Neuimplementierung von altem Code machen.

Autor*in

Hammam
Abdelwaha

Hammam Abdelwahab ist Forschungsstudent am Fraunhofer IAIS in Sankt Augustin im Bereich Machine Learning Operations (MLOps). Sein Forschungsgebiet ist die Erkennung von Anomalien, Unsicherheit und Drift-Analyse. Er hat Spaß daran, nützliche Softwarepakete zu entwickeln, die Entwickler bei der Programmierung unterstützen.