Version 1.1#

Für eine kurze Beschreibung der wichtigsten Highlights des Releases verweisen wir auf Release Highlights für scikit-learn 1.1.

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

Oktober 2022

Dieses Bugfix-Release enthält nur Korrekturen zur Kompatibilität mit der neuesten SciPy-Version >= 1.9.2. Bemerkenswerte Änderungen sind

  • Fix `msvcp140.dll` in die scikit-learn Wheels einfügen, da es aus den neuesten SciPy Wheels entfernt wurde. #24631 von Chiara Marmo.

  • Enhancement Wheels für Python 3.11 erstellen. #24446 von Chiara Marmo.

Weitere Fehlerkorrekturen werden in der nächsten 1.2-Version verfügbar sein, die in den kommenden Wochen veröffentlicht wird.

Beachten Sie, dass die Unterstützung für 32-Bit-Python unter Windows in dieser Version eingestellt wurde. Dies liegt daran, dass SciPy 1.9.2 ebenfalls die Unterstützung für diese Plattform eingestellt hat. Windows-Benutzern wird empfohlen, stattdessen die 64-Bit-Version von Python zu installieren.

Version 1.1.2#

August 2022

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.

  • Fix `manifold.TSNE` löst nun einen `ValueError` aus, wenn es mit `perplexity>=n_samples` gefittet wird, um die mathematische Korrektheit des Algorithmus zu gewährleisten. #10805 von Mathias Andersen und #23471 von Meekail Zain.

Änderungsprotokoll#

  • Fix Eine Standard-HTML-Darstellung wird für Meta-Estimators mit ungültigen Parametern angezeigt. #24015 von Thomas Fan.

  • Fix Unterstützung für F-kontinuierliche Arrays für Estimators und Funktionen, deren Backends in 1.1 geändert wurden. #23990 von Julien Jerphanion.

  • Fix Wheels sind nun für MacOS 10.9 und höher verfügbar. #23833 von Thomas Fan.

sklearn.base#

  • Fix Die Methode `get_params` der Klasse `base.BaseEstimator` unterstützt nun Estimators mit Parametern vom Typ `type`, die die Methode `get_params` haben. #24017 von Henry Sorsky.

sklearn.cluster#

  • Fix Ein Fehler in `cluster.Birch`, der einen Fehler auslösen konnte, wenn ein Knoten aufgeteilt wird und Duplikate im Datensatz vorhanden sind, wurde behoben. #23395 von Jérémie du Boisberranger.

sklearn.feature_selection#

  • Fix `feature_selection.SelectFromModel` wählt standardmäßig den Schwellenwert 1e-5, wenn der Estimator entweder `linear_model.ElasticNet` oder `linear_model.ElasticNetCV` mit `l1_ratio` gleich 1 oder `linear_model.LassoCV` ist. #23636 von Hao Chun Chang.

sklearn.impute#

  • Fix `impute.SimpleImputer` verwendet den beim `fit` gesehenen `dtype` für `transform`, wenn der `dtype` object ist. #22063 von Thomas Fan.

sklearn.linear_model#

  • Fix Dtype-bewusste Toleranzen für die Validierung von Gram-Matrizen (vom Benutzer übergeben oder vorab berechnet) verwenden. #22059 von Malte S. Kurz.

  • Fix Ein Fehler in `linear_model.LogisticRegression` mit `solver="newton-cg"`, `fit_intercept=True` und einem einzelnen Feature wurde behoben. #23608 von Tom Dupre la Tour.

sklearn.manifold#

  • Fix `manifold.TSNE` löst nun einen `ValueError` aus, wenn es mit `perplexity>=n_samples` gefittet wird, um die mathematische Korrektheit des Algorithmus zu gewährleisten. #10805 von Mathias Andersen und #23471 von Meekail Zain.

sklearn.metrics#

  • Fix Fehlermeldung von `metrics.coverage_error` für 1D-Array-Input behoben. #23548 von Hao Chun Chang.

