Blog

ML Summit
Das große Trainingsevent für Machine Learning & Data Science
29
Mrz

Die Top-5-Python-Bibliotheken für Machine Learning

Python ist die beliebteste Programmiersprache, wenn es um das Erstellen eines Machine-Learning-Projekts geht. Warum eigentlich? Nun, zunächst einmal sind die Algorithmen so komplex, dass man sich nicht noch zusätzlich um technische Details kümmern, sondern sich ganz auf die Logik konzentrieren möchte. Python hilft dabei, dank der einfachen Syntax, der hohen Entwicklungsgeschwindigkeit und der großen Flexibilität. Aber es gibt noch einen anderen Grund für die Beliebtheit von Python in dieser Domäne: die stetig wachsende Anzahl an Data-Science-Bibliotheken. Hier sind ein paar der populärsten Python-Bibliotheken, die in der Welt des Machine Learning zum Einsatz kommen.

Python ist die beliebteste Programmiersprache, wenn es um das Erstellen eines Machine-Learning-Projekts geht. Warum eigentlich? Nun, zunächst einmal sind die Algorithmen so komplex, dass man sich nicht noch zusätzlich um technische Details kümmern, sondern sich ganz auf die Logik konzentrieren möchte. Python hilft dabei, dank der einfachen Syntax, der hohen Entwicklungsgeschwindigkeit und der großen Flexibilität. Aber es gibt noch einen anderen Grund für die Beliebtheit von Python in dieser Domäne: die stetig wachsende Anzahl an Data-Science-Bibliotheken. Hier sind ein paar der populärsten Python-Bibliotheken, die in der Welt des Machine Learning zum Einsatz kommen.

20_22_Infografik_NumPy.png

NumPy

NumPy ist eine essenzielle Bibliothek für Machine-Learning-Algorithmen, da sie mit komplexen multidimensionalen Arrays sowie Matrizen arbeiten und höhere mathematische Funktionen auf sie anwenden kann. Zudem kann NumPy praktisch jedwede Art von Daten verarbeiten, sodass sich die Bibliothek recht einfach in eine Vielzahl von Datenbasen integrieren lässt. NumPy ist Teil des SciPy-Projekts und basiert auf Numeric und Numarray, zwei Bibliotheken, die nun nicht mehr verwendet werden. Das Beispiel zeigt die Manipulation eines Iris-Datensets mit NumPy.

import numpy as np
from sklearn.datasets import load_iris
 
iris = load_iris()
iris_array = np.array(iris.data)
 
iris_array.shape
# Output:
# (150, 4)
 
# Umgestaltung unter Verwendung der # ursprünglichen Größe
iris_reshaped = iris_array.reshape((100,6))
iris_reshaped.shape
# Output:
# (100, 6)
 
# Anpassung der Größe und der Form.
iris_array.resize((100, 4))
iris_array.shape
# Output:
# (100, 4)
 
# eindimensionale Ausgabe einer Kopie des Arrays
iris_array.flatten()
 
# Ausgabe des Durchschnittswerts entlang einer # gegebenen Achse
# 0 oder 1 im Fall eines zweidimensionalen Arrays
iris_array.mean(axis=0)
 
# Streuung
iris_array.var(axis=0)
 
# Standardabweichung
iris_array.std(axis=0)
 
# Summe und kumulative Summe
iris_array.sum(axis=0)
iris_array.cumsum(axis=0)
 
# Produkt und kumulatives Produkt
iris_array.prod(axis=0)
iris_array.cumprod(axis=0)
20_22_Infografik_Matplotlib.png

Matplotlib

Matplotlib, eine großartige Bibliothek für die Datenvisualisierung, macht die Funktionalität von MATLAB für Python verfügbar. Sogar das bekannte Interface kann mit dem Modul Pyplot verwendet werden. Mit dieser Bibliothekt können Nutzer graphische Darstellungen, Histogramme und Balkendiagramme generieren. Das geht zuweilen mit wenigen Codezeilen, da der Fokus von Matplotlib auf der Nutzerfreundlichkeit liegt. Das Beispiel zeigt eine dreidimensionale Punktwolke, die mit Matplotlib erstellt wird.

import random
from matplotlib import pyplot
from mpl_toolkits.mplot3d import Axes3D
 
figure = pyplot.figure()
axes = Axes3D(figure)
X = list(range(0, 500))
Y = list(range(0, 500))
Z = list(range(0, 500))
 
random.shuffle(X)
random.shuffle(Y)
random.shuffle(Z)
 
axes.scatter(X, Y, Z)
pyplot.show()
20_22_Infografik_pandas.png

pandas

Die Bibliothek pandas wird im Bereich Machine Learning für die Datenmanipulation und –analyse verwendet. Die wichtigsten Features sind die Tools für die Datenausrichtung, die Handhabung fehlender Daten, das Umgestalten, Verschmelzen und Verbinden von Datensets sowie das Slicing je nach Label. Der Name kommt von „Panel Data“, einem Begriff für Datensets, die zu einem Thema mehrfache Betrachtungen enthalten. Um eine möglichst hohe Performanz zu gewährleisten, sind die essentiellen Teile von pandas in Cython oder C geschrieben. Das Beispiel zeigt die Datenmanipulation mit pandas und dem Iris-Datenset.

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
 
