scikit-learn 1.9 erschien im Juni 2026, das Bugfix-Release 1.9.1 folgte im September. Es ist die Bibliothek hinter dem Großteil des klassischen Machine Learning in Python: Regression, Klassifikation, Clustering und die Pipelines drumherum. In diesem Release geht es weniger um neue Algorithmen als um das Arbeiten damit: Sie können endlich den Trainingsfortschritt verfolgen, mehr Modelle laufen auf der GPU, und mehrere altbekannte Eigenheiten sind behoben. Zugleich beginnt der Countdown für eine Reihe von Deprecations, die in 1.11 zu Fehlern werden.
Zeitplan der Releases
scikit-learn 1.9.0
Neue Funktionen und Deprecations.
scikit-learn 1.9.1
Fehlerbehebungen, unter anderem beim Metadata Routing in Pipelines.
Deprecations entferntDemnächst
Warnungen aus 1.9 werden zu Fehlern.
pip install --upgrade scikit-learnCallbacks: Sehen Sie Ihren Modellen beim Training zu
Eine lange Grid Search war bisher eine Blackbox: starten und warten. scikit-learn 1.9 führt eine experimentelle Callback-API ein, damit Estimatoren während fit berichten können, was sie gerade tun. Mitgeliefert werden zwei Callbacks, sklearn.callback.ProgressBar und sklearn.callback.ScoringMonitor, und verschachtelter Fortschritt wird unterstützt, auch bei paralleler Ausführung.
Wo Callbacks in 1.9 funktionieren
- LogisticRegression
- Nur mit solver="lbfgs".
- GridSearchCV und RandomizedSearchCV
- Dazu HalvingGridSearchCV und HalvingRandomSearchCV.
- Pipeline
- Fortschritt über jeden Schritt.
- StandardScaler
- Der erste Transformer mit Unterstützung.
Sparse Arrays statt Sparse-Matrizen
SciPy wechselt von Sparse-Matrizen zu Sparse-Arrays, die sich eher wie NumPy-Arrays verhalten (zum Beispiel bedeutet * elementweise Multiplikation, nicht Matrixmultiplikation). scikit-learn kann jetzt beides liefern. Standard ist weiterhin "spmatrix", der Wechsel zu "sparray" ist für eines der nächsten Releases geplant. Es lohnt sich also, es schon jetzt auszuprobieren:
import sklearn
sklearn.set_config(sparse_interface="sparray")
# From here on, scikit-learn returns SciPy sparse arrays
# (for example csr_array) wherever it supports the new setting.
print(sklearn.get_config()["sparse_interface"]) # "sparray"Schnellere und genauere Modelle
Tempo und Speicher
Neu- LogisticRegression mit lbfgs rechnet in float32, wenn Ihre Daten float32 sind, und braucht weniger Speicher
- RidgeCV und RidgeClassifierCV sind schneller und stabiler
- SpectralEmbedding ist schneller
- Gap Safe Screening beschleunigt Sparse-Regressoren mit quadratischem Verlust
Korrektheit
Behoben- Stichprobengewichte werden in HistGradientBoosting, RandomForest und ExtraTrees korrekt behandelt
- Kriterium friedman_mse von GradientBoosting korrigiert (der Parameter criterion ist veraltet)
- Die yeo-johnson-Methode von PowerTransformer ist numerisch stabiler
- Manche Scores und geschätzten Werte können sich nach dem Upgrade leicht verschieben
Neue Werkzeuge
Hinzugefügt- metrics.metric_at_thresholds berechnet eine Metrik für jeden Schwellenwert
- PrecisionRecallDisplay.from_cv_results zeichnet Kurven aus cross_validate
- RandomForestRegressor verarbeitet fehlende Werte beim absoluten Fehler
- MiniBatchKMeans akzeptiert Stichprobengewichte
Außerdem neu: Die Notebook-Anzeige trainierter Estimatoren zeigt jetzt die gelernten Attribute, und die Ansicht von ColumnTransformer zeigt, wie die Ausgabespalten zusammengesetzt werden. narwhals ist jetzt eine Abhängigkeit und übernimmt die DataFrame-Ausgabe, sodass set_output(transform="polars") und die pandas-Ausgabe einheitlicher funktionieren.
Mehr scikit-learn auf der GPU
Über den Array-API-Standard kann scikit-learn manche Estimatoren direkt auf PyTorch- oder CuPy-Arrays auf der GPU ausführen, ohne Umwandlung nach NumPy. Version 1.9 ergänzt LogisticRegression und PoissonRegressor (mit dem Solver lbfgs), Nystroem, FeatureUnion, wenn alle Schritte es unterstützen, sowie weitere Metriken wie die Average Precision.
Deprecations, die Sie vor 1.11 beheben sollten
Diese erzeugen in 1.9 Warnungen und funktionieren in 1.11 nicht mehr. Jede lässt sich einfach beheben:
# Deprecated: SVC(probability=True) is not thread-safe
from sklearn.svm import SVC
from sklearn.calibration import CalibratedClassifierCV
clf = CalibratedClassifierCV(SVC(), ensemble=False)
clf.fit(X_train, y_train)
proba = clf.predict_proba(X_test)from sklearn.metrics import log_loss
# Deprecated: log_loss(y_test, proba) via y_pred
score = log_loss(y_test, y_proba=proba)from sklearn.linear_model import LogisticRegressionCV
# The default scoring changes from accuracy to "neg_log_loss" in 1.11.
# Set it explicitly to keep today's behaviour and silence the warning.
model = LogisticRegressionCV(scoring="accuracy")from sklearn.preprocessing import TargetEncoder
from sklearn.model_selection import KFold
# shuffle and random_state are deprecated: pass a CV splitter instead
enc = TargetEncoder(cv=KFold(n_splits=5, shuffle=True, random_state=0))Weitere Deprecations und Änderungen
- lasso_path und enet_path
- n_alphas ist veraltet. Übergeben Sie alphas als Ganzzahl oder Liste.
- GradientBoosting
- Der Parameter criterion ist veraltet.
- confusion_matrix_at_thresholds
- Übergeben Sie pos_label und sample_weight als Schlüsselwortargumente.
- Metriken mit Text
- accuracy_score, confusion_matrix und andere melden jetzt einen Fehler, wenn y_true Text und y_pred numerisch ist.
Ein sicheres Upgrade in vier Schritten
- 1
Versionen fixieren und branchen
Aktualisieren Sie in einer eigenen Umgebung oder einem Branch, nicht in Produktion.
- 2
Warnungen sichtbar machen
Führen Sie Ihre Tests mit python -W error::FutureWarning aus, um jede Deprecation zu finden.
- 3
Scores vergleichen
Trainieren Sie wichtige Modelle neu und vergleichen Sie die Metriken; Korrekturen bei Gewichten und Binning können Ergebnisse leicht verschieben.
- 4
Auf 1.9.1 gehen
Es behebt das Metadata Routing in Pipelines, nutzen Sie es also statt 1.9.0.
Testen Sie Ihr Wissen
1/3Welche Callbacks bringt scikit-learn 1.9 mit?
Beide liegen in sklearn.callback, und die API ist experimentell.
2/3Was ersetzt SVC(probability=True)?
Der Parameter probability ist veraltet, weil er nicht threadsicher ist.
3/3Was ändert sparse_interface="sparray"?
Standard bleibt vorerst spmatrix, ein Wechsel ist für später geplant.
Sie haben 0 von 3 richtig.
Aktualisieren Sie diesen Herbst Ihren Python-Stack? Lesen Sie den Upgrade-Leitfaden für pandas 3.0, die Neuerungen in Python 3.15 und richten Sie saubere Umgebungen mit uv ein.
Quellen: der scikit-learn-Blog „release 1.9“ (12. Juni 2026) und die Release Notes zu scikit-learn 1.9, einschließlich 1.9.1 (September 2026).
