Version 1.4#

Eine kurze Beschreibung der wichtigsten Highlights der Version finden Sie unter Release Highlights für scikit-learn 1.4.

Legende für Changelogs

  • Hauptmerkmal etwas Großes, das Sie vorher nicht tun konnten.

  • Merkmal etwas, das Sie vorher nicht tun konnten.

  • Effizienz Ein bestehendes Merkmal erfordert nun möglicherweise weniger Rechenleistung oder Speicher.

  • Verbesserung eine sonstige kleinere Verbesserung.

  • Korrektur Etwas, das zuvor nicht wie dokumentiert – oder nach vernünftigen Erwartungen – funktionierte, sollte nun funktionieren.

  • API-Änderung Sie müssen Ihren Code ändern, um in Zukunft die gleiche Wirkung zu erzielen; oder ein Merkmal wird in Zukunft entfernt.

Version 1.4.2#

April 2024

Diese Version beinhaltet lediglich die Unterstützung für numpy 2.

Version 1.4.1#

Februar 2024

Geänderte Modelle#

Metadaten-Routing#

DataFrame-Unterstützung#

  • Verbesserung Fehlerbehebung Pandas- und Polars-DataFrames werden direkt validiert, ohne Ducktyping-Prüfungen. #28195 von Thomas Fan.

Änderungen, die viele Module betreffen#

Änderungsprotokoll#

sklearn.calibration#

  • Fehlerbehebung calibration.CalibratedClassifierCV unterstützt predict_proba mit Float32-Ausgabe des inneren Estimators. #28247 von Thomas Fan.

sklearn.cluster#

sklearn.compose#

  • Fehlerbehebung compose.ColumnTransformer transformiert nun in einen Polars-DataFrame, wenn verbose_feature_names_out=True ist und die intern verwendeten Transformer mehrfach dieselben Spalten verwenden. Zuvor wäre es aufgrund doppelter Spaltennamen zu einem Fehler gekommen. #28262 von Guillaume Lemaitre.

sklearn.ensemble#

  • Fehlerbehebung HistGradientBoostingClassifier und HistGradientBoostingRegressor, wenn auf pandas DataFrame mit Erweiterungsdatentypen, z. B. pd.Int64Dtype, trainiert. #28385 von Loïc Estève.

  • Fehlerbehebung Korrigiert die Fehlermeldung, die von ensemble.VotingClassifier ausgegeben wird, wenn das Ziel multilabel oder multiclass-multioutput in DataFrame-Format ist. #27702 von Guillaume Lemaitre.

sklearn.impute#

  • Fehlerbehebung : impute.SimpleImputer löst nun einen Fehler in .fit und .transform aus, wenn fill_value nicht in den Datentyp des Eingabewerts mit casting='same_kind' umgewandelt werden kann. #28365 von Leo Grinsztajn.

sklearn.inspection#

sklearn.linear_model#

sklearn.preprocessing#

  • Fehlerbehebung macht preprocessing.FunctionTransformer nachsichtiger und überschreibt Ausgabespaltennamen mit get_feature_names_out in den folgenden Fällen: (i) die Eingabe- und Ausgabespaltennamen bleiben gleich (passiert bei Verwendung von NumPy ufunc); (ii) die Eingespaltennamen sind Zahlen; (iii) die Ausgabe wird auf Pandas- oder Polars-DataFrames gesetzt. #28241 von Guillaume Lemaitre.

  • Fehlerbehebung preprocessing.FunctionTransformer gibt nun auch eine Warnung aus, wenn set_output mit transform="polars" aufgerufen wird und func keinen Polars-DataFrame zurückgibt oder feature_names_out nicht angegeben ist. #28263 von Guillaume Lemaitre.

  • Fehlerbehebung preprocessing.TargetEncoder schlägt nun nicht mehr fehl, wenn target_type="continuous" ist und die Eingabe schreibgeschützt ist. Insbesondere funktioniert es nun mit aktivierter Pandas Copy-on-Write-Funktion. #28233 von John Hopfensperger.

sklearn.tree#

sklearn.utils#

Version 1.4.0#

Januar 2024

Geänderte Modelle#