sklearn.preprocessing#

  • Fix `preprocessing.OrdinalEncoder.inverse_transform` behandelt Fälle, in denen `unknown_value` oder `encoded_missing_value` `nan` ist, korrekt. #24087 von Thomas Fan.

sklearn.tree#

  • Fix Ein Fehler mit ungültigem Speicherzugriff während des `fit` in `tree.DecisionTreeRegressor` und `tree.DecisionTreeClassifier` wurde behoben. #23273 von Thomas Fan.

Version 1.1.1#

Mai 2022

Änderungsprotokoll#

  • Enhancement Die Fehlermeldung wird verbessert, wenn `model_selection.HalvingGridSearchCV`, `model_selection.HalvingRandomSearchCV` oder `impute.IterativeImputer` ohne den experimentellen Flag importiert werden. #23194 von Thomas Fan.

  • Enhancement Eine Erweiterung in doc/conf.py wurde hinzugefügt, um automatisch die Liste der Estimators zu generieren, die NaN-Werte verarbeiten. #23198 von Lise Kleiber, Zhehao Liu und Chiara Marmo.

sklearn.datasets#

  • Fix Timeouts in `datasets.fetch_openml` werden vermieden, indem kein `timeout`-Argument übergeben wird. #23358 von Loïc Estève.

sklearn.decomposition#

  • Fix Vermeidung einer irreführenden Warnung in `decomposition.IncrementalPCA` wenn `n_samples == n_components`. #23264 von Lucy Liu.

sklearn.feature_selection#

  • Fix Die Methode `partial_fit` von `feature_selection.SelectFromModel` führt nun Validierungen für die Parameter `max_features` und `feature_names_in` durch. #23299 von Long Bao.

sklearn.metrics#

  • Fix `metrics.precision_recall_curve` wird nun so korrigiert, dass die Precision-Recall bei 100% Recall berechnet wird. Die Precision-Recall-Kurve zeigt nun den letzten Punkt an, der einem Klassifikator entspricht, der immer die positive Klasse vorhersagt: Recall=100% und Precision=Klassenbalance. #23214 von Stéphane Collot und Max Baak.

sklearn.preprocessing#

  • Fix `preprocessing.PolynomialFeatures` mit `degree` gleich 0 löst einen Fehler aus, wenn `include_bias` auf `False` gesetzt ist, und gibt ein einzelnes konstantes Array aus, wenn `include_bias` auf `True` gesetzt ist. #23370 von Zhehao Liu.

sklearn.tree#

  • Fix Eine Performance-Regression bei Merkmalen mit geringer Kardinalität für `tree.DecisionTreeClassifier`, `tree.DecisionTreeRegressor`, `ensemble.RandomForestClassifier`, `ensemble.RandomForestRegressor`, `ensemble.GradientBoostingClassifier` und `ensemble.GradientBoostingRegressor` wurde behoben. #23410 von Loïc Estève.

sklearn.utils#

  • Fix `utils.class_weight.compute_sample_weight` funktioniert nun auch mit sparse `y`. #23115 von kernc.

Version 1.1.0#

Mai 2022

Minimale Abhängigkeiten#

