Version 0.23#

Eine kurze Beschreibung der wichtigsten Highlights der Veröffentlichung finden Sie unter Release Highlights für scikit-learn 0.23.

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

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.)

Änderungsprotokoll#

sklearn.cluster#

sklearn.decomposition#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.linear_model#

sklearn.manifold#

sklearn.metrics#

sklearn.pipeline#

sklearn.utils#

Version 0.23.1#

18. Mai 2020

Änderungsprotokoll#

sklearn.cluster#

Sonstiges#

  • Fix Behoben wurde ein Fehler in der repr von Drittanbieter-Schätzern, die einen **kwargs-Parameter in ihrem Konstruktor verwenden, wenn changed_only True ist, was jetzt der Standard ist. #17205 von Nicolas Hug.

Version 0.23.0#

12. Mai 2020

Erzwingen von Keyword-Only-Argumenten#

Um eine klare und eindeutige Verwendung der Bibliothek zu fördern, werden die meisten Konstruktor- und Funktionsparameter jetzt als Keyword-Argumente (d. h. mit der Syntax param=value) anstelle von Positionsargumenten erwartet. Um den Übergang zu erleichtern, wird eine FutureWarning ausgegeben, wenn ein Keyword-Only-Parameter als Positionsargument verwendet wird. In Version 1.0 (Umbenennung von 0.25) werden diese Parameter streng Keyword-Only sein und eine TypeError auslösen. #15005 von Joel Nothman, Adrin Jalali, Thomas Fan und Nicolas Hug. Weitere Details finden Sie unter SLEP009.

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

sklearn.compose#

sklearn.datasets#

sklearn.decomposition#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.gaussian_process#

sklearn.impute#

sklearn.inspection#

sklearn.linear_model#

sklearn.metrics#

sklearn.model_selection#

sklearn.multioutput#

sklearn.naive_bayes#

sklearn.neural_network#

sklearn.inspection#

sklearn.preprocessing#

sklearn.semi_supervised#

sklearn.svm#

  • Fix Efficiency Verbessert die Zufallszahlengeneratoren von libsvm und liblinear, die zur zufälligen Auswahl von Koordinaten in den Coordinate-Descent-Algorithmen verwendet werden. Die plattformabhängige C rand()-Funktion wurde verwendet, die unter Windows nur Zahlen bis 32767 generieren kann (siehe Blogbeitrag) und auch eine schlechte Randomisierungsleistung aufweist, wie in dieser Präsentation angedeutet wird. Sie wurde durch C++11 mt19937, einen Mersenne Twister, ersetzt, der auf allen Plattformen korrekt 31-Bit/63-Bit-Zufallszahlen generiert. Zusätzlich wurde der grobe "Modulo"-Nachbearbeitungsfilter zur Erzeugung einer Zufallszahl in einem begrenzten Intervall durch die angepasste Lemire-Methode ersetzt, wie in diesem Blogbeitrag vorgeschlagen. Jedes Modell, das den svm.libsvm- oder den svm.liblinear-Löser verwendet, einschließlich svm.LinearSVC, svm.LinearSVR, svm.NuSVC, svm.NuSVR, svm.OneClassSVM, svm.SVC, svm.SVR, linear_model.LogisticRegression, ist betroffen. Insbesondere können Benutzer bei einer großen Anzahl von Stichproben (LibSVM) oder einer großen Anzahl von Features (LibLinear) eine bessere Konvergenz erwarten. #13511 von Sylvain Marié.

  • Fix Behebt die Verwendung von benutzerdefinierten Kerneln, die keine Float-Einträge akzeptieren, wie String-Kernel in svm.SVC und svm.SVR. Beachten Sie, dass benutzerdefinierte Kernel nun ihre Eingabe validieren müssen, während sie zuvor gültige numerische Arrays erhalten haben. #11296 von Alexandre Gramfort und Georgi Peev.

  • API Change Die Attribute probA_ und probB_ von svm.SVR und svm.OneClassSVM sind nun veraltet, da sie nicht nützlich waren. #15558 von Thomas Fan.

sklearn.tree#