Die folgenden Schätzer und Funktionen können, wenn sie mit denselben Daten und Parametern angepasst werden, andere Modelle als in der vorherigen Version ergeben. Dies geschieht häufig aufgrund von Änderungen in der Modellierungslogik (Fehlerbehebungen oder Verbesserungen) oder in zufälligen Stichprobenverfahren.

  • Effizienz linear_model.LogisticRegression und linear_model.LogisticRegressionCV haben nun eine deutlich bessere Konvergenz für die Solver "lbfgs" und "newton-cg". Beide Solver können nun je nach angegebenem tol eine viel höhere Präzision für die Koeffizienten erreichen. Außerdem kann lbfgs tol besser nutzen, d.h. früher stoppen oder höhere Präzision erreichen. Hinweis: lbfgs ist der Standard-Solver, daher kann diese Änderung viele Modelle betreffen. Diese Änderung bedeutet auch, dass mit dieser neuen Version von scikit-learn die resultierenden Koeffizienten coef_ und intercept_ Ihrer Modelle für diese beiden Solver anders sein werden (wenn sie wieder auf denselben Daten trainiert werden). Die Höhe der Änderung hängt vom angegebenen tol ab, bei kleinen Werten erhalten Sie präzisere Ergebnisse. #26721 von Christian Lorentzen.

  • Fehlerbehebung behebt einen Speicherleck, der in PyPy bei Estimators mit Cython-Verlustfunktionen auftrat. #27670 von Guillaume Lemaitre.

Änderungen, die alle Module betreffen#

  • Hauptfunktion Transformer unterstützen nun Polars-Ausgabe mit set_output(transform="polars"). #27315 von Thomas Fan.

  • Verbesserung Alle Estimators erkennen nun die Spaltennamen aus jedem DataFrame, der das DataFrame Interchange Protocol unterstützt. DataFrames, die eine korrekte Darstellung über np.asarray(df) zurückgeben, sollten mit unseren Estimators und Funktionen funktionieren. #26464 von Thomas Fan.

  • Verbesserung Die HTML-Darstellung von Estimators enthält nun einen Link zur Dokumentation und ist farblich gekennzeichnet, um anzuzeigen, ob der Estimator trainiert wurde oder nicht (nicht trainierte Estimators sind orange, trainierte Estimators sind blau). #26616 von Riccardo Cappuzzo, Ines Ibnukhsein, Gael Varoquaux, Joel Nothman und Lilian Boulard.

  • Fehlerbehebung Behoben wurde ein Fehler in den meisten Estimators und Funktionen, bei dem die Einstellung eines Parameters auf eine große Ganzzahl zu einem TypeError führte. #26648 von Naoise Holohan.

Metadaten-Weiterleitung#

Die folgenden Modelle unterstützen nun die Metadaten-Weiterleitung in einer oder mehreren ihrer Methoden. Weitere Details finden Sie im Benutzerhandbuch für Metadaten-Weiterleitung.

Unterstützung für SciPy Sparse Arrays#

Mehrere Estimators unterstützen nun SciPy Sparse Arrays. Die folgenden Funktionen und Klassen sind betroffen

Funktionen

Klassen

Unterstützung für Array API#

Mehrere Schätzer und Funktionen unterstützen die Array API. Solche Änderungen ermöglichen die Verwendung der Schätzer und Funktionen mit anderen Bibliotheken wie JAX, CuPy und PyTorch. Dies ermöglicht somit einige GPU-beschleunigte Berechnungen.

Weitere Details finden Sie in Array API-Unterstützung (experimentell).

Funktionen

Klassen

Privates Modul für Verlustfunktionen#

Änderungsprotokoll#

sklearn.base#

sklearn.calibration#

sklearn.cluster#

sklearn.compose#

  • Major Feature Fügt Unterstützung für polars-Eingaben zu compose.ColumnTransformer über das DataFrame Interchange Protocol hinzu. Die minimal unterstützte Version für polars ist 0.19.12. #26683 von Thomas Fan.

  • Fix cluster.spectral_clustering und cluster.SpectralClustering lösen nun eine explizite Fehlermeldung aus, die besagt, dass dünnbesetzte Matrizen und Arrays mit np.int64 Indizes nicht unterstützt werden. #27240 von Yao Xiao.

  • API Change Ausgaben, die pandas Extension-Datentypen verwenden und pd.NA enthalten, in ColumnTransformer führen nun zu einer FutureWarning und verursachen in Version 1.6 einen ValueError, es sei denn, der Ausgabepuffer wurde mit set_output(transform="pandas") als "pandas" konfiguriert. Zuvor führten solche Ausgaben zu NumPy-Arrays vom Typ object, die pd.NA enthielten, nicht in NumPy-Floats konvertiert werden konnten und Fehler verursachten, wenn sie an andere scikit-learn-Schätzer übergeben wurden. #27734 von Jérôme Dockès.

