Version 0.22#

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

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 0.22.2.post1#

3. März 2020

Das Release 0.22.2.post1 enthält eine Korrektur der Paketierung für die Quellverteilung, aber der Inhalt der Pakete ist ansonsten identisch mit dem Inhalt der Wheels der Version 0.22.2 (ohne den Suffix .post1). Beide enthalten die folgenden Änderungen.

Änderungsprotokoll#

sklearn.impute#

sklearn.metrics#

sklearn.neighbors#

Version 0.22.1#

2. Januar 2020

Dies ist ein Bugfix-Release, um hauptsächlich einige Paketierungsprobleme in Version 0.22.0 zu beheben. Es enthält auch kleinere Dokumentationsverbesserungen und einige Fehlerbehebungen.

Änderungsprotokoll#

sklearn.cluster#

  • Korrektur cluster.KMeans mit algorithm="elkan" verwendet nun das gleiche Abbruchkriterium wie mit dem Standard-Algorithmus algorithm="full". #15930 von @inder128.

sklearn.inspection#

sklearn.metrics#

sklearn.model_selection#

sklearn.naive_bayes#

  • Korrektur Der Dekorator abstractmethod für die Methode _check_X in naive_bayes.BaseNB wurde entfernt, da er nachfolgende Projekte, die von dieser veralteten öffentlichen Basisklasse erben, brechen konnte. #15996 von Brigitta Sipőcz.

sklearn.preprocessing#

sklearn.semi_supervised#

sklearn.utils#

  • Korrektur utils.check_array konvertiert nun korrekt Pandas DataFrames mit booleschen Spalten in Floats. #15797 von Thomas Fan.

  • Korrektur utils.validation.check_is_fitted akzeptiert nun wieder ein explizites Argument attributes, um spezifische Attribute als explizite Marker eines gefitteten Schätzers zu prüfen. Wenn keine expliziten attributes angegeben werden, werden nur die Attribute, die mit einem Unterstrich enden und nicht mit doppelten Unterstrichen beginnen, als "fitted"-Marker verwendet. Das Argument all_or_any ist ebenfalls nicht mehr veraltet. Diese Änderung wurde vorgenommen, um einige Abwärtskompatibilitäten mit dem Verhalten dieses Dienstprogramms in Version 0.21 wiederherzustellen. #15947 von Thomas Fan.

Version 0.22.0#

3. Dezember 2019

Website-Aktualisierung#

Unsere Website wurde überarbeitet und erhielt ein frisches neues Aussehen. #14849 von Thomas Fan.

Klare Definition der öffentlichen API#

Scikit-learn hat eine öffentliche API und eine private API.

Wir tun unser Bestes, um die öffentliche API nicht zu brechen und nur abwärtskompatible Änderungen einzuführen, die keine Benutzeraktion erfordern. Wenn dies jedoch nicht möglich ist, unterliegt jede Änderung an der öffentlichen API einem Deprecationszyklus von zwei Minor-Versionen. Die private API ist nicht öffentlich dokumentiert und unterliegt keinem Deprecationszyklus, daher sollten sich Benutzer nicht auf ihre Stabilität verlassen.

Eine Funktion oder ein Objekt ist öffentlich, wenn es in der API-Referenz dokumentiert ist und wenn es mit einem Importpfad ohne führende Unterstriche importiert werden kann. Zum Beispiel ist sklearn.pipeline.make_pipeline öffentlich, während sklearn.pipeline._name_estimators privat ist. sklearn.ensemble._gb.BaseEnsemble ist ebenfalls privat, da das gesamte Modul _gb privat ist.

Bis Version 0.22 waren einige Tools de facto öffentlich (kein führender Unterstrich), obwohl sie von Anfang an privat hätten sein sollen. In Version 0.22 wurden diese Tools korrekt privat gemacht und der öffentliche API-Bereich wurde bereinigt. Außerdem ist der Import aus den meisten Untermodulen nun veraltet: Sie sollten z. B. from sklearn.cluster import Birch verwenden, anstatt from sklearn.cluster.birch import Birch (in der Praxis wurde birch.py nach _birch.py verschoben).