Version 1.1.0 von scikit-learn erfordert Python 3.8+, NumPy 1.17.3+ und SciPy 1.3.2+. Optionale minimale Abhängigkeit ist Matplotlib 3.1.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.

  • Efficiency `cluster.KMeans` verwendet nun standardmäßig `algorithm="lloyd"` anstelle von `algorithm="auto"`, was äquivalent zu `algorithm="elkan"` war. Lloyd's Algorithmus und Elkan's Algorithmus konvergieren zum selben Ergebnis, abgesehen von numerischen Rundungsfehlern, aber im Allgemeinen benötigt Lloyd's Algorithmus viel weniger Speicher und ist oft schneller.

  • Efficiency Das Fitten von `tree.DecisionTreeClassifier`, `tree.DecisionTreeRegressor`, `ensemble.RandomForestClassifier`, `ensemble.RandomForestRegressor`, `ensemble.GradientBoostingClassifier` und `ensemble.GradientBoostingRegressor` ist dank eines neuen Sortieralgorithmus zur Ermittlung der besten Teilung im Durchschnitt 15% schneller als in früheren Versionen. Modelle können sich aufgrund einer anderen Handhabung von Teilungen mit gleichwertigen Kriteriumswerten unterscheiden: Sowohl der alte als auch der neue Sortieralgorithmus sind instabile Sortieralgorithmen. #22868 von Thomas Fan.

  • Fix Die Eigenvektor-Initialisierung für `cluster.SpectralClustering` und `manifold.SpectralEmbedding` sampliert nun aus einer Gauß-Verteilung, wenn der Solver `'amg'` oder `'lobpcg'` verwendet wird. Diese Änderung verbessert die numerische Stabilität des Solvers, kann aber zu einem anderen Modell führen.

  • Fix `feature_selection.f_regression` und `feature_selection.r_regression` geben nun standardmäßig einen endlichen Score zurück anstelle von `np.nan` und `np.inf` für einige Eckfälle. Sie können `force_finite=False` verwenden, wenn Sie wirklich nicht-endliche Werte erhalten und das alte Verhalten beibehalten möchten.

  • Fix Pandas DataFrames mit nur Nicht-String-Spalten, wie z. B. ein MultiIndex, geben keine Warnung mehr aus, wenn sie in einen Estimator übergeben werden. Estimators ignorieren weiterhin die Spaltennamen in DataFrames mit Nicht-String-Spalten. Damit `feature_names_in_` definiert ist, müssen alle Spalten Strings sein. #22410 von Thomas Fan.

  • Fix `preprocessing.KBinsDiscretizer` hat die Handhabung von Bin-Grenzen geringfügig geändert, was zu einer anderen Kodierung mit denselben Daten führen kann.

  • Fix `calibration.calibration_curve` hat die Handhabung von Bin-Grenzen geringfügig geändert, was zu einer anderen Kurve bei denselben Daten führen kann.

  • Fix `discriminant_analysis.LinearDiscriminantAnalysis` verwendet nun den korrekten Varianzskalierungskoeffizienten, was zu einem anderen Modellverhalten führen kann.

  • Fix `feature_selection.SelectFromModel.fit` und `feature_selection.SelectFromModel.partial_fit` können nun mit `prefit=True` aufgerufen werden. `estimators_` wird eine tiefe Kopie von `estimator` sein, wenn `prefit=True` gesetzt ist. #23271 von Guillaume Lemaitre.

Changelog#

sklearn.calibration#

  • Enhancement `calibration.calibration_curve` akzeptiert einen Parameter `pos_label`, um die positive Klassenbezeichnung anzugeben. #21032 von Guillaume Lemaitre.

  • Enhancement `calibration.CalibratedClassifierCV.fit` unterstützt nun das Übergeben von `fit_params`, die an den `base_estimator` weitergeleitet werden. #18170 von Benjamin Bossan.

  • Enhancement `calibration.CalibrationDisplay` akzeptiert einen Parameter `pos_label`, um diese Information dem Plot hinzuzufügen. #21038 von Guillaume Lemaitre.

  • Fix `calibration.calibration_curve` behandelt Bin-Grenzen nun konsistenter. #14975 von Andreas Müller und #22526 von Meekail Zain.

  • API Change Der Parameter `normalize` von `calibration.calibration_curve` ist nun veraltet und wird in Version 1.3 entfernt. Es wird empfohlen, eine korrekte Wahrscheinlichkeit (d. h. die `predict_proba`-positive Klasse eines Klassifikators) für `y_prob` zu verwenden. #23095 von Jordan Silke.

