Version 1.5#

Für eine kurze Beschreibung der wichtigsten Neuerungen dieser Version verweisen wir auf die Release Highlights für scikit-learn 1.5.

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.5.2#

September 2024

Änderungen, die viele Module betreffen#

  • Fix Behoben einer Performance-Regression in einigen Cython-Modulen in sklearn._loss, sklearn.manifold, sklearn.metrics und sklearn.utils, die ohne OpenMP-Unterstützung kompiliert wurden. #29694 von Loïc Estèvce.

Änderungsprotokoll#

sklearn.calibration#

  • Fix Fehler auslösen, wenn LeaveOneOut in cv verwendet wird, was dem Verhalten von KFold(n_splits=n_samples) entspricht. #29545 von Lucy Liu

sklearn.compose#

sklearn.decomposition#

  • Fix Erhöhung des Schwellenwerts für Rangdefizite im Whitening-Schritt von decomposition.FastICA mit whiten_solver="eigh" zur Verbesserung der Plattformunabhängigkeit des Schätzers. #29612 von Olivier Grisel.

sklearn.metrics#

sklearn.svm#

Version 1.5.1#

Juli 2024

Änderungen, die viele Module betreffen#

  • Fix Behebung einer Regression bei der Validierung der Eingabedaten aller Schätzer, bei der ein unerwarteter Fehler ausgelöst wurde, wenn ein DataFrame, der auf einem schreibgeschützten Puffer basiert, übergeben wurde. #29018 von Jérémie du Boisberranger.

  • Fix Behebung einer Regression, die in einigen Konfigurationen zu einem Deadlock beim Import führte. #29235 von Jérémie du Boisberranger.

Änderungsprotokoll#

sklearn.compose#

sklearn.metrics#

  • Fix Behebung einer Regression in metrics.r2_score. Die Übergabe von Torch CPU-Tensoren mit deaktivierter Array-API-Weiterleitung führte zu einer Meldung über Nicht-CPU-Geräte, anstatt diese Eingaben implizit als reguläre NumPy-Arrays zu konvertieren. #29119 von @Olivier Grisel.

  • Fix Behebung einer Regression in metrics.zero_one_loss, die zu einem Fehler bei der Array-API-Weiterleitung mit Multilabel-Eingaben führte. #29269 von Yaroslav Korobko.

sklearn.model_selection#

sklearn.tree#

sklearn.utils#

  • API Change utils.validation.check_array verfügt über einen neuen Parameter force_writeable, um die Schreibbarkeit des Ausgabe-Arrays zu steuern. Wenn er auf True gesetzt ist, ist garantiert, dass das Ausgabe-Array schreibbar ist, und es wird eine Kopie erstellt, wenn das Eingabe-Array schreibgeschützt ist. Wenn er auf False gesetzt ist, gibt es keine Garantie für die Schreibbarkeit des Ausgabe-Arrays. #29018 von Jérémie du Boisberranger.

Version 1.5.0#

Mai 2024

Sicherheit#

  • Fix feature_extraction.text.CountVectorizer und feature_extraction.text.TfidfVectorizer speichern keine verworfenen Token mehr aus dem Trainingsdatensatz in ihrem Attribut stop_words_. Dieses Attribut würde zu häufige (über max_df) aber auch zu seltene Token (unter min_df) enthalten. Dies behebt ein potenzielles Sicherheitsproblem (Datenleck), wenn die verworfenen seltenen Token sensible Informationen aus dem Trainingsdatensatz enthalten, ohne dass der Modellentwickler dies weiß.

    Hinweis: Benutzer dieser Klassen werden ermutigt, ihre Pipelines entweder mit der neuen scikit-learn-Version neu zu trainieren oder das Attribut stop_words_ von zuvor trainierten Instanzen dieser Transformer manuell zu löschen. Dieses Attribut ist nur zur Inspektion des Modells gedacht und hat keinen Einfluss auf das Verhalten der Transformer. #28823 von Olivier Grisel.

Geänderte Modelle#

  • Efficiency Das Subsampling in preprocessing.QuantileTransformer ist nun effizienter für dichte Arrays, aber die angepassten Quantile und die Ergebnisse von transform können sich leicht von zuvor unterscheiden (wobei die gleichen statistischen Eigenschaften erhalten bleiben). #27344 von Xuefeng Xu.

  • Enhancement decomposition.PCA, decomposition.SparsePCA und decomposition.TruncatedSVD setzen nun das Vorzeichen des Attributs components_ basierend auf den Komponentenwerten, anstatt die transformierten Daten als Referenz zu verwenden. Diese Änderung ist notwendig, um konsistente Vorzeichen der Komponenten über alle PCA-Löser hinweg anbieten zu können, einschließlich der neuen Option svd_solver="covariance_eigh", die in dieser Version eingeführt wurde.