Hinweis

Alle Werkzeuge in der öffentlichen API sollten in der API-Referenz dokumentiert sein. Wenn Sie ein öffentliches Werkzeug (ohne führenden Unterstrich) finden, das nicht in der API-Referenz enthalten ist, bedeutet dies, dass es entweder privat oder dokumentiert sein sollte. Bitte lassen Sie es uns wissen, indem Sie ein Issue eröffnen!

Diese Arbeit wurde in Issue 9250 und Issue 12927 verfolgt.

Deprecations: ab sofort FutureWarning verwenden#

Beim Deprecaten eines Features löste scikit-learn in früheren Versionen eine DeprecationWarning aus. Da DeprecationWarnings von Python standardmäßig nicht angezeigt werden, musste scikit-learn auf einen benutzerdefinierten Warnfilter zurückgreifen, um die Warnungen immer anzuzeigen. Dieser Filter konnte manchmal mit benutzerdefinierten Warnfiltern der Benutzer in Konflikt geraten.

Ab Version 0.22 zeigt scikit-learn FutureWarnings für Deprecations an, wie von der Python-Dokumentation empfohlen. FutureWarnings werden von Python standardmäßig immer angezeigt, sodass der benutzerdefinierte Filter entfernt wurde und scikit-learn die Benutzerfilter nicht mehr beeinträchtigt. #15080 von Nicolas Hug.

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.

Details sind in der folgenden Changelog aufgeführt.

(Obwohl wir uns bemühen, Benutzer durch die Bereitstellung dieser Informationen besser zu informieren, können wir keine Vollständigkeit dieser Liste garantieren.)

Changelog#

sklearn.base#

  • API-Änderung Ab Version 0.24 löst base.BaseEstimator.get_params einen AttributeError aus, anstatt None für Parameter zurückzugeben, die im Konstruktor des Schätzers vorhanden sind, aber nicht als Attribute der Instanz gespeichert sind. #14464 von Joel Nothman.

sklearn.calibration#

sklearn.cluster#

sklearn.compose#

sklearn.cross_decomposition#

sklearn.datasets#

sklearn.decomposition#

sklearn.dummy#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.gaussian_process#

sklearn.impute#

sklearn.inspection#

sklearn.kernel_approximation#

sklearn.linear_model#

sklearn.manifold#

sklearn.metrics#

sklearn.model_selection#

sklearn.multioutput#

sklearn.naive_bayes#

sklearn.neighbors#

sklearn.neural_network#

sklearn.pipeline#

sklearn.preprocessing#

sklearn.model_selection#

sklearn.svm#

  • Enhancement svm.SVC und svm.NuSVC akzeptieren nun einen Parameter break_ties. Dieser Parameter führt dazu, dass predict die Unentschieden anhand der Konfidenzwerte von decision_function auflöst, wenn decision_function_shape='ovr' und die Anzahl der Zielklassen > 2 ist. #12557 von Adrin Jalali.

  • Enhancement SVM-Schätzer lösen nun einen spezifischeren Fehler aus, wenn kernel='precomputed' und auf nicht-quadratische Daten trainiert wird. #14336 von Gregory Dexter.

  • Fix svm.SVC, svm.SVR, svm.NuSVR und svm.OneClassSVM generierten ein ungültiges Modell, wenn sie negative oder Nullwerte für den Parameter sample_weight in der Methode fit() erhielten. Dieses Verhalten trat nur in einigen Grenzfallszenarien auf. Jetzt wird in diesen Fällen fit() mit einer Ausnahme fehlschlagen. #14286 von Alex Shacked.

  • Fix Das Attribut n_support_ von svm.SVR und svm.OneClassSVM war zuvor nicht initialisiert und hatte die Größe 2. Es hat nun die Größe 1 mit dem korrekten Wert. #15099 von Nicolas Hug.

  • Fix Ein Fehler in BaseLibSVM._sparse_fit wurde behoben, bei dem n_SV=0 einen ZeroDivisionError auslöste. #14894 von Danna Naser.

  • Fix Der liblinear-Solver unterstützt nun sample_weight. #15038 von Guillaume Lemaitre.