sklearn.covariance#

sklearn.datasets#

  • Enhancement datasets.make_sparse_spd_matrix verwendet nun ein speichereffizienteres Dünnbesetzt-Layout. Es akzeptiert auch ein neues Schlüsselwort sparse_format, das die Angabe des Ausgabeformats der dünnbesetzten Matrix ermöglicht. Standardmäßig ist sparse_format=None, was wie zuvor ein dichtes NumPy ndarray zurückgibt. #27438 von Yao Xiao.

  • Fix datasets.dump_svmlight_file löst nun keine ValueError mehr aus, wenn X schreibgeschützt ist, z. B. eine numpy.memmap Instanz. #28111 von Yao Xiao.

  • API Change datasets.make_sparse_spd_matrix hat das Schlüsselwortargument dim zugunsten von n_dim veraltet. dim wird in Version 1.6 entfernt. #27718 von Adam Li.

sklearn.decomposition#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.inspection#

sklearn.kernel_ridge#

sklearn.linear_model#

sklearn.metrics#

sklearn.model_selection#

sklearn.multioutput#

sklearn.neighbors#

sklearn.preprocessing#

sklearn.tree#

sklearn.utils#

  • Enhancement sklearn.utils.estimator_html_repr passt Diagrammfarben dynamisch an das prefers-color-scheme des Browsers an und bietet so eine verbesserte Anpassungsfähigkeit an Dunkelmodus-Umgebungen. #26862 von Andrew Goh Yisheng, Thomas Fan, Adrin Jalali.

  • Enhancement MetadataRequest und MetadataRouter haben nun eine Methode consumes, mit der überprüft werden kann, ob eine gegebene Menge von Parametern verbraucht würde. #26831 von Adrin Jalali.

  • Enhancement sklearn.utils.check_array versucht, int32-indizierte CSR- und COO-Arrays auszugeben, wenn von DIA-Arrays konvertiert wird, wenn die Anzahl der Nicht-Null-Einträge klein genug ist. Dies stellt sicher, dass Schätzer, die in Cython implementiert sind und keine int64-indizierten spärlichen Datenstrukturen akzeptieren, nun konsistent die gleichen spärlichen Eingabeformate für SciPy Sparse Matrizen und Arrays akzeptieren. #27372 von Guillaume Lemaitre.

  • Fix sklearn.utils.check_array sollte sowohl Matrizen als auch Arrays aus dem spärlichen SciPy-Modul akzeptieren. Die vorherige Implementierung würde bei copy=True fehlschlagen, indem sie spezifische NumPy np.may_share_memory aufruft, die nicht mit SciPy Sparse Array funktioniert und kein korrektes Ergebnis für SciPy Sparse Matrix liefert. #27336 von Guillaume Lemaitre.

  • Fix check_estimators_pickle mit readonly_memmap=True stützt sich nun auf die Fähigkeit von joblib, ausgerichtete speicherabgebildete Arrays zuzuweisen, wenn ein serialisierter Schätzer geladen wird, anstatt eine spezielle private Funktion aufzurufen, die abstürzen würde, wenn OpenBLAS die CPU-Architektur falsch erkennt. #27614 von Olivier Grisel.

  • Fix Die Fehlermeldung in check_array, wenn eine spärliche Matrix übergeben wurde, aber accept_sparse auf False gesetzt ist, schlägt nun vor, .toarray() und nicht X.toarray() zu verwenden. #27757 von Lucy Liu.

  • Fix Korrigiert die Funktion check_array, um die richtige Fehlermeldung auszugeben, wenn die Eingabe eine Series anstelle eines DataFrames ist. #28090 von Stan Furrer und Yao Xiao.

  • API Change sklearn.utils.extmath.log_logistic ist veraltet und wird in 1.6 entfernt. Verwenden Sie stattdessen -np.logaddexp(0, -x). #27544 von Christian Lorentzen.

