Machine Learning: scikit-learn erscheint nach 14 Jahren in Version 1.0

Die Python-Library für Machine-Learning-Anwendungen markiert mit der ersten Hauptversion ihren stabilen Status.

In Pocket speichern vorlesen Druckansicht

(Bild: sdecoret/Shutterstock.com)

Lesezeit: 2 Min.
Von
  • Rainald Menge-Sonnentag

Die freie Python-Library für Machine-Learning-Anwendungen scikit-learn ist in Version 1.0 erschienen. Der Sprung auf die erste Hauptversion soll laut dem Entwicklungsteam signalisieren, dass die Python-Bibliothek bereits seit geraumer Zeit stabil ist. Darüber hinaus gibt es im Vergleich zu den bisherigen Releases bis scikit-learn 0.24 keine großen Umbrüche oder Inkompatibilitäten.

Einer der wenigen Breaking Changes betrifft positionsgebundene Parameter, die ab sofort nicht mehr erlaubt sind. Sie gelten seit Version 0.23 als überholt (deprecated), sodass der Wegfall dem regulären Rhythmus entspricht, nachdem die Library Deprecations im übernächsten Release entfernt.

Viele Library-Funktionen haben zahlreiche Parameter, und im Interesse der Les- und Wartbarkeit setzt scikit-learn nun ausschließlich auf benannte Argumente wie loss="squared_error" oder max_iter=100. Positionsparameter führen ab dem aktuellen Release zu einem TypeError. Wenige Ausnahmen gelten unter anderem für die Funktion zur Hauptkomponentenanalyse (englisch Principal Component Analysis, PCA), die mit genau einem Parameter für die Komponenten weiterhin ohne Namen als PCA(10) erlaubt ist. Das Hinzufügen eines Booleschen Werts für den zweiten Parameter copy führt jedoch zu einer Fehlermeldung.

Bei den Neuzugängen ist unter anderem der QuantileRegressor für die Quantilregression nennenswert, einem Regressionsmodell zur Vorhersage eines Schwellenwerts. Ebenfalls neu ist der SplineTransformer, der eine Spline-Basisfunktion eines bestimmten Grades mit einer festgelegten Anzahl von Knoten erstellt.

Die Ergebnisse des Spline-Transformer mit unterschiedlichen Gradwerten

(Bild: scikit-learn.org)

Im Zusammenspiel mit der Library pandas kann scikit-learn nun die Feature-Namen der Dataframes über das Attribut feature_names_in_ abrufen, wie in folgendem Listing aus dem Beitrag zur Veröffentlichung von scikit-learn 1.0:

from sklearn.preprocessing import StandardScaler
import pandas as pd

X = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=["a", "b", "c"])
scalar = StandardScaler().fit(X)
scalar.feature_names_in_

# Ausgabe: 
# array(['a', 'b', 'c'], dtype=object)

Außerdem erweitert das Release die Plotting-API um die Methoden from_estimator und from_predictions, die einen Plot anhand eines Estimator beziehungsweise von Vorhersagen erlauben. Auch bei der One-Class SVM (Support-Vector Machine) gibt es einen Zuwachs mit der Implementierung SGDOneClassSVM, die mit stochastischem Gradientenabstieg arbeitet.

Eine Bibliothek für klassisches Machine Learning

(Bild: scikit-learn auf GitHub)

Die Python-Library scikit-learn bietet Funktionen für traditionelles Machine Learning. Sie enthält diverse Algorithmen für die Klassifikation, Regression und das Clustering wie Random Forest, k-means und Gradient Boosting. Das Modul ist unter der 3-Klausel-BSD-Lizenz frei verfügbar. scikit-Learn gehört zu den beliebtesten ML-Libraries auf GitHub.

Das Projekt entstand vor 14 Jahren. Der Initiiator David Cournapeau hatte es im Rahmen des Google Summer of Code noch unter dem Titel scikits learn geschrieben. Ein Team des französischen Institut national de recherche en informatique et en automatique (INRIA, Nationales Forschungsinstitut für Informatik und Automatisierung) hat es im Jahr 2010 erstmals öffentlich bereitgestellt.

scikit-learn setzt auf SciPy auf und ist auf das Zusammenspiel mit anderen Python-Libraries wie NumPy, pandas und Matplotlib ausgelegt. Trotz der Ausrichtung auf ML-Anwendungen, nutzt es im Gegensatz zu den Frameworks PyTorch und TensorFlow keine GPUs. Das ist zumindest auch in der näheren Zukunft nicht geplant. Laut FAQ würde die Umsetzung zu viele externe Abhängigkeiten erfordern und potenziell zu plattformspezifischen Problemen führen. Zudem wären GPUs vor allem für künstliche neuronale Netze sinnvoll, währen bei klassischem Machine Learning sorgfältig ausgewählte Algorithmen bessere Performance garantieren könnten.

Weitere Neuerungen und Details zum 1.0-Release von scikit-learn lassen sich der Seite mit den Release Highlights entnehmen. Eine vollständige Übersicht der Änderungen findet sich in den Release Notes. Die Installation mit pip erfolgt über pip install -U scikit-learn. Der Sourcecode steht auf GitHub.

(rme)