sklearn.tree#

sklearn.utils#

  • Feature check_estimator kann nun Prüfungen generieren, indem generate_only=True gesetzt wird. Zuvor wurde die Ausführung von check_estimator gestoppt, sobald die erste Prüfung fehlschlug. Mit generate_only=True können alle Prüfungen unabhängig voneinander ausgeführt werden und die fehlerhaften gemeldet werden. Lesen Sie mehr in Eigene Schätzer erstellen. #14381 von Thomas Fan.

  • Feature Fügt einen pytest-spezifischen Decorator, parametrize_with_checks, hinzu, um Schätzerprüfungen für eine Liste von Schätzern zu parametrisieren. #14381 von Thomas Fan.

  • Feature Eine neue Zufallsvariable, utils.fixes.loguniform, implementiert eine log-uniforme Zufallsvariable (z.B. zur Verwendung in RandomizedSearchCV). Zum Beispiel sind die Ergebnisse 1, 10 und 100 alle gleich wahrscheinlich für loguniform(1, 100). Siehe #11232 von Scott Sievert und Nathaniel Saul, und SciPy PR 10815.

  • Enhancement utils.safe_indexing (jetzt veraltet) akzeptiert einen Parameter axis, um Array-ähnliche Strukturen über Zeilen und Spalten zu indizieren. Die Spaltenindizierung kann auf NumPy-Arrays, SciPy-Sparse-Matrizen und Pandas DataFrames angewendet werden. Eine weitere Refaktorierung wurde durchgeführt. #14035 und #14475 von Guillaume Lemaitre.

  • Enhancement utils.extmath.safe_sparse_dot funktioniert zwischen 3D+ ndarrays und Sparse-Matrizen. #14538 von Jérémie du Boisberranger.

  • Fix utils.check_array löst nun einen Fehler aus, anstatt NaN in Integer umzuwandeln. #14872 von Roman Yurchak.

  • Fix utils.check_array erkennt nun numerische dtypes in Pandas DataFrames korrekt, was einen Fehler behebt, bei dem float32 unnötigerweise zu float64 hochgestuft wurde. #15094 von Andreas Müller.

  • API Change Die folgenden Hilfsmittel sind veraltet und nun privat

    • choose_check_classifiers_labels

    • enforce_estimator_tags_y

    • mocking.MockDataFrame

    • mocking.CheckingClassifier

    • optimize.newton_cg

    • random.random_choice_csc

    • utils.choose_check_classifiers_labels

    • utils.enforce_estimator_tags_y

    • utils.optimize.newton_cg

    • utils.random.random_choice_csc

    • utils.safe_indexing

    • utils.mocking

    • utils.fast_dict

    • utils.seq_dataset

    • utils.weight_vector

    • utils.fixes.parallel_helper (entfernt)

    • Alle aus utils.testing außer all_estimators, das sich nun in utils befindet.

sklearn.isotonic#

Sonstiges#

  • Fix Portiert lobpcg aus SciPy, was einige Fehlerbehebungen implementiert, aber nur in Version 1.3+ verfügbar ist. #13609 und #14971 von Guillaume Lemaitre.

  • API Change Scikit-learn konvertiert nun jede Eingabedatenstruktur, die ein Duck Array implementiert, in ein NumPy-Array (mittels __array__), um ein konsistentes Verhalten sicherzustellen, anstatt sich auf __array_function__ zu verlassen (siehe NEP 18). #14702 von Andreas Müller.

  • API Change Ersetzt manuelle Prüfungen durch check_is_fitted. Fehler, die beim Verwenden eines nicht trainierten Schätzers auftreten, sind nun einheitlicher. #13013 von Agamemnon Krasoulis.

Änderungen an Schätzerprüfungen#