sklearn.cluster#

  • Major Feature `cluster.BisectingKMeans` führt den Bisecting K-Means-Algorithmus ein. #20031 von Michal Krawczyk, Tom Dupre la Tour und Jérémie du Boisberranger.

  • Enhancement `cluster.SpectralClustering` und `cluster.spectral_clustering` enthalten nun die neue Methode `'cluster_qr'`, die Stichproben im Einbettungsraum clustert, als Alternative zu den bestehenden Methoden `'kmeans'` und `'discrete'`. Weitere Details finden Sie unter `cluster.spectral_clustering`. #21148 von Andrew Knyazev.

  • Erweiterung Fügt get_feature_names_out zu cluster.Birch, cluster.FeatureAgglomeration, cluster.KMeans, cluster.MiniBatchKMeans hinzu. #22255 von Thomas Fan.

  • Erweiterung cluster.SpectralClustering löst nun konsistente Fehlermeldungen aus, wenn ungültige Werte für n_clusters, n_init, gamma, n_neighbors, eigen_tol oder degree übergeben werden. #21881 von Hugo Vassard.

  • Erweiterung cluster.AffinityPropagation gibt nun Cluster-Zentren und Labels zurück, falls diese existieren, auch wenn das Modell nicht vollständig konvergiert ist. Bei der Rückgabe dieser potenziell degenerierten Cluster-Zentren und Labels wird eine neue Warnmeldung angezeigt. Wenn keine Cluster-Zentren konstruiert wurden, bleiben die Cluster-Zentren eine leere Liste, die Labels werden auf -1 gesetzt und die ursprüngliche Warnmeldung wird angezeigt. #22217 von Meekail Zain.

  • Effizienz In cluster.KMeans ist der Standardwert für algorithm nun "lloyd", was dem vollständigen klassischen EM-artigen Algorithmus entspricht. Sowohl "auto" als auch "full" sind veraltet und werden in Version 1.3 entfernt. Sie sind nun Aliase für "lloyd". Der vorherige Standard war "auto", das auf Elkan's Algorithmus zurückgriff. Lloyd's Algorithmus benötigt weniger Speicher als Elkan's, ist bei vielen Datensätzen schneller und liefert identische Ergebnisse, daher die Änderung. #21735 von Aurélien Geron.

  • Korrektur Der Parameter init von cluster.KMeans unterstützt nun korrekt Array-ähnliche Eingaben und NumPy-String-Skalare. #22154 von Thomas Fan.

sklearn.compose#

sklearn.covariance#

sklearn.cross_decomposition#

sklearn.datasets#

  • Funktion datasets.load_files akzeptiert nun eine Ignorierliste und eine Zulassungsliste basierend auf Dateierweiterungen. #19747 von Tony Attalla und #22498 von Meekail Zain.

  • Erweiterung datasets.make_swiss_roll unterstützt nun das optionale Argument `hole`; wenn auf `True` gesetzt, gibt es den Swiss-Hole-Datensatz zurück. #21482 von Sebastian Pujalte.

  • Erweiterung datasets.make_blobs kopiert während des Generierungsprozesses keine Daten mehr, wodurch weniger Speicher verbraucht wird. #22412 von Zhehao Liu.

  • Erweiterung datasets.load_diabetes akzeptiert nun den Parameter scaled, um das Laden unskalierter Daten zu ermöglichen. Die skalierte Version dieses Datensatzes wird nun aus den unskalierten Daten berechnet und kann leicht von früheren Versionen abweichen (innerhalb einer absoluten Toleranz von 1e-4). #16605 von Mandy Gu.

  • Erweiterung datasets.fetch_openml verfügt nun über zwei optionale Argumente n_retries und delay. Standardmäßig wird datasets.fetch_openml im Falle eines Netzwerkfehlers dreimal mit einer Verzögerung zwischen den Versuchen wiederholt. #21901 von Rileran.

  • Korrektur datasets.fetch_covtype ist nun nebenläufigkeits-sicher: Daten werden in ein temporäres Verzeichnis heruntergeladen, bevor sie in das Datenverzeichnis verschoben werden. #23113 von Ilion Beyst.

  • API-Änderung datasets.make_sparse_coded_signal akzeptiert nun einen Parameter data_transposed, um die Form der Matrix X explizit anzugeben. Das Standardverhalten True gibt eine transponierte Matrix X zurück, die einer Form von (n_features, n_samples) entspricht. Der Standardwert wird in Version 1.3 zu False geändert. #21425 von Gabriel Stefanini Vicente.

