Die meisten großen Machine Learning Bibliotheken, insbesondere im Bereich Deep Learning sind in Python geschrieben. Wir stellen hier die wichtigsten vor.
Mit der Zeit hat sich um diese Bibliotheken und ihre Anwendungen eine Community aus Programmierer/innen gebildet, die deren Weiterentwicklung vorantreibt. Dies gilt vor allem für die beiden größten Bibliotheken im Bereich Deep Learning: Tensor Flow und PyTorch.
Nachfolgend stellen wir die aus unserer Sicht zehn wichtigsten Machine Learning Bibliotheken in Python vor. Wir fangen mit den Bibliotheken an, die für die Datentransformation und -bearbeitung unabdingbar sind und gehen weiter auf die "komplexeren" Bibliotheken ein, mit denen Machine Learning Algorithmen erstellt und validiert werden.
Alle der genannten Bibliotheken (mit der Ausnahme von Plotly) sind Open Source. Aber auch Plotly verfügt dabei über eine groß angelegte Open Source Version.
NumPy (Numerical Python)
NumPy (https://numpy.org/) ist eine wissenschaftliche Bibliothek, die mathematische (numerische) Operationen in Python erleichtert.
Mit NumPy lassen sich multidimensionale Daten einfach bearbeiten. Die Bibliothek kommt oft im Vorfeld klassischer Datenanalysen und des Einsatzes von Machine Learning Algorithmen zur Anwendung.
Im Bereich Data Science und Machine Learning wird oft mit Datenmatrizen gearbeitet, die sehr viele Zahlenreihen umfassen können. Für solche Operationen ist NumPy oft unabdingbar. Mit NumPy lassen sich große Datenmatrizen auf verschiedene Art und Weise transformieren. Für Deep Learning werden beispielsweise NumPy Bilddaten bearbeitet, die als Matrizen ("color channels") gespeichert sind.
Pandas
NumPy ist zwar hilfreich um die grundlegenden Datenoperationen durchzuführen; einen besseren Überblick über unsere Daten ermöglicht uns jedoch eine weitere Bibliothek in Python: pandas (https://pandas.pydata.org/).
Mit Hilfe von pandas können die Daten in sogenannte DataFrames transferiert und/oder umgewandelt werden. Vom Prinzip können verschiedene Datenformate wie JSON, CSV, Excel und vieles mehr in DataFrames umgewandelt werden. Das ist sehr hilfreich, denn in DataFrames können unsere Daten als strukturierte Tabellen (ähnlich wie in Excel) dargestellt werden. Dies ist besonders wichtig für Daten, die zuvor etwa als unstrukturierter Text gespeichert worden sind.
Mit pandas können solche Tabellen weiter umgestaltet werden. Die Daten können je nach Bedürfnis gefiltert und zusammengefasst werden. Wir können neue Variablen hinzufügen oder mehrere Variablen zu einer neuen (z.B. Mittelwert) zusammenfassen. Ähnliches gilt für die Tabellen (DataFrames) selbst. Sie können auch zusammengefasst bzw. geteilt werden.
Mit pandas lassen sich Daten auch grafisch darstellen - etwa als sogenannte scatter plots (Streudiagramme). Meistens werden aber für komplexere Darstellungen der Daten andere Bibliotheken genutzt.
Im Kontext von Machine Learning erlaubt uns pandas die vorhandenen Daten so zu bearbeiten, dass sie in weiteren Schritten in die Machine Learning Algorithmen eingespeist werden können.
Scikit-learn
Scikit-learn ( https://scikit-learn.org/stable/#) ist sicherlich die größte Bibliothek für Machine Learning in Python. Sie ermöglicht Anwendungen sowohl im Bereich Supervised als auch Unsupervised Learning. Scikit-learn verfügt über sehr viele Algorithmen in beiden Bereichen und ist zudem recht einfach in Bedienung.
Scikit-learn unterstützt unter anderem folgende bekannte Algorithmen für Supervised Learning: Regression, Decision Trees, Naive Bayes, Random Forest, Support Vector Machines und vieles mehr.
Im Bereich Unsupervised Learning werden von scikit-learn unter anderem folgende Algorithmen unterstützt: Dimensionality Reduction, PCA oder auch Clustering.
Keras und TensorFlow
Beide Bibliotheken sind spezifisch für das Trainieren von neuronalen Netzen und somit Anwendungen im Bereich Deep Learning.
Keras (https://keras.io/) ist vom Prinzip eine eigenständige Bibliothek. Der Vorteil von Keras ist ihre (im Vergleich zu den anderen Deep Learning Bibliotheken) einfache Handhabung. Aus diesem Grund dient sie auch als Interface für die komplexere TensorFlow Bibliothek (https://www.tensorflow.org/). Beide Bibliotheken wurden innerhalb des Google Universums entwickelt. Keras baute Google Software Entwickler Francois Chollet auf. TensorFlow wurde vom Google Brain Team zunächst nur für Google und später als Open Source entwickelt.
Viele Data Scientists beginnen ihre Arbeit mit neuronalen Netzen mit der simpleren Bibliothek Keras an. Früher oder später muss man hier aber trotzdem auf die komplexere TensorFlow umsteigen, denn bestimmte Änderungen und Einstellungen sind im Vergleich zu Keras nur über TensorFlow möglich.
TensorFlow ist (neben PyTorch) die populärste Bibliothek für das Trainieren von neuronalen Netzen und Deep Learning-Anwendungen. Sie hat einen zeitlichen Vorsprung zu PyTorch und wird deswegen sie öfters von Unternehmen, insbesondere im industriellen Bereich angewendet.
Der Nachteil von TensorFlow ist ihre Komplexität in der Anwendung. Aus diesem Grund bevorzugen viele Data Scientists inzwischen PyTorch als eine Alternative zu TensorFlow.
PyTorch
PyTorch (https://pytorch.org/) ist eine Alternative zu TensorFlow für den Aufbau von neuronalen Netzen. Die Bibliothek wurde von Facebook entwickelt und ist in ihrer derzeitigen Form einige Jahre jünger als TensorFlow. Der Vorteil von PyTorch ist vor allem, dass PyTorch deutlich näher an Python als Programmiersprache gebaut worden ist. Die Deep Learning Skripte, die wir in PyTorch programmieren, sind somit viel mehr "pythonic" in der Anwendung und erleichtern daher die Arbeit für Pythonprogrammier/innen.
Der Einstieg in PyTorch gestaltet sich allerdings schwerer als in TensorFlow, denn PyTorch (im Gegensatz zu TensorFlow) verfügt über kein Interface wie Keras. Allerdings wird dieser Nachteil mit der Zeit aufgeholt, denn komplexere Anwendungen lassen sich nicht über Keras programmieren und früher oder später ist daher ein Umstieg auf das sperrigere TensorFlow notwendig. So ein Umstieg ist in PyTorch nicht nötig.
Derzeit arbeiten viele Firmen aufgrund von "early adopter"-Vorteilen oft noch mit TensorFlow - allerdings ist PyTorch stark im Aufstieg und könnte langfristig TensorFlow überholen: "Ihre Alternative zu TensorFlow?" (https://www.computerwoche.de/a/ihre-alternative-zu-tensorflow,3548465).
NLTK (Natural Language Toolkit)
NLTK (https://www.nltk.org/ ) ist eine weitere wichtige Bibliothek in Python, die für das Natural Language Processing (linguistische Datenverarbeitung) zuständig ist. Sie gehört zu den Bibliotheken, die Daten prozessieren.
NLTK prozessiert die natürliche Sprache in vielen ihrer Varianten so, dass die Sprache als Text durch numerische Werte abgebildet wird und somit in Machine Learning Algorithmen eingespeist werden kann.
Da die Bearbeitung natürlicher Sprache an Bedeutung gewinnt, wird auch NLTK als Bibliothek weiterhin ihre Relevanz im Machine Learning Universum behalten.
Visualisierungstools: Matplotlib, Seaborn und Plotly
Zusätzlich zu den klassischen Machine Learning Bibliotheken sind auch Visualisierungsbibliotheken für die Datenarbeit unabdingbar. Hier hat Python auch einiges zu bieten.
Matplotlib
Matplotlib ( https://matplotlib.org/) ist eine der populärsten Bibliotheken für die grafische Darstellung von Daten in Python. Sie ist sehr flexibel. Mit Hilfe von Matplotlib lassen sich sehr vielfältige Visualisierungen erstellen. Dies kann aber auch zum Nachteil werden, denn um diese Visualisierungen zu erstellen, benötigt Matplotlib ziemlich viel Code. Dies macht die Arbeit mit dieser Bibliothek nicht unbedingt einfach.
Seaborn
Als eine weitere Visualisierungsbibliothek in Python findet seaborn (https://seaborn.pydata.org/#) eine breite Anwendung. Seaborn Grafiken verwenden schönere Farben als die in Matplotlib und sind etwas leichter (mit weniger Code) zu erstellen.
Plotly/Dash
Eine der besten und modernsten Visualisierungsbibliotheken in Python ist sicherlich Plotly (https://plotly.com/python/). Plotly basiert zudem auf HTML und JavaScript und erlaubt uns deswegen auch interaktive Grafiken zu erstellen. Für eine fortgeschrittene Nutzung sind deswegen Kenntnisse in diesen Programmiersprachen von Vorteil (aber kein Muss).
Plotly ist Open Source. Allerdings wird die Bibliothek von einer Firma betrieben, die auch eine kostenpflichtige Version und weitere Anwendungen anbietet (Dash Enterprise und Chart Studio).
Zusammenfassung
Die oben genannten Bibliotheken sind die Grundlagen, die zum Erstellen von Machine Learning Algorithmen in Python unabdingbar sind.
· Für die Datenbearbeitung sind je nach Anwendung NumPy, pandas und/oder NLTK notwendig.
· Für die klassischen Machine Learning Algorithmen in Supervised und Unsupervised Learning kommt sckit-learn zur Anwendung.
· Für die Arbeit mit neuronalen Netzen bieten sich sowohl PyTorch als auch TensorFlow an.
· Für die grafische Darstellung der Daten gibt es unter anderem Matplotlib, seaborn oder Plotly.
Je nach Zielsetzung gibt es allerdings weitere Bibliotheken im Python Universum, die uns beispielsweise klassische statistische Analysen ermöglichen (SciPy) oder das Arbeiten mit Big Data Anwendungen (PySpark).
Keywords: wichtigste Machine Learning Bibliotheken in Python, Python Bibliotheken Übersicht, TensorFlow, PyTorch, DeepLearning Bibliotheken in Python, Top Machine Learning Bibliotheken in Python