Änderungen, die viele Module betreffen#

Unterstützung für Array API#

Zusätzliche Schätzer und Funktionen wurden aktualisiert, um Unterstützung für alle Array API-konformen Eingaben zu bieten.

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

Funktionen

Klassen

Unterstützung für die Erstellung mit Meson#

Ab scikit-learn 1.5 ist Meson die primäre unterstützte Methode zur Erstellung von scikit-learn.

Sofern wir keinen größeren Blocker entdecken, wird die Setuptools-Unterstützung in scikit-learn 1.6 eingestellt. Die Releases 1.5.x unterstützen die Erstellung von scikit-learn mit Setuptools.

Die Meson-Unterstützung für die Erstellung von scikit-learn wurde in #28040 von Loïc Estève hinzugefügt.

Metadaten-Routing#

Die folgenden Modelle unterstützen nun das Metadaten-Routing in einer oder mehreren ihrer Methoden. Weitere Details finden Sie im Metadaten-Routing Benutzerhandbuch.

Änderungsprotokoll#

sklearn.calibration#

sklearn.cluster#

sklearn.compose#

sklearn.cross_decomposition#

sklearn.datasets#

sklearn.decomposition#

  • Effizienz decomposition.PCA mit svd_solver="full" weist jetzt ein zusammenhängendes components_ Attribut zu anstelle eines nicht zusammenhängenden Slices der singulären Vektoren. Wenn n_components << n_features, kann dies etwas Speicher sparen und, was noch wichtiger ist, nachfolgende Aufrufe der transform Methode durch Nutzung der Cache-Lokalität von BLAS GEMM auf zusammenhängenden Arrays um mehr als eine Größenordnung beschleunigen. #27491 von Olivier Grisel.

  • Verbesserung PCA wählt nun automatisch den ARPACK-Solver für spärliche Eingaben, wenn svd_solver="auto" gesetzt ist, anstatt einen Fehler auszulösen. #28498 von Thanh Lam Dang.

  • Verbesserung decomposition.PCA unterstützt nun eine neue Solver-Option namens svd_solver="covariance_eigh", die eine um eine Größenordnung schnellere Ausführung und einen reduzierten Speicherverbrauch für Datensätze mit einer großen Anzahl von Datenpunkten und einer kleinen Anzahl von Merkmalen (z. B. n_samples >> 1000 > n_features) bietet. Die Option svd_solver="auto" wurde aktualisiert, um den neuen Solver für solche Datensätze automatisch zu verwenden. Dieser Solver akzeptiert auch spärliche Eingabedaten. #27491 von Olivier Grisel.

  • Fehlerbehebung decomposition.PCA fit mit svd_solver="arpack", whiten=True und einem Wert für n_components, der größer ist als der Rang der Trainingsmenge, gibt beim Transformieren von Hold-out-Daten keine unendlichen Werte mehr zurück. #27491 von Olivier Grisel.

sklearn.dummy#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.impute#

sklearn.inspection#

sklearn.linear_model#

sklearn.manifold#

sklearn.metrics#

sklearn.mixture#

sklearn.model_selection#

sklearn.multioutput#

sklearn.neighbors#

sklearn.pipeline#

  • Funktion pipeline.FeatureUnion kann nun das Attribut verbose_feature_names_out verwenden. Wenn True, wird get_feature_names_out allen Feature-Namen den Namen des Transformers voranstellen, der dieses Feature generiert hat. Wenn False, wird get_feature_names_out keinen Feature-Namen voranstellen und einen Fehler ausgeben, wenn die Feature-Namen nicht eindeutig sind. #25991 von Jiawei Zhang.

sklearn.preprocessing#

sklearn.tree#

  • Erweiterung Das Plotten von Bäumen in Matplotlib über tree.plot_tree zeigt nun eine "True/False"-Beschriftung an, um die Richtung der Stichproben basierend auf der Aufteilungsbedingung anzuzeigen. #28552 von Adam Li.

