Abo
  • IT-Karriere:

Machine-Learning-Pakete für Python

Die Installation von Paketen erfolgt mit dem Python-Packet-Installation-Tool pip, das bei Python schon dabei ist. Alternativ kann die Installation mit dem Anaconda Navigator, einem Tool mit grafischer Oberfläche, erfolgen. Anaconda und die wichtigsten davon unterstützen integrierten Entwicklungsumgebungen (IDEs) werden später im Artikel vorgestellt.

Pandas - das Standardpaket für Datenverwaltung

Stellenmarkt
  1. HIS Hochschul-Informations-System eG, Hannover
  2. KVV Kassel, Kassel

Pandas ist eigentlich kein Machine-Learning-Paket, sondern ein Paket für Datenhaltung und Datenverarbeitung. Es enthält mächtige Datencontainer und Methoden, um auf Daten zuzugreifen und sie performant zu verarbeiten. Zu den wichtigsten Datencontainern bei Pandas zählt der Data Frame, den wir schon bei R kennengelernt haben, wobei der Data Frame bei Pandas nicht identisch mit dem in R, sondern im Großen und Ganzen funktional mit ihm vergleichbar ist. Bei fast allen Data-Science- beziehungsweise Machine-Learning-Projekten wird man Pandas verwenden. Eine umfangreiche Dokumentation gibt es auf der Pandas-Webseite.

Pandas kann mit pip mit diesem Einzeiler installiert werden:

pip install pandas

Scikit-learn - das Allrounder-Paket für Machine Learning

Scikit-learn ist das wohl bekannteste und beliebteste Paket für Machine Learning für Python und für Anfänger oft ein hervorragender Einstieg. Es verfügt über eine große Anzahl von Algorithmen von klassischer Statistik bis zu Machine Learning, darunter auch beliebte Algorithmen wie Random Forest und Neural Networks. Scikit-learn ist exzellent geeignet, um unterschiedlichste Machine-Learning-Algorithmen auszuprobieren. Seine Schwäche ist jedoch, dass GPUs nicht unterstützt werden, das heißt, bei großen Datenmengen und anspruchsvollen Algorithmen wie Multi-Layer Neural Networks (Deep Learning) sollte man sich andere Pakete ansehen.

Scikit-learn kann mit pip mit folgendem Befehl installiert werden:

pip install scikit-learn

Keras mit Tensorflow, CNTK und Theano

Google Tensorflow, Microsoft CNTK und Theano sind mächtige Deep Learning (Multi-Layer Neural Networks) Frameworks, die auch GPUs unterstützen, was bei diesen Deep-Learning-Algorithmen die Performance im Vergleich zu der CPU um ein Vielfaches steigern kann. Leider unterstützen sie nur CUDA-kompatible GPUs von NVidia. OpenCL (AMD, Intel) wird aktuell noch nicht oder nur sehr eingeschränkt über experimentelle Versionen unterstützt. Wer GPUs sinnvoll mit diesen Frameworks nutzen will, ist aktuell auf NVidia GPUs angewiesen. Dies gilt auch für viele andere Deep-Learning-Frameworks: Ein Support von OpenCL ist oft gar nicht oder nur sehr eingeschränkt vorhanden. Zu den drei Frameworks:

  • Theano scheint in jüngster Zeit an Wichtigkeit zu verlieren, jedoch ist es historisch von Bedeutung.
  • Google Tensorflow ist aktuell wohl am bekanntesten und wird kontinuierlich weiterentwickelt.
  • Microsoft CNTK ist ein Herausforderer von Google Tensorflow. CNTK ist zwar bislang weniger bekannt, hat aber den Anspruch, eine höhere Ausführungsgeschwindigkeit erreichen zu können.

Wer sich auf keins der drei Frameworks festlegen will, kann Keras nutzen. Keras ist eine High-Level-API, die im Backend Theano, CNTK und Tensorflow verwenden kann. Mit einer einfachen Umschaltung mittels einer Konfigurationsdatei kann zwischen den drei Backend-Frameworks umgeschaltet werden, ohne am mit Keras entwickelten Quellcode etwas ändern zu müssen. Dies bedeutet aber nicht, dass nichts geändert werden darf, denn die Backend-Frameworks arbeiten nicht genau gleich, sodass das Design und die Parametrisierung des in Keras entwickelten neuronalen Netzes gegebenenfalls mit Erfahrung und Ausprobieren für das jeweilige Backend etwas angepasst werden sollte.