sklearn.utils#

  • Major Feature Schätzer können nun mit einer Rich-HTML-Repräsentation angezeigt werden. Dies kann in Jupyter-Notebooks aktiviert werden, indem display='diagram' in set_config gesetzt wird. Das rohe HTML kann durch die Verwendung von utils.estimator_html_repr zurückgegeben werden. #14180 von Thomas Fan.

  • Enhancement Verbessert die Fehlermeldung in utils.validation.column_or_1d. #15926 von Loïc Estève.

  • Enhancement Fügt eine Warnung in utils.check_array für pandas sparse DataFrames hinzu. #16021 von Rushabh Vasani.

  • Enhancement utils.check_array konstruiert nun eine sparse Matrix aus einem Pandas DataFrame, der nur SparseArray-Spalten enthält. #16728 von Thomas Fan.

  • Enhancement utils.check_array unterstützt Pandas' nullable Integer-Datentyp mit fehlenden Werten, wenn force_all_finite auf False oder 'allow-nan' gesetzt ist. In diesem Fall werden die Daten in Gleitkommazahlen umgewandelt, wobei pd.NA-Werte durch np.nan ersetzt werden. Infolgedessen akzeptieren nun alle sklearn.preprocessing-Transformer, die numerische Eingaben mit fehlenden Werten als np.nan akzeptieren, auch die direkte Übergabe von Pandas DataFrames mit pd.Int* oder `pd.Uint*-Datentypen, die pd.NA als Markierung für fehlende Werte verwenden. #16508 von Thomas Fan.

  • API Change Das Übergeben von Klassen an utils.estimator_checks.check_estimator und utils.estimator_checks.parametrize_with_checks ist nun veraltet und die Unterstützung für Klassen wird in 0.24 entfernt. Übergeben Sie stattdessen Instanzen. #17032 von Nicolas Hug.

  • API-Änderung Das private Hilfsprogramm _safe_tags in utils.estimator_checks wurde entfernt. Daher sollten alle Tags über estimator._get_tags() bezogen werden. Beachten Sie, dass Mixins wie RegressorMixin in der MRO vor den Basisklassen stehen müssen, damit _get_tags() ordnungsgemäß funktioniert. #16950 von Nicolas Hug.

  • Fehlerbehebung utils.all_estimators gibt nun nur noch öffentliche Estimators zurück. #15380 von Thomas Fan.

Sonstiges#

  • Hauptfunktion Fügt eine HTML-Darstellung von Estimators hinzu, die in einem Jupyter Notebook oder Lab angezeigt werden kann. Diese Visualisierung wird durch Setzen der Option display in sklearn.set_config aktiviert. #14180 von Thomas Fan.

  • Verbesserung scikit-learn funktioniert nun fehlerfrei mit mypy. #16726 von Roman Yurchak.

  • API-Änderung Die meisten Estimators stellen nun ein Attribut n_features_in_ bereit. Dieses Attribut ist gleich der Anzahl der Merkmale, die an die fit-Methode übergeben wurden. Einzelheiten finden Sie unter SLEP010. #16112 von Nicolas Hug.

  • API-Änderung Estimators haben nun einen Tag requires_y, der standardmäßig False ist, außer bei Estimators, die von ~sklearn.base.RegressorMixin oder ~sklearn.base.ClassifierMixin erben. Dieser Tag wird verwendet, um sicherzustellen, dass eine entsprechende Fehlermeldung ausgegeben wird, wenn y erwartet wurde, aber None übergeben wurde. #16622 von Nicolas Hug.

  • API-Änderung Die Standardeinstellung print_changed_only wurde von False auf True geändert. Das bedeutet, dass die repr von Estimators nun prägnanter ist und nur die Parameter anzeigt, deren Standardwert geändert wurde, wenn ein Estimator ausgegeben wird. Sie können das frühere Verhalten wiederherstellen, indem Sie sklearn.set_config(print_changed_only=False) verwenden. Beachten Sie auch, dass es immer möglich ist, die Parameter eines beliebigen Estimators schnell mit est.get_params(deep=False) zu überprüfen. #17061 von Nicolas Hug.

Code- und Dokumentationsbeitragende

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