sklearn.utils#

  • Korrektur _safe_indexing funktioniert nun korrekt für polars DataFrames, wenn axis=0 ist, und unterstützt das Indizieren von polars Series. #28521 von Yao Xiao.

  • API-Änderung utils.IS_PYPY ist veraltet und wird in Version 1.7 entfernt. #28768 von Jérémie du Boisberranger.

  • API-Änderung utils.tosequence ist veraltet und wird in Version 1.7 entfernt. #28763 von Jérémie du Boisberranger.

  • API-Änderung utils.parallel_backend und utils.register_parallel_backend sind veraltet und werden in Version 1.7 entfernt. Verwenden Sie stattdessen joblib.parallel_backend und joblib.register_parallel_backend. #28847 von Jérémie du Boisberranger.

  • API-Änderung Informative Warnmeldung in type_of_target ausgeben, wenn als Bytes repräsentiert. Für Klassifikatoren und Klassifizierungsmetriken ist die Kodierung von Labels als Bytes veraltet und wird in v1.7 einen Fehler auslösen. #18555 von Kaushik Amar Das.

  • API-Änderung utils.estimator_checks.check_estimator_sparse_data wurde in zwei Funktionen aufgeteilt: utils.estimator_checks.check_estimator_sparse_matrix und utils.estimator_checks.check_estimator_sparse_array. #27576 von Stefanie Senger.

Code- und Dokumentationsbeitragende

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

101AlexMartin, Abdulaziz Aloqeely, Adam J. Stewart, Adam Li, Adarsh Wase, Adeyemi Biola, Aditi Juneja, Adrin Jalali, Advik Sinha, Aisha, Akash Srivastava, Akihiro Kuno, Alan Guedes, Alberto Torres, Alexis IMBERT, alexqiao, Ana Paula Gomes, Anderson Nelson, Andrei Dzis, Arif Qodari, Arnaud Capitaine, Arturo Amor, Aswathavicky, Audrey Flanders, awwwyan, baggiponte, Bharat Raghunathan, bme-git, brdav, Brendan Lu, Brigitta Sipőcz, Bruno, Cailean Carter, Cemlyn, Christian Lorentzen, Christian Veenhuis, Cindy Liang, Claudio Salvatore Arcidiacono, Connor Boyle, Conrad Stevens, crispinlogan, David Matthew Cherney, Davide Chicco, davidleon123, dependabot[bot], DerWeh, dinga92, Dipan Banik, Drew Craeton, Duarte São José, DUONG, Eddie Bergman, Edoardo Abati, Egehan Gunduz, Emad Izadifar, EmilyXinyi, Erich Schubert, Evelyn, Filip Karlo Došilović, Franck Charras, Gael Varoquaux, Gönül Aycı, Guillaume Lemaitre, Gyeongjae Choi, Harmanan Kohli, Hong Xiang Yue, Ian Faust, Ilya Komarov, itsaphel, Ivan Wiryadi, Jack Bowyer, Javier Marin Tur, Jérémie du Boisberranger, Jérôme Dockès, Jiawei Zhang, João Morais, Joe Cainey, Joel Nothman, Johanna Bayer, John Cant, John Enblom, John Hopfensperger, jpcars, jpienaar-tuks, Julian Chan, Julian Libiseller-Egger, Julien Jerphanion, KanchiMoe, Kaushik Amar Das, keyber, Koustav Ghosh, kraktus, Krsto Proroković, Lars, ldwy4, LeoGrin, lihaitao, Linus Sommer, Loic Esteve, Lucy Liu, Lukas Geiger, m-maggi, manasimj, Manuel Labbé, Manuel Morales, Marco Edward Gorelli, Marco Wolsza, Maren Westermann, Marija Vlajic, Mark Elliot, Martin Helm, Mateusz Sokół, mathurinm, Mavs, Michael Dawson, Michael Higgins, Michael Mayer, miguelcsilva, Miki Watanabe, Mohammed Hamdy, myenugula, Nathan Goldbaum, Naziya Mahimkar, nbrown-ScottLogic, Neto, Nithish Bolleddula, notPlancha, Olivier Grisel, Omar Salman, ParsifalXu, Patrick Wang, Pierre de Fréminville, Piotr, Priyank Shroff, Priyansh Gupta, Priyash Shah, Puneeth K, Rahil Parikh, raisadz, Raj Pulapakura, Ralf Gommers, Ralph Urlus, Randolf Scholz, renaissance0ne, Reshama Shaikh, Richard Barnes, Robert Pollak, Roberto Rosati, Rodrigo Romero, rwelsch427, Saad Mahmood, Salim Dohri, Sandip Dutta, SarahRemus, scikit-learn-bot, Shaharyar Choudhry, Shubham, sperret6, Stefanie Senger, Steffen Schneider, Suha Siddiqui, Thanh Lam DANG, thebabush, Thomas, Thomas J. Fan, Thomas Lazarus, Tialo, Tim Head, Tuhin Sharma, Tushar Parimi, VarunChaduvula, Vineet Joshi, virchan, Waël Boukhobza, Weyb, Will Dean, Xavier Beltran, Xiao Yuan, Xuefeng Xu, Yao Xiao, yareyaredesuyo, Ziad Amerr, Štěpán Sršeň