sklearn.decomposition#

sklearn.discriminant_analysis#

sklearn.dummy#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.gaussian_process#

sklearn.impute#

sklearn.inspection#

sklearn.isotonic#

sklearn.kernel_approximation#

sklearn.linear_model#

sklearn.manifold#

sklearn.metrics#

sklearn.mixture#

sklearn.model_selection#

sklearn.multiclass#

sklearn.neighbors#

sklearn.neural_network#

sklearn.pipeline#

sklearn.preprocessing#

sklearn.random_projection#

sklearn.svm#

sklearn.tree#

sklearn.utils#

Code- und Dokumentationsbeitragende

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

2357juan, Abhishek Gupta, adamgonzo, Adam Li, adijohar, Aditya Kumawat, Aditya Raghuwanshi, Aditya Singh, Adrian Trujillo Duron, Adrin Jalali, ahmadjubair33, AJ Druck, aj-white, Alan Peixinho, Alberto Mario Ceballos-Arroyo, Alek Lefebvre, Alex, Alexandr, Alexandre Gramfort, alexanmv, almeidayoel, Amanda Dsouza, Aman Sharma, Amar pratap singh, Amit, amrcode, András Simon, Andreas Grivas, Andreas Mueller, Andrew Knyazev, Andriy, Angus L’Herrou, Ankit Sharma, Anne Ducout, Arisa, Arth, arthurmello, Arturo Amor, ArturoAmor, Atharva Patil, aufarkari, Aurélien Geron, avm19, Ayan Bag, baam, Bardiya Ak, Behrouz B, Ben3940, Benjamin Bossan, Bharat Raghunathan, Bijil Subhash, bmreiniger, Brandon Truth, Brenden Kadota, Brian Sun, cdrig, Chalmer Lowe, Chiara Marmo, Chitteti Srinath Reddy, Chloe-Agathe Azencott, Christian Lorentzen, Christian Ritter, christopherlim98, Christoph T. Weidemann, Christos Aridas, Claudio Salvatore Arcidiacono, combscCode, Daniela Fernandes, darioka, Darren Nguyen, Dave Eargle, David Gilbertson, David Poznik, Dea María Léon, Dennis Osei, DessyVV, Dev514, Dimitri Papadopoulos Orfanos, Diwakar Gupta, Dr. Felix M. Riese, drskd, Emiko Sano, Emmanouil Gionanidis, EricEllwanger, Erich Schubert, Eric Larson, Eric Ndirangu, ErmolaevPA, Estefania Barreto-Ojeda, eyast, Fatima GASMI, Federico Luna, Felix Glushchenkov, fkaren27, Fortune Uwha, FPGAwesome, francoisgoupil, Frans Larsson, ftorres16, Gabor Berei, Gabor Kertesz, Gabriel Stefanini Vicente, Gabriel S Vicente, Gael Varoquaux, GAURAV CHOUDHARY, Gauthier I, genvalen, Geoffrey-Paris, Giancarlo Pablo, glennfrutiz, gpapadok, Guillaume Lemaitre, Guillermo Tomás Fernández Martín, Gustavo Oliveira, Haidar Almubarak, Hannah Bohle, Hansin Ahuja, Haoyin Xu, Haya, Helder Geovane Gomes de Lima, henrymooresc, Hideaki Imamura, Himanshu Kumar, Hind-M, hmasdev, hvassard, i-aki-y, iasoon, Inclusive Coding Bot, Ingela, iofall, Ishan Kumar, Jack Liu, Jake Cowton, jalexand3r, J Alexander, Jauhar, Jaya Surya Kommireddy, Jay Stanley, Jeff Hale, je-kr, JElfner, Jenny Vo, Jérémie du Boisberranger, Jihane, Jirka Borovec, Joel Nothman, Jon Haitz Legarreta Gorroño, Jordan Silke, Jorge Ciprián, Jorge Loayza, Joseph Chazalon, Joseph Schwartz-Messing, Jovan Stojanovic, JSchuerz, Juan Carlos Alfaro Jiménez, Juan Martin Loyola, Julien Jerphanion, katotten, Kaushik Roy Chowdhury, Ken4git, Kenneth Prabakaran, kernc, Kevin Doucet, KimAYoung, Koushik Joshi, Kranthi Sedamaki, krishna kumar, krumetoft, lesnee, Lisa Casino, Logan Thomas, Loic Esteve, Louis Wagner, LucieClair, Lucy Liu, Luiz Eduardo Amaral, Magali, MaggieChege, Mai, mandjevant, Mandy Gu, Manimaran, MarcoM, Marco Wurps, Maren Westermann, Maria Boerner, MarieS-WiMLDS, Martel Corentin, martin-kokos, mathurinm, Matías, matjansen, Matteo Francia, Maxwell, Meekail Zain, Megabyte, Mehrdad Moradizadeh, melemo2, Michael I Chen, michalkrawczyk, Micky774, milana2, millawell, Ming-Yang Ho, Mitzi, miwojc, Mizuki, mlant, Mohamed Haseeb, Mohit Sharma, Moonkyung94, mpoemsl, MrinalTyagi, Mr. Leu, msabatier, murata-yu, N, Nadirhan Şahin, Naipawat Poolsawat, NartayXD, nastegiano, nathansquan, nat-salt, Nicki Skafte Detlefsen, Nicolas Hug, Niket Jain, Nikhil Suresh, Nikita Titov, Nikolay Kondratyev, Ohad Michel, Oleksandr Husak, Olivier Grisel, partev, Patrick Ferreira, Paul, pelennor, PierreAttard, Piet Brömmel, Pieter Gijsbers, Pinky, poloso, Pramod Anantharam, puhuk, Purna Chandra Mansingh, QuadV, Rahil Parikh, Randall Boyes, randomgeek78, Raz Hoshia, Reshama Shaikh, Ricardo Ferreira, Richard Taylor, Rileran, Rishabh, Robin Thibaut, Rocco Meli, Roman Feldbauer, Roman Yurchak, Ross Barnowski, rsnegrin, Sachin Yadav, sakinaOuisrani, Sam Adam Day, Sanjay Marreddi, Sebastian Pujalte, SEELE, SELEE, Seyedsaman (Sam) Emami, ShanDeng123, Shao Yang Hong, sharmadharmpal, shaymerNaturalint, Shuangchi He, Shubhraneel Pal, siavrez, slishak, Smile, spikebh, sply88, Srinath Kailasa, Stéphane Collot, Sultan Orazbayev, Sumit Saha, Sven Eschlbeck, Sven Stehle, Swapnil Jha, Sylvain Marié, Takeshi Oura, Tamires Santana, Tenavi, teunpe, Theis Ferré Hjortkjær, Thiruvenkadam, Thomas J. Fan, t-jakubek, toastedyeast, Tom Dupré la Tour, Tom McTiernan, TONY GEORGE, Tyler Martin, Tyler Reddy, Udit Gupta, Ugo Marchand, Varun Agrawal, Venkatachalam N, Vera Komeyer, victoirelouis, Vikas Vishwakarma, Vikrant khedkar, Vladimir Chernyy, Vladimir Kim, WeijiaDu, Xiao Yuan, Yar Khine Phyo, Ying Xiong, yiyangq, Yosshi999, Yuki Koyama, Zach Deane-Mayer, Zeel B Patel, zempleni, zhenfisher, 赵丰 (Zhao Feng)