Diese Änderungen betreffen hauptsächlich Bibliotheksentwickler.

  • Schätzer werden nun aufgefordert, einen NotFittedError auszulösen, wenn predict oder transform vor fit aufgerufen wird; zuvor war ein AttributeError oder ValueError akzeptabel. #13013 von Agamemnon Krasoulis.

  • Binär-only Klassifizierer werden nun in den Schätzerprüfungen unterstützt. Solche Klassifizierer müssen das Estimator-Tag binary_only=True haben. #13875 von Trevor Stephens.

  • Schätzer werden aufgefordert, Eingabedaten (X, y, sample_weights) in ein numpy.ndarray zu konvertieren und niemals __array_function__ auf dem ursprünglichen Datentyp aufzurufen, der übergeben wird (siehe NEP 18). #14702 von Andreas Müller.

  • Das Estimator-Tag requires_positive_X (für Modelle, die X als nicht-negativ erfordern) wird nun von utils.estimator_checks.check_estimator verwendet, um sicherzustellen, dass eine ordnungsgemäße Fehlermeldung ausgegeben wird, wenn X negative Einträge enthält. #14680 von Alex Gramfort.

  • Prüfung hinzugefügt, dass paarweise Schätzer auf nicht-quadratische Daten Fehler auslösen #14336 von Gregory Dexter.

  • Zwei gängige Multioutput-Schätzertests utils.estimator_checks.check_classifier_multioutput und utils.estimator_checks.check_regressor_multioutput hinzugefügt. #13392 von Rok Mihevc.

  • Fix check_transformer_data_not_an_array zu Prüfungen hinzugefügt, die fehlten

  • Fix Die Auflösung von Estimator-Tags folgt nun dem regulären MRO. Sie waren früher nur einmal überschreibbar. #14884 von Andreas Müller.

Code- und Dokumentationsbeitragende

Danke an alle, die seit Version 0.21 zur Wartung und Verbesserung des Projekts beigetragen haben, darunter