iris = load_iris()
# DataFrames sind zweidimensionale Datenstrukturen # mit gelabelten Spalten.
iris_dataframe = pd.DataFrame(
  iris.data, columns = iris.feature_names)
""" DataFrame-Attribute """
# Rückgabe der dtypes im DataFrame
iris_dataframe.dtypes
# Output: 
# sepal length (cm)    float64
# sepal width (cm)     float64
# petal length (cm)    float64
# petal width (cm)     float64
# dtype: object
 
iris_dataframe.shape
# Output:
# (150, 4)
 
iris_dataframe.size
# Output:
# 600
 
""" DataFrame-Methoden """
# Anwendung einer Funktion auf alle/eine spezifische Achse
iris_dataframe.apply(sum)
 
# Output:
# sepal length (cm)    876.5
# sepal width (cm)     458.6
# petal length (cm)    563.7
# petal width (cm)     179.9
# dtype: float64
 
# Hinzufügen einer neuen Spalte
iris_dataframe.assign(
  new_column_label=np.random.uniform(
    low=0, high=10, size=150))
 
# Konvertierung in einen anderen Typ
iris_dataframe.astype(int)
 
# Statistiken zu Tendenzen, Verbreitungen und Form der Verteilung
iris_dataframe.describe()
 
iris_dataframe.drop_duplicates()
 
# Auffüllen fehlender Items
iris_dataframe.fillna(1)
# Auffüllen via method='ffill'
iris_dataframe.ffill()
 
# Arsetzen der Werte, die eine # gewisse Voraussetzung erfüllen
def some_condition(value):
  return value > 5
iris_dataframe.mask(some_condition)
20_22_Infografik_Keras.png

Keras

Keras ist eine Deep-Learning-Bibliothek, die von Netflix, Uber, Square, Yelp und vielen anderen verwendet wird. Sie kommt aber auch bei großen wissenschaftlichen Organisationen wie der NASA und CERN zum Einsatz. Beliebt und verbreitet ist diese Bibliothek vor allem wegen ihrer Nutzerfreundlichkeit, der Modularität und der Erweiterbarkeit. Dank dieser Eigenschaften eignet sich Keras perfekt für das Prototyping und Experimentieren mit tiefen neuronalen Netwerken (Deep Neural Networks). Keras unterstützt sowohl Convolutional Neural Networks (CNN) als auch rekurrente neuronale Netzwerke (RNN) und Kombinationen aus beiden. Die Bibliothek ist auch relativ flexibel, was die Backend Engine angeht: TensorFlow, Theano und das Microsoft Cognitive Toolkit werden alle unterstützt. Keras war ursprünglich eine Komponente des Wissenschaftsprojekts ONEIROS (Open-ended Neuro-Electronic Intelligent Robot Operating System) und zählte im Jahr 2018 über 250 000 Nutzer. Das folgende Beispiel zeigt, wie man ein einfaches Modell mit Keras erstellt und trainiert.

import numpy as np
from keras.models import Sequential
from keras.layers import Dense
 
# Generieren von Dummydaten und -Targets
data = np.random.random((1000, 100))
target = np.random.randint(2,size=(1000, 1))
 
# Initialisieren von Sequential – einem Modell mit linearer # Anordnung mehrerer Ebenen
model = Sequential()
# Hinzufügen von Ebenen zum Modell
# Die Erste Ebene enthält Informationen zur Art des Inputs # (input_dim).
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
# Konfiguration des Lernprozesses
model.compile(
  optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])
# Training des Modells für eine bestimmte Anzahl an # Iterationen pro Datenset (Epochen)
model.fit(data, target, epochs=10)
# Erstellen einer Voraussage basierend auf den # Dummydaten
model.predict(data)
20_22_Infografik_scikit-learn.png

scikit-learn

Die Bibliothek scikit-learn stellt einfach zugängliche Tools für Data Mining und die Datenanalyse zur Verfügung. scikit-learn war ursprünglich ein Projekt während des Google Summer of Code und wurde dann von Entwicklern des Institut National de Recherche en Informatique et en Automatique neu geschrieben. Anschließend gewann die Bibliothek in der Machine-Learning-Community immer mehr Aufmerksamkeit. Der Fokus von scikit-learn liegt auf dem Erstellen von Modelldaten, die Bibliothek bringt dafür Funktionalitäten wie überwachtes und nicht-überwachtes Lernen, Kreuzvalidierung, Dummydatensets und Feature Extraction. Das folgende Beispiel zeigt, wie einfach sich scikit-learn verwenden lässt. Wir erstellen einen Klassifizierer und trainieren ihn mit dem Iris-Datenset.

from sklearn.datasets
import load_iris
from sklearn.model_selection
import train_test_split
from sklearn.tree
import DecisionTreeClassifier
 
iris = load_iris()
# Teilen des Datensets in zufällige Trainings # und Testteilmengen
data_train, data_test, target_train, target_test = train_test_split(
  iris.data, iris.target, random_state = 0)
classifier = DecisionTreeClassifier()
# Training des Klassifizierers
classifier = classifier.fit(data_train, target_train)
# Klassifizierung der Testdaten
# Rückgabe des gewünschten Test-Targets
classifier.predict(data_test)

von Ana-Maria Nichifor