Wichtigste Vorteile von Keras im Vergleich zum Programmmieren direkt mit den Backend-Frameworks sind:

  • Der Quellcode ist mit relativ geringen Anpassungen bei einem Austausch des Backend-Frameworks weitgehend wiederverwendbar.
  • Keras ist relativ simpel, die Programmierung ist einfacher als mit den Backend-Frameworks.

Wichtigste Nachteile von Keras im Vergleich zum Programmmieren direkt mit den Backend-Frameworks sind:

  • Keras unterstützt nicht alle speziellen Features der jeweiligen Backend-Frameworks oder ist zeitlich bei Updates der Backend-Frameworks etwas hinterher.
  • Es gibt einen gewissen Geschwindigkeitsverlust, weil Keras eine zusätzliche Schicht bildet.

Die Installation von Keras, Theano, Tensorflow und CNTK erfordert unter anderem die Installation von CUDA-Treibern und weiterer Pakete, insbesondere wenn GPUs eingesetzt werden sollen, was hier Sinn macht.

Eine Erleichterung stellt Anaconda dar, die das Paketmanagement und die Installation von integrierten Entwicklungsumgebungen vereinfacht. Mehr dazu später in diesem Artikel.

Seaborn - Menschen denken visuell

Oft sollen statistische Zusammenhänge auch visuell dargestellt werden. Dazu gibt es bei Python viele Pakete, von denen Seaborn zu den beliebtesten zählt. Seaborn ist eine komfortable High-Level-API, die im Backend mit Matplotlib arbeitet.

Mit Seaborn können Nutzer eine Vielzahl von Diagrammarten erstellen und auch ein visuell anspruchsvolles Publikum zufriedenstellen. Als Datenquelle für Seaborn kommt oft der Data Frame von Pandas zum Einsatz. Hier zeigt sich die Stärke von Python: Man setzt viele Pakete ein, und das Zusammenspiel bildet Synergievorteile.

Die Installation von Seaborn mit pip ist simpel:

pip install seaborn

Statt pip in der Kommandozeile aufzurufen, kann die Installation von Paketen und Frameworks auch mittels einer grafischen Entwicklungsumgebung erfolgen.

Integrierte Entwicklungsumgebungen (IDEs)

Auch mit einem Texteditor wie Notepad unter Windows oder Vi unter Linux lassen sich Python- und R-Programme entwickeln und mit der Kommandozeile deren Ausführung starten. Doch die meisten Programmierer werden wohl komfortable, integrierte Entwicklungsumgebungen (IDEs) präferieren, weil sie viele Vorteile bieten, etwa Syntax Highlighting (visuelles Hervorheben von Befehlen), Code Completion (automatisches Vervollständigen von Befehlen), elegante Debugging-Möglichkeiten, Variableneditoren und Paketmanagement.

Prinzipiell ließe sich mit jeder IDE, die in der klassischen Anwendungsentwicklung eingesetzt wird und Python beziehungsweise R unterstützt, auch bei Data-Science-Projekten arbeiten. Auch Eclipse konfiguriert für Python beziehungsweise R, Visual Studio IDE wäre also verwendbar. Viele Data Scientists nutzen jedoch lieber andere IDEs, die für Data-Science-Projekte besser geeignet sind und im Folgenden vorgestellt werden.

Die Unterschiede zwischen IDEs für klassische Anwendungsentwicklung und Data Science liegen hauptsächlich daran, dass bei klassischer Anwendungsentwicklung der Fokus auf dem Quellcode liegt (zum Beispiel Refactoring-Funktionalitäten, Visualisierung der Programmstruktur mit beispielsweise Klassendiagrammen, Code-Metrics-Berechnungen und Ähnliches) während bei Data-Science-Projekten der Augenmerk auf den Daten liegt (zum Beispiel Variablen- und Data-Frame-Editoren, Visualisierung von Daten und Dokumentation der Zwischenergebnisse, anfängliche Zeitersparnis wegen einiger oft verwendeter Machine-Learning-Pakete, die in der IDE schon vorinstalliert und vorkonfiguriert sind).