Code- und Dokumentationsbeitragende

Vielen Dank an alle, die seit Version 1.3 zur Wartung und Verbesserung des Projekts beigetragen haben, darunter

101AlexMartin, Abhishek Singh Kushwah, Adam Li, Adarsh Wase, Adrin Jalali, Advik Sinha, Alex, Alexander Al-Feghali, Alexis IMBERT, AlexL, Alex Molas, Anam Fatima, Andrew Goh, andyscanzio, Aniket Patil, Artem Kislovskiy, Arturo Amor, ashah002, avm19, Ben Holmes, Ben Mares, Benoit Chevallier-Mames, Bharat Raghunathan, Binesh Bannerjee, Brendan Lu, Brevin Kunde, Camille Troillard, Carlo Lemos, Chad Parmet, Christian Clauss, Christian Lorentzen, Christian Veenhuis, Christos Aridas, Cindy Liang, Claudio Salvatore Arcidiacono, Connor Boyle, cynthias13w, DaminK, Daniele Ongari, Daniel Schmitz, Daniel Tinoco, David Brochart, Deborah L. Haar, DevanshKyada27, Dimitri Papadopoulos Orfanos, Dmitry Nesterov, DUONG, Edoardo Abati, Eitan Hemed, Elabonga Atuo, Elisabeth Günther, Emma Carballal, Emmanuel Ferdman, epimorphic, Erwan Le Floch, Fabian Egli, Filip Karlo Došilović, Florian Idelberger, Franck Charras, Gael Varoquaux, Ganesh Tata, Hleb Levitski, Guillaume Lemaitre, Haoying Zhang, Harmanan Kohli, Ily, ioangatop, IsaacTrost, Isaac Virshup, Iwona Zdzieblo, Jakub Kaczmarzyk, James McDermott, Jarrod Millman, JB Mountford, Jérémie du Boisberranger, Jérôme Dockès, Jiawei Zhang, Joel Nothman, John Cant, John Hopfensperger, Jona Sassenhagen, Jon Nordby, Julien Jerphanion, Kennedy Waweru, kevin moore, Kian Eliasi, Kishan Ved, Konstantinos Pitas, Koustav Ghosh, Kushan Sharma, ldwy4, Linus, Lohit SundaramahaLingam, Loic Esteve, Lorenz, Louis Fouquet, Lucy Liu, Luis Silvestrin, Lukáš Folwarczný, Lukas Geiger, Malte Londschien, Marcus Fraaß, Marek Hanuš, Maren Westermann, Mark Elliot, Martin Larralde, Mateusz Sokół, mathurinm, mecopur, Meekail Zain, Michael Higgins, Miki Watanabe, Milton Gomez, MN193, Mohammed Hamdy, Mohit Joshi, mrastgoo, Naman Dhingra, Naoise Holohan, Narendra Singh dangi, Noa Malem-Shinitski, Nolan, Nurseit Kamchyev, Oleksii Kachaiev, Olivier Grisel, Omar Salman, partev, Peter Hull, Peter Steinbach, Pierre de Fréminville, Pooja Subramaniam, Puneeth K, qmarcou, Quentin Barthélemy, Rahil Parikh, Rahul Mahajan, Raj Pulapakura, Raphael, Ricardo Peres, Riccardo Cappuzzo, Roman Lutz, Salim Dohri, Samuel O. Ronsin, Sandip Dutta, Sayed Qaiser Ali, scaja, scikit-learn-bot, Sebastian Berg, Shreesha Kumar Bhat, Shubhal Gupta, Søren Fuglede Jørgensen, Stefanie Senger, Tamara, Tanjina Afroj, THARAK HEGDE, thebabush, Thomas J. Fan, Thomas Roehr, Tialo, Tim Head, tongyu, Venkatachalam N, Vijeth Moudgalya, Vincent M, Vivek Reddy P, Vladimir Fokow, Xiao Yuan, Xuefeng Xu, Yang Tao, Yao Xiao, Yuchen Zhou, Yuusuke Hiramatsu