Abbie Popa, Adrin Jalali, Aleksandra Kocot, Alexandre Batisse, Alexandre Gramfort, Alex Henrie, Alex Itkes, Alex Liang, alexshacked, Alonso Silva Allende, Ana Casado, Andreas Mueller, Angela Ambroz, Ankit810, Arie Pratama Sutiono, Arunav Konwar, Baptiste Maingret, Benjamin Beier Liu, bernie gray, Bharathi Srinivasan, Bharat Raghunathan, Bibhash Chandra Mitra, Brian Wignall, brigi, Brigitta Sipőcz, Carlos H Brandt, CastaChick, castor, cgsavard, Chiara Marmo, Chris Gregory, Christian Kastner, Christian Lorentzen, Corrie Bartelheimer, Daniël van Gelder, Daphne, David Breuer, david-cortes, dbauer9, Divyaprabha M, Edward Qian, Ekaterina Borovikova, ELNS, Emily Taylor, Erich Schubert, Eric Leung, Evgeni Chasnovski, Fabiana, Facundo Ferrín, Fan, Franziska Boenisch, Gael Varoquaux, Gaurav Sharma, Geoffrey Bolmier, Georgi Peev, gholdman1, Gonthier Nicolas, Gregory Morse, Gregory R. Lee, Guillaume Lemaitre, Gui Miotto, Hailey Nguyen, Hanmin Qin, Hao Chun Chang, HaoYin, Hélion du Mas des Bourboux, Himanshu Garg, Hirofumi Suzuki, huangk10, Hugo van Kemenade, Hye Sung Jung, indecisiveuser, inderjeet, J-A16, Jérémie du Boisberranger, Jin-Hwan CHO, JJmistry, Joel Nothman, Johann Faouzi, Jon Haitz Legarreta Gorroño, Juan Carlos Alfaro Jiménez, judithabk6, jumon, Kathryn Poole, Katrina Ni, Kesshi Jordan, Kevin Loftis, Kevin Markham, krishnachaitanya9, Lam Gia Thuan, Leland McInnes, Lisa Schwetlick, lkubin, Loic Esteve, lopusz, lrajball, lucgiffon, lucyleeow, Lucy Liu, Lukas Kemkes, Maciej J Mikulski, Madhura Jayaratne, Magda Zielinska, maikia, Mandy Gu, Manimaran, Manish Aradwad, Maren Westermann, Maria, Mariana Meireles, Marie Douriez, Marielle, Mateusz Górski, mathurinm, Matt Hall, Maura Pintor, mc4229, meyer89, m.fab, Michael Shoemaker, Michał Słapek, Mina Naghshhnejad, mo, Mohamed Maskani, Mojca Bertoncelj, narendramukherjee, ngshya, Nicholas Won, Nicolas Hug, nicolasservel, Niklas, @nkish, Noa Tamir, Oleksandr Pavlyk, olicairns, Oliver Urs Lenz, Olivier Grisel, parsons-kyle-89, Paula, Pete Green, Pierre Delanoue, pspachtholz, Pulkit Mehta, Qizhi Jiang, Quang Nguyen, rachelcjordan, raduspaimoc, Reshama Shaikh, Riccardo Folloni, Rick Mackenbach, Ritchie Ng, Roman Feldbauer, Roman Yurchak, Rory Hartong-Redden, Rüdiger Busche, Rushabh Vasani, Sambhav Kothari, Samesh Lakhotia, Samuel Duan, SanthoshBala18, Santiago M. Mola, Sarat Addepalli, scibol, Sebastian Kießling, SergioDSR, Sergul Aydore, Shiki-H, shivamgargsya, SHUBH CHATTERJEE, Siddharth Gupta, simonamaggio, smarie, Snowhite, stareh, Stephen Blystone, Stephen Marsh, Sunmi Yoon, SylvainLan, talgatomarov, tamirlan1, th0rwas, theoptips, Thomas J Fan, Thomas Li, Thomas Schmitt, Tim Nonner, Tim Vink, Tiphaine Viard, Tirth Patel, Titus Christian, Tom Dupré la Tour, trimeta, Vachan D A, Vandana Iyer, Venkatachalam N, waelbenamara, wconnell, wderose, wenliwyan, Windber, wornbb, Yu-Hang “Maxin” Tang