Im Falle von R gibt es de facto einen Marktstandard: RStudio. Die meisten Statistiker verwenden diese IDE, die es sowohl als kostenlose wie auch als kostenpflichtige Versionen für Linux, MacOS und Windows gibt.

Eine eher selten verwendete Alternative unter Windows ist Visual Studio IDE, das seit Version 2015 auch R unterstützt. Für Windows und MacOS existieren unterschiedliche Versionen. Des Weiteren gibt es auch eine kompakte und leichtgewichtige Version namens Visual Studio Code, die zudem auch für Linux verfügbar ist und mit installierbaren Erweiterungen ebenfalls R unterstützt.

Bei Python gibt es nicht die eine dominierende IDE. Je nach Vorliebe und Einsatzzweck haben sich mehrere IDEs etabliert. Auch hier gibt es Visual Studio IDE und Visual Studio Code, die aber unter Data Scientists eher seltener Einsatz finden. Visual Studio IDE bietet sich eher für die Entwicklung von Anwendungen und Visual Studio Code für das Skripten mit Python an.

Eine andere Alternative für die Anwendungsentwicklung mit Python ist PyCharm von Jetbrains, verfügbar für Linux, MacOS und Windows. Auch diese IDE ist bei Data Scientists eher selten in Einsatz.

Data Scientists verwenden viel lieber die IDE Jupyter Notebook. Diese IDE läuft im Browser, und man kann sie sich als interaktives Notiz- oder Forschungsheft vorstellen. In diesem kann man sowohl Beschreibungen und Kommentare mit einer sehr einfachen Formatierungssprache verfassen als auch Python-Quellcode schreiben, ausführen und die Ergebnisse im Heft persistent halten. Der große Nutzen für Data Scientists ist, dass sie sowohl den Weg, die Ergebnisse zu bekommen, nämlich die Formeln und den Quellcode, als auch die Ergebnisse selbst in Form von Beschreibungen, Ergebnistabellen, statistischen Werten und Diagrammen in einem sequenziellen Heft aufbewahren und ihren Kunden präsentieren können. Zudem sind die Ergebnisse so replizierbar, und bei Bedarf kann man einige Parameter im Python-Quellcode verändern und ausprobieren, ob man dadurch neue Erkenntnisse über die Daten bekommt beziehungsweise das Machine-Learning-Modell besser arbeitet.

Beispiele von Jupyter Noteboks bei Machine-Learning-Projekten werden auf Github gezeigt.

Will man jedoch nicht statistische Ergebnisse und Diagramme als Forschungsbericht präsentieren, sondern eine Machine-Learning-Anwendung entwickeln, dann ist oft Spyder (Scientific Python Development Environment) eine interessante IDE. Spyder zählt zu den beliebtesten Python-Entwicklungsumgebungen für Wissenschaftler. Sie ist relativ einfach, nicht überladen und verfügt über die wichtigsten Features wie einen komfortablen Debugger und einen Variablenmonitor.

Muss man sich unbedingt für eine bestimmte IDE entscheiden? Wenn man mehrere IDEs verwenden will, muss man jede einzeln installieren und sich um Updates kümmern? Muss man unterschiedliche Python-Versionen für unterschiedliche Projekte installieren und konfigurieren? Die Lösung all dieser Probleme ist der Anaconda Navigator.

Anaconda Navigator bietet die Installation von Jupyter Notebook, Spyder, Visual Studio Code, RStudio und einigen anderen IDEs an; und zwar alles unter einer Haube samt grafischer Benutzeroberfläche. Zudem enthält der Anaconda Navigator einen benutzerfreundlichen Paketmanager für Python, mit dem man Pakete suchen, installieren und updaten kann. Auch das Updaten der IDEs selbst wird angeboten. Zudem bietet der Anaconda Navigator die Konfiguration mehrerer Environments an. Das sind unterschiedliche Umgebungen, unter denen der Python- oder R-Code laufen soll.