Aaron Alphonsus, Abbie Popa, Abdur-Rahmaan Janhangeer, abenbihi, Abhinav Sagar, Abhishek Jana, Abraham K. Lagat, Adam J. Stewart, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Alec Peters, Alessandro Surace, Alexandre de Siqueira, Alexandre Gramfort, alexgoryainov, Alex Henrie, Alex Itkes, alexshacked, Allen Akinkunle, Anaël Beaugnon, Anders Kaseorg, Andrea Maldonado, Andrea Navarrete, Andreas Mueller, Andreas Schuderer, Andrew Nystrom, Angela Ambroz, Anisha Keshavan, Ankit Jha, Antonio Gutierrez, Anuja Kelkar, Archana Alva, arnaudstiegler, arpanchowdhry, ashimb9, Ayomide Bamidele, Baran Buluttekin, barrycg, Bharat Raghunathan, Bill Mill, Biswadip Mandal, blackd0t, Brian G. Barkley, Brian Wignall, Bryan Yang, c56pony, camilaagw, cartman_nabana, catajara, Cat Chenal, Cathy, cgsavard, Charles Vesteghem, Chiara Marmo, Chris Gregory, Christian Lorentzen, Christos Aridas, Dakota Grusak, Daniel Grady, Daniel Perry, Danna Naser, DatenBergwerk, David Dormagen, deeplook, Dillon Niederhut, Dong-hee Na, Dougal J. Sutherland, DrGFreeman, Dylan Cashman, edvardlindelof, Eric Larson, Eric Ndirangu, Eunseop Jeong, Fanny, federicopisanu, Felix Divo, flaviomorelli, FranciDona, Franco M. Luque, Frank Hoang, Frederic Haase, g0g0gadget, Gabriel Altay, Gabriel do Vale Rios, Gael Varoquaux, ganevgv, gdex1, getgaurav2, Gideon Sonoiya, Gordon Chen, gpapadok, Greg Mogavero, Grzegorz Szpak, Guillaume Lemaitre, Guillem García Subies, H4dr1en, hadshirt, Hailey Nguyen, Hanmin Qin, Hannah Bruce Macdonald, Harsh Mahajan, Harsh Soni, Honglu Zhang, Hossein Pourbozorg, Ian Sanders, Ingrid Spielman, J-A16, jaehong park, Jaime Ferrando Huertas, James Hill, James Myatt, Jay, jeremiedbb, Jérémie du Boisberranger, jeromedockes, Jesper Dramsch, Joan Massich, Joanna Zhang, Joel Nothman, Johann Faouzi, Jonathan Rahn, Jon Cusick, Jose Ortiz, Kanika Sabharwal, Katarina Slama, kellycarmody, Kennedy Kang’ethe, Kensuke Arai, Kesshi Jordan, Kevad, Kevin Loftis, Kevin Winata, Kevin Yu-Sheng Li, Kirill Dolmatov, Kirthi Shankar Sivamani, krishna katyal, Lakshmi Krishnan, Lakshya KD, LalliAcqua, lbfin, Leland McInnes, Léonard Binet, Loic Esteve, loopyme, lostcoaster, Louis Huynh, lrjball, Luca Ionescu, Lutz Roeder, MaggieChege, Maithreyi Venkatesh, Maltimore, Maocx, Marc Torrellas, Marie Douriez, Markus, Markus Frey, Martina G. Vilas, Martin Oywa, Martin Thoma, Masashi SHIBATA, Maxwell Aladago, mbillingr, m-clare, Meghann Agarwal, m.fab, Micah Smith, miguelbarao, Miguel Cabrera, Mina Naghshhnejad, Ming Li, motmoti, mschaffenroth, mthorrell, Natasha Borders, nezar-a, Nicolas Hug, Nidhin Pattaniyi, Nikita Titov, Nishan Singh Mann, Nitya Mandyam, norvan, notmatthancock, novaya, nxorable, Oleg Stikhin, Oleksandr Pavlyk, Olivier Grisel, Omar Saleem, Owen Flanagan, panpiort8, Paolo, Paolo Toccaceli, Paresh Mathur, Paula, Peng Yu, Peter Marko, pierretallotte, poorna-kumar, pspachtholz, qdeffense, Rajat Garg, Raphaël Bournhonesque, Ray, Ray Bell, Rebekah Kim, Reza Gharibi, Richard Payne, Richard W, rlms, Robert Juergens, Rok Mihevc, Roman Feldbauer, Roman Yurchak, R Sanjabi, RuchitaGarde, Ruth Waithera, Sackey, Sam Dixon, Samesh Lakhotia, Samuel Taylor, Sarra Habchi, Scott Gigante, Scott Sievert, Scott White, Sebastian Pölsterl, Sergey Feldman, SeWook Oh, she-dares, Shreya V, Shubham Mehta, Shuzhe Xiao, SimonCW, smarie, smujjiga, Sönke Behrends, Soumirai, Sourav Singh, stefan-matcovici, steinfurt, Stéphane Couvreur, Stephan Tulkens, Stephen Cowley, Stephen Tierney, SylvainLan, th0rwas, theoptips, theotheo, Thierno Ibrahima DIOP, Thomas Edwards, Thomas J Fan, Thomas Moreau, Thomas Schmitt, Tilen Kusterle, Tim Bicker, Timsaur, Tim Staley, Tirth Patel, Tola A, Tom Augspurger, Tom Dupré la Tour, topisan, Trevor Stephens, ttang131, Urvang Patel, Vathsala Achar, veerlosar, Venkatachalam N, Victor Luzgin, Vincent Jeanselme, Vincent Lostanlen, Vladimir Korolev, vnherdeiro, Wenbo Zhao, Wendy Hu, willdarnell, William de Vazelhes, wolframalpha, xavier dupré, xcjason, x-martian, xsat, xun-tang, Yinglr, yokasre, Yu-Hang “Maxin” Tang, Yulia Zamriy, Zhao Feng