Man stelle sich zum Beispiel vor, dass man eine bestimmte Umgebung mit Tensorflow und einer bestimmten Python-Version benötigt, weil vielleicht die aktuelle Version von Tensorflow nicht mit jeder Python-Version läuft; dagegen braucht man vielleicht für CNTK eine andere Python-Version oder man möchte unterschiedliche Cuda-Versionen ausprobieren. Statt Anaconda Navigator mehrmals zu installieren, installiert man ihn nur einmal und erstellt unter ihm mehrere Environments.

 Programmiersprachen, Pakete, IDEs: So steigen Entwickler in Machine Learning einEin kleines Programmierbeispiel 
  1.  
  2. 1
  3. 2
  4. 3
  5.  


Anzeige
Top-Angebote
  1. 79,00€
  2. 999,00€ + Versand
  3. (u. a. GTA 5 12,49€, GTA Online Cash Card 1,79€)
  4. (aktuell u. a. Dell-Notebook 519€, Dell USB-DVD-Brenner 34,99€)

Frankenwein 22. Nov 2018

Das klingt interessant. Du gibst historische stündliche Daten zu Umgebungsvariablen und...

henryanki 15. Nov 2018

Schleifen sind auch ein "Anti-Pattern" in R. Für fast alle "iterativen" Prozesse sollte...

0110101111010001 13. Nov 2018

Tensorflow am verbreitetsten, CNTK am schnellsten. PyTorch am Facebookgsten...

Bruto 13. Nov 2018

Psst, das ist zu symbolisch für die NNler ;) Oder es hat einfach zu viele Klammern.

Frankenwein 13. Nov 2018

Super, danke für den Hinweis. Es gibt so viel Bewegung auf dem Gebiet, da ist es schwer...


Folgen Sie uns
       


Qualcomm Snapdragon 8cx ausprobiert

Der Snapdragon 8cx ist Qualcomms nächster Chip für Notebooks mit Windows 10 von ARM. Die ersten Performance-Messungen sehen das SoC auf dem Niveau eines aktuellen Quadcore-Ultrabook-Prozessors von Intel.

Qualcomm Snapdragon 8cx ausprobiert Video aufrufen
In eigener Sache: Golem.de bietet Seminar zu TLS an
In eigener Sache
Golem.de bietet Seminar zu TLS an

Der Verschlüsselungsexperte und Golem.de-Redakteur Hanno Böck gibt einen Workshop zum wichtigsten Verschlüsselungsprotokoll im Netz. Am 24. und 25. September klärt er Admins, Pentester und IT-Sicherheitsexperten in Berlin über Funktionsweisen und Gefahren von TLS auf.

  1. In eigener Sache Zweiter Termin für Kubernetes-Seminar
  2. Leserumfrage Wie können wir dich unterstützen?
  3. In eigener Sache Was du schon immer über Kubernetes wissen wolltest

Ryzen 3900X/3700X im Test: AMDs 7-nm-CPUs lassen Intel hinter sich
Ryzen 3900X/3700X im Test
AMDs 7-nm-CPUs lassen Intel hinter sich

Das beste Prozessor-Design seit dem Athlon 64: Mit den Ryzen 3000 alias Matisse bringt AMD sehr leistungsstarke und Energie-effiziente CPUs zu niedrigen Preisen in den Handel. Obendrein laufen die auch auf zwei Jahre alten sowie günstigen Platinen mit schnellem DDR4-Speicher.
Ein Test von Marc Sauter

  1. Ryzen 3000 BIOS-Updates schalten PCIe Gen4 für ältere Boards frei
  2. Mehr Performance Windows 10 v1903 hat besseren Ryzen-Scheduler
  3. Picasso für Sockel AM4 AMD verlötet Ryzen 3400G für flottere iGPU

Dr. Mario World im Test: Spielspaß für Privatpatienten
Dr. Mario World im Test
Spielspaß für Privatpatienten

Schlimm süchtig machendes Gameplay, zuckersüße Grafik im typischen Nintendo-Stil und wunderbare Dudelmusik: Der Kampf von Dr. Mario World gegen böse Viren ist ein Mobile Game vom Feinsten - allerdings nur für Spieler mit gesunden Nerven oder tiefen Taschen.
Von Peter Steinlechner

  1. Mobile-Games-Auslese Ein Wunderjunge und dreimal kostenloser Mobilspaß
  2. Mobile-Games-Auslese Magischer Dieb trifft mogelnden Doktor
  3. Hyper Casual Games 30 Sekunden spielen, 30 Sekunden Werbung

    •  /