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#
API-Änderung Das Attribut
tree_.valueintree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifierundtree.ExtraTreeRegressorwurde von einer gewichteten absoluten Anzahl von Samples zu einem gewichteten Bruchteil der Gesamtzahl von Samples geändert. #27639 von Samuel Ronsin.
Metadaten-Routing#
Fehlerbehebung Behebung eines Routing-Problems mit
ColumnTransformer, wenn dieser innerhalb eines anderen Meta-Estimators verwendet wird. #28188 von Adrin Jalali.Fehlerbehebung Es wird kein Fehler ausgelöst, wenn keine Metadaten an einen Meta-Estimator übergeben werden, der einen Unter-Estimator enthält, der keine Metadaten-Weiterleitung unterstützt. #28256 von Adrin Jalali.
Fehlerbehebung Korrektur von
multioutput.MultiOutputRegressorundmultioutput.MultiOutputClassifier, damit sie mit Estimators funktionieren, die keine Metadaten verarbeiten, wenn die Metadaten-Weiterleitung aktiviert ist. #28240 von Adrin Jalali.
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#
Effizienz Fehlerbehebung Teilweise Rücknahme von #28191 zur Vermeidung einer Performance-Regression für Estimators, die auf euklidischer paarweiser Berechnung mit spärlichen Matrizen basieren. Die betroffenen Estimators sind
#28235 von Julien Jerphanion.
Fehlerbehebung Behebt einen Fehler bei den meisten scikit-learn-Transformern, wenn
set_outputmittransformaufpandasoderpolarsgesetzt ist. Der Fehler konnte zu falschen Spaltennamen im zurückgegebenen DataFrame führen. #28262 von Guillaume Lemaitre.Fehlerbehebung Wenn Benutzer eine Methode in
StackingClassifier,StackingClassifier,StackingClassifier,SelectFromModel,RFE,SelfTrainingClassifier,OneVsOneClassifier,OutputCodeClassifieroderOneVsRestClassifierverwenden, die ihre Unter-Estimators nicht implementieren, wird derAttributeErrornun im Traceback erneut ausgelöst. #28167 von Stefanie Senger.
Änderungsprotokoll#
sklearn.calibration#
Fehlerbehebung
calibration.CalibratedClassifierCVunterstützt predict_proba mit Float32-Ausgabe des inneren Estimators. #28247 von Thomas Fan.
sklearn.cluster#
Fehlerbehebung
cluster.AffinityPropagationvermeidet nun die Zuweisung mehrerer verschiedener Cluster für gleiche Punkte. #28121 von Pietro Peterlongo und Yao Xiao.Fehlerbehebung Vermeidet eine Endlosschleife in
cluster.KMeans, wenn die Anzahl der Cluster größer ist als die Anzahl der nicht-duplizierten Samples. #28165 von Jérémie du Boisberranger.
sklearn.compose#
Fehlerbehebung
compose.ColumnTransformertransformiert nun in einen Polars-DataFrame, wennverbose_feature_names_out=Trueist 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
HistGradientBoostingClassifierundHistGradientBoostingRegressor, wenn aufpandasDataFramemit Erweiterungsdatentypen, z. B.pd.Int64Dtype, trainiert. #28385 von Loïc Estève.Fehlerbehebung Korrigiert die Fehlermeldung, die von
ensemble.VotingClassifierausgegeben wird, wenn das Ziel multilabel oder multiclass-multioutput in DataFrame-Format ist. #27702 von Guillaume Lemaitre.
sklearn.impute#
Fehlerbehebung :
impute.SimpleImputerlöst nun einen Fehler in.fitund.transformaus, wennfill_valuenicht in den Datentyp des Eingabewerts mitcasting='same_kind'umgewandelt werden kann. #28365 von Leo Grinsztajn.
sklearn.inspection#
Fehlerbehebung
inspection.permutation_importancebehandelt nunsample_weightzusammen mit Subsampling (d.h.max_features< 1.0) korrekt. #28184 von Michael Mayer.
sklearn.linear_model#
Fehlerbehebung
linear_model.ARDRegressionbehandelt nun Pandas-Eingabetypen fürpredict(X, return_std=True). #28377 von Eddie Bergman.
sklearn.preprocessing#
Fehlerbehebung macht
preprocessing.FunctionTransformernachsichtiger und überschreibt Ausgabespaltennamen mitget_feature_names_outin den folgenden Fällen: (i) die Eingabe- und Ausgabespaltennamen bleiben gleich (passiert bei Verwendung von NumPyufunc); (ii) die Eingespaltennamen sind Zahlen; (iii) die Ausgabe wird auf Pandas- oder Polars-DataFrames gesetzt. #28241 von Guillaume Lemaitre.Fehlerbehebung
preprocessing.FunctionTransformergibt nun auch eine Warnung aus, wennset_outputmittransform="polars"aufgerufen wird undfunckeinen Polars-DataFrame zurückgibt oderfeature_names_outnicht angegeben ist. #28263 von Guillaume Lemaitre.Fehlerbehebung
preprocessing.TargetEncoderschlägt nun nicht mehr fehl, wenntarget_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#
Fehlerbehebung
tree.DecisionTreeClassifierundtree.DecisionTreeRegressorbehandeln fehlende Werte korrekt. Das interne Kriterium wurde nicht initialisiert, wenn keine fehlenden Werte in den Daten vorhanden waren, was zu potenziell falschen Kriteriumswerten führte. #28295 von Guillaume Lemaitre und #28327 von Adam Li.
sklearn.utils#
Verbesserung Fehlerbehebung
utils.metaestimators.available_iflöst nun den Fehler von dercheck-Funktion als Ursache desAttributeErrorerneut aus. #28198 von Thomas Fan.Fehlerbehebung
utils._safe_indexinglöst nun einenValueErroraus, wennXeine Python-Liste ist undaxis=1ist, wie in der Dokumentation beschrieben. #28222 von Guillaume Lemaitre.
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.LogisticRegressionundlinear_model.LogisticRegressionCVhaben nun eine deutlich bessere Konvergenz für die Solver"lbfgs"und"newton-cg". Beide Solver können nun je nach angegebenemtoleine viel höhere Präzision für die Koeffizienten erreichen. Außerdem kann lbfgstolbesser 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 Koeffizientencoef_undintercept_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 angegebenentolab, 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
TypeErrorfü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.
Funktion
LarsCVundLassoLarsCVunterstützen nun die Metadaten-Weiterleitung in ihrerfit-Methode und leiten Metadaten an den CV-Splitter weiter. #27538 von Omar Salman.Funktion
multiclass.OneVsRestClassifier,multiclass.OneVsOneClassifierundmulticlass.OutputCodeClassifierunterstützen nun die Metadaten-Weiterleitung in ihren Methodenfitundpartial_fitund leiten Metadaten an diefitundpartial_fitdes zugrundeliegenden Estimators weiter. #27308 von Stefanie Senger.Funktion
pipeline.Pipelineunterstützt nun die Metadaten-Weiterleitung gemäß dem Benutzerhandbuch für Metadaten-Weiterleitung. #26789 von Adrin Jalali.Funktion
cross_validate,cross_val_scoreundcross_val_predictunterstützen nun die Metadaten-Weiterleitung. Die Metadaten werden anfit, den Scorer undsplitdes CV-Splitters des Estimators weitergeleitet. Die Metadaten werden über den neuen Parameterparamsakzeptiert.fit_paramsist veraltet und wird in Version 1.6 entfernt. Der Parametergroupswird nicht mehr als separates Argument akzeptiert, wenn die Metadaten-Weiterleitung aktiviert ist, und sollte über den Parameterparamsübergeben werden. #26896 von Adrin Jalali.Funktion
GridSearchCV,RandomizedSearchCV,HalvingGridSearchCVundHalvingRandomSearchCVunterstützen nun die Metadaten-Weiterleitung in ihren Methodenfitundscoreund leiten Metadaten an die zugrundeliegenden Estimatorsfit, den CV-Splitter und den Scorer weiter. #27058 von Adrin Jalali.Funktion
ColumnTransformerunterstützt nun die Metadaten-Weiterleitung gemäß dem Benutzerhandbuch für Metadaten-Weiterleitung. #27005 von Adrin Jalali.Funktion
linear_model.LogisticRegressionCVunterstützt nun die Metadaten-Weiterleitung.linear_model.LogisticRegressionCV.fitakzeptiert nun**params, die an den zugrundeliegenden Splitter und Scorer übergeben werden.linear_model.LogisticRegressionCV.scoreakzeptiert nun**score_params, die an den zugrundeliegenden Scorer übergeben werden. #26525 von Omar Salman.Funktion
feature_selection.SelectFromModelunterstützt nun die Metadaten-Weiterleitung infitundpartial_fit. #27490 von Stefanie Senger.Funktion
linear_model.OrthogonalMatchingPursuitCVunterstützt nun die Metadaten-Weiterleitung. Seine Methodefitakzeptiert nun**fit_params, die an den zugrundeliegenden Splitter übergeben werden. #27500 von Stefanie Senger.Funktion
ElasticNetCV,LassoCV,MultiTaskElasticNetCVundMultiTaskLassoCVunterstützen nun die Metadaten-Weiterleitung und leiten Metadaten an den CV-Splitter weiter. #27478 von Omar Salman.Fehlerbehebung Alle Meta-Estimators, für die noch keine Metadaten-Weiterleitung implementiert ist, lösen nun ein
NotImplementedErrorbeiget_metadata_routingund beifitaus, wenn die Metadaten-Weiterleitung aktiviert ist und Metadaten an sie übergeben werden. #27389 von Adrin Jalali.
Unterstützung für SciPy Sparse Arrays#
Mehrere Estimators unterstützen nun SciPy Sparse Arrays. Die folgenden Funktionen und Klassen sind betroffen
Funktionen
cluster.compute_optics_graphin #27104 von Maren Westermann und in #27250 von Yao Xiao;decomposition.non_negative_factorizationin #27100 von Isaac Virshup;feature_selection.f_regressionin #27239 von Yaroslav Korobko;feature_selection.r_regressionin #27239 von Yaroslav Korobko;manifold.trustworthinessin #27250 von Yao Xiao;metrics.pairwise_distancesin #27250 von Yao Xiao;
Klassen
cluster.HDBSCANin #27250 von Yao Xiao;cluster.KMeansin #27179 von Nurseit Kamchyev;cluster.OPTICSin #27104 von Maren Westermann und in #27250 von Yao Xiao;cluster.SpectralClusteringin #27161 von Bharat Raghunathan;decomposition.NMFin #27100 von Isaac Virshup;feature_extraction.text.TfidfTransformerin #27219 von Yao Xiao;manifold.Isomapin #27250 von Yao Xiao;manifold.SpectralEmbeddingin #27240 von Yao Xiao;manifold.TSNEin #27250 von Yao Xiao;impute.SimpleImputerin #27277 von Yao Xiao;impute.IterativeImputerin #27277 von Yao Xiao;impute.KNNImputerin #27277 von Yao Xiao;kernel_approximation.PolynomialCountSketchin #27301 von Lohit SundaramahaLingam;random_projection.GaussianRandomProjectionin #27314 von Stefanie Senger;random_projection.SparseRandomProjectionin #27314 von Stefanie Senger.
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
sklearn.metrics.accuracy_scoreundsklearn.metrics.zero_one_lossin #27137 von Edoardo Abati;sklearn.model_selection.train_test_splitin #26855 von Tim Head;is_multilabelin #27601 von Yaroslav Korobko.
Klassen
decomposition.PCAfür die Solverfullundrandomized(mit QR Power Iterationen) in #26315, #27098 und #27431 von Mateusz Sokół, Olivier Grisel und Edoardo Abati;preprocessing.MinMaxScalerin #26243 von Tim Head;
Privates Modul für Verlustfunktionen#
Fix Die Gradientenberechnung des binären logarithmischen Verlusts ist nun numerisch stabiler für Eingaben (Rohvorhersagen) mit sehr hohem Betrag. Zuvor konnte dies zu
np.nanführen. Zu den Modellen, die von dieser Änderung profitieren, gehörenensemble.GradientBoostingClassifier,ensemble.HistGradientBoostingClassifierundlinear_model.LogisticRegression. #28048 von Christian Lorentzen.
Änderungsprotokoll#
sklearn.base#
Enhancement
base.ClusterMixin.fit_predictundbase.OutlierMixin.fit_predictakzeptieren nun**kwargs, die an diefitMethode des Schätzers weitergeleitet werden. #26506 von Adrin Jalali.Enhancement
base.TransformerMixin.fit_transformundbase.OutlierMixin.fit_predictlösen nun eine Warnung aus, wenntransform/predictMetadaten verbrauchen, aber keine benutzerdefiniertefit_transform/fit_predictin der davon erbenden Klasse definiert ist. #26831 von Adrin Jalali.Enhancement
base.cloneunterstützt nundictals Eingabe und erstellt eine Kopie. #26786 von Adrin Jalali.API Change
process_routinghat nun eine andere Signatur. Die ersten beiden (das Objekt und die Methode) sind nur positionsgebunden, und alle Metadaten werden als Schlüsselwortargumente übergeben. #26909 von Adrin Jalali.
sklearn.calibration#
Enhancement Die interne Zielfunktion und der Gradient der
sigmoidMethode voncalibration.CalibratedClassifierCVwurden durch das private Verlustmodul ersetzt. #27185 von Omar Salman.
sklearn.cluster#
Fix Der Parameter
degreeim Konstruktor voncluster.SpectralClusteringakzeptiert nun reelle Werte anstelle von nur ganzzahligen Werten, in Übereinstimmung mit dem Parameterdegreedessklearn.metrics.pairwise.polynomial_kernel. #27668 von Nolan McMahon.Fix Behebt einen Fehler in
cluster.OPTICS, bei dem die Clusterkorrektur basierend auf dem Vorgänger die falsche Indizierung verwendete. Dies hätte zu inkonsistenten Ergebnissen geführt, die von der Reihenfolge der Daten abhängen. #26459 von Haoying Zhang und Guillaume Lemaitre.Fix Verbessert die Fehlermeldung bei der Überprüfung der Anzahl der verbundenen Komponenten in der
fitMethode voncluster.HDBSCAN. #27678 von Ganesh Tata.Fix Erstellt eine Kopie der vordefinierten dünnbesetzten Matrix innerhalb der
fitMethode voncluster.DBSCAN, um eine In-place-Modifikation der dünnbesetzten Matrix zu vermeiden. #27651 von Ganesh Tata.Fix Löst eine ordnungsgemäße
ValueErroraus, wennmetric="precomputed"ist und die Speicherung von Zentren über den Parameterstore_centersangefordert wird. #27898 von Guillaume Lemaitre.API Change Die Werte
kdtreeundballtreesind nun veraltet und werden alskd_treebzw.ball_treefür den Parameteralgorithmvoncluster.HDBSCANumbenannt, um die Konsistenz der Namenskonvention zu gewährleisten.kdtreeundballtreewerden in Version 1.6 entfernt. #26744 von Shreesha Kumar Bhat.API Change Die Option
metric=Noneincluster.AgglomerativeClusteringundcluster.FeatureAgglomerationist in Version 1.4 veraltet und wird in Version 1.6 entfernt. Verwenden Sie stattdessen den Standardwert. #27828 von Guillaume Lemaitre.
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 ist0.19.12. #26683 von Thomas Fan.Fix
cluster.spectral_clusteringundcluster.SpectralClusteringlösen nun eine explizite Fehlermeldung aus, die besagt, dass dünnbesetzte Matrizen und Arrays mitnp.int64Indizes nicht unterstützt werden. #27240 von Yao Xiao.API Change Ausgaben, die pandas Extension-Datentypen verwenden und
pd.NAenthalten, inColumnTransformerführen nun zu einerFutureWarningund verursachen in Version 1.6 einenValueError, es sei denn, der Ausgabepuffer wurde mitset_output(transform="pandas")als "pandas" konfiguriert. Zuvor führten solche Ausgaben zu NumPy-Arrays vom Typobject, diepd.NAenthielten, 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#
Enhancement Ermöglicht
covariance.shrunk_covariancedie Verarbeitung mehrerer Kovarianzmatrizen gleichzeitig durch die Handhabung von nd-Arrays. #25275 von Quentin Barthélemy.API Change Fix
ColumnTransformerersetzt nun"passthrough"durch einen entsprechendenFunctionTransformerim Attributtransformers_. #27204 von Adrin Jalali.
sklearn.datasets#
Enhancement
datasets.make_sparse_spd_matrixverwendet nun ein speichereffizienteres Dünnbesetzt-Layout. Es akzeptiert auch ein neues Schlüsselwortsparse_format, das die Angabe des Ausgabeformats der dünnbesetzten Matrix ermöglicht. Standardmäßig istsparse_format=None, was wie zuvor ein dichtes NumPy ndarray zurückgibt. #27438 von Yao Xiao.Fix
datasets.dump_svmlight_filelöst nun keineValueErrormehr aus, wennXschreibgeschützt ist, z. B. einenumpy.memmapInstanz. #28111 von Yao Xiao.API Change
datasets.make_sparse_spd_matrixhat das Schlüsselwortargumentdimzugunsten vonn_dimveraltet.dimwird in Version 1.6 entfernt. #27718 von Adam Li.
sklearn.decomposition#
Feature
decomposition.PCAunterstützt nunscipy.sparse.sparrayundscipy.sparse.spmatrixEingaben bei Verwendung desarpackSolvers. Bei Verwendung auf dünnbesetzten Daten wie beidatasets.fetch_20newsgroups_vectorizedkann dies zu Beschleunigungen von 100x (Single-Threaded) und 70x geringerer Speichernutzung führen. Basierend auf Alexander Tarashansky's Implementierung in scanpy. #18689 von Isaac Virshup und Andrey Portnoy.Enhancement Eine "auto"-Option wurde dem Parameter
n_componentsvondecomposition.non_negative_factorization,decomposition.NMFunddecomposition.MiniBatchNMFhinzugefügt, um die Anzahl der Komponenten automatisch aus den Formen von W oder H bei Verwendung einer benutzerdefinierten Initialisierung abzuleiten. Der Standardwert dieses Parameters wird sich vonNonezuautoin Version 1.6 ändern. #26634 von Alexandre Landeau und Alexandre Vigny.Fix
decomposition.dict_learning_onlineignoriert den Parametermax_iternicht mehr. #27834 von Guillaume Lemaitre.Fix Der Parameter
degreeim Konstruktor vondecomposition.KernelPCAakzeptiert nun reelle Werte anstelle von nur ganzzahligen Werten, entsprechend dem Parameterdegreevonsklearn.metrics.pairwise.polynomial_kernel. #27668 von Nolan McMahon.API Change Die Option
max_iter=Noneindecomposition.MiniBatchDictionaryLearning,decomposition.MiniBatchSparsePCAunddecomposition.dict_learning_onlineist veraltet und wird in Version 1.6 entfernt. Verwenden Sie stattdessen den Standardwert. #27834 von Guillaume Lemaitre.
sklearn.ensemble#
Major Feature
ensemble.RandomForestClassifierundensemble.RandomForestRegressorunterstützen fehlende Werte, wenn das Kriteriumgini,entropyoderlog_lossfür die Klassifizierung odersquared_error,friedman_mseoderpoissonfür die Regression ist. #26391 von Thomas Fan.Major Feature
ensemble.HistGradientBoostingClassifierundensemble.HistGradientBoostingRegressorunterstützencategorical_features="from_dtype", was Spalten mit Pandas oder Polars Categorical dtype als Kategorien im Algorithmus behandelt.categorical_features="from_dtype"wird in v1.6 zum Standard. Kategorische Features müssen nicht mehr mit Zahlen kodiert werden. Wenn kategorische Features Zahlen sind, muss der Maximalwert nicht mehr kleiner alsmax_binssein; nur die Anzahl der (eindeutigen) Kategorien muss kleiner alsmax_binssein. #26411 von Thomas Fan und #27835 von Jérôme Dockès.Major Feature
ensemble.HistGradientBoostingClassifierundensemble.HistGradientBoostingRegressorerhielten den neuen Parametermax_features, um den Anteil der zufällig ausgewählten Features anzugeben, die bei jeder Teilung berücksichtigt werden. #27139 von Christian Lorentzen.Feature
ensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifierundensemble.ExtraTreesRegressorunterstützen nun monotone Einschränkungen, die nützlich sind, wenn Features voraussichtlich einen positiven/negativen Einfluss auf das Ziel haben. Fehlende Werte in den Trainingsdaten und Multi-Output-Ziele werden nicht unterstützt. #13649 von Samuel Ronsin, initiiert von Patrick O’Reilly.Efficiency
ensemble.HistGradientBoostingClassifierundensemble.HistGradientBoostingRegressorsind nun etwas schneller, indem sie das Histogramm des Elternknotens als Histogramm des Kindknotens beim Subtraktionstrick wiederverwenden. Dadurch muss weniger Speicher alloziert und freigegeben werden. #27865 von Christian Lorentzen.Efficiency
ensemble.GradientBoostingClassifierist schneller, für binäre und insbesondere für multiklasse Probleme dank des privaten Loss-Funktionsmoduls. #26278 und #28095 von Christian Lorentzen.Efficiency Verbessert Laufzeit und Speicherverbrauch für
ensemble.GradientBoostingClassifierundensemble.GradientBoostingRegressor, wenn auf dünnbesetzten Daten trainiert wird. #26957 von Thomas Fan.Efficiency
ensemble.HistGradientBoostingClassifierundensemble.HistGradientBoostingRegressorsind nun schneller, wennscoringeine vordefinierte Metrik ist, die inmetrics.get_scorer_namesaufgeführt ist und Early Stopping aktiviert ist. #26163 von Thomas Fan.Enhancement Eine gefittete Eigenschaft,
estimators_samples_, wurde zu allen Forest-Methoden hinzugefügt, einschließlichensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifierundensemble.ExtraTreesRegressor, die es ermöglicht, die Trainingsstichprobenindizes abzurufen, die für jeden Baum-Schätzer verwendet wurden. #26736 von Adam Li.Fix Behebt
ensemble.IsolationForest, wenn die Eingabe eine dünnbesetzte Matrix ist undcontaminationauf einen Gleitkommawert gesetzt ist. #27645 von Guillaume Lemaitre.Fix Löst einen
ValueErrorinensemble.RandomForestRegressorundensemble.ExtraTreesRegressoraus, wenn ein OOB-Score mit einem Multi-Output-Modell für die auf ganze Zahlen gerundeten Ziele angefordert wird. Es wurde als Multiklassenproblem erkannt. #27817 von Daniele OngariFix Ändert Schätzer-Tags, um anzuerkennen, dass
ensemble.VotingClassifier,ensemble.VotingRegressor,ensemble.StackingClassifier,ensemble.StackingRegressorfehlende Werte unterstützen, wenn alleestimatorsfehlende Werte unterstützen. #27710 von Guillaume Lemaitre.Fix Unterstützt das Laden von Pickles von
ensemble.HistGradientBoostingClassifierundensemble.HistGradientBoostingRegressor, wenn der Pickle auf einer Plattform mit anderer Bitness generiert wurde. Ein typisches Beispiel ist das Trainieren und Pickling des Modells auf einer 64-Bit-Maschine und das Laden des Modells auf einer 32-Bit-Maschine zur Vorhersage. #28074 von Christian Lorentzen und Loïc Estève.API Change In
ensemble.AdaBoostClassifierist das ArgumentalgorithmSAMME.Rveraltet und wird in 1.6 entfernt. #26830 von Stefanie Senger.
sklearn.feature_extraction#
API Change Der Fehlertyp wurde von
AttributeErrorzuexceptions.NotFittedErrorin unfitted Instanzen vonfeature_extraction.DictVectorizerfür die folgenden Methoden geändert:feature_extraction.DictVectorizer.inverse_transform,feature_extraction.DictVectorizer.restrict,feature_extraction.DictVectorizer.transform. #24838 von Lorenz Hertel.
sklearn.feature_selection#
Enhancement
feature_selection.SelectKBest,feature_selection.SelectPercentileundfeature_selection.GenericUnivariateSelectunterstützen nun unüberwachte Feature-Auswahl durch Bereitstellung einerscore_func, dieXundy=Noneakzeptiert. #27721 von Guillaume Lemaitre.Enhancement
feature_selection.SelectKBestundfeature_selection.GenericUnivariateSelectmitmode='k_best'geben nun eine Warnung aus, wennkgrößer als die Anzahl der Features ist. #27841 von Thomas Fan.Fix
feature_selection.RFEundfeature_selection.RFECVprüfen während der Eingabevalidierung nicht auf NaNs. #21807 von Thomas Fan.
sklearn.inspection#
Enhancement
inspection.DecisionBoundaryDisplayakzeptiert nun einen Parameterclass_of_interest, um die interessante Klasse auszuwählen, wenn die Antwort mitresponse_method="predict_proba"oderresponse_method="decision_function"geplottet wird. Dies ermöglicht das Plotten der Entscheidungsgrenze für binäre und multiklasse Klassifikatoren. #27291 von Guillaume Lemaitre.Fix
inspection.DecisionBoundaryDisplay.from_estimatorundinspection.PartialDependenceDisplay.from_estimatorgeben nun den korrekten Typ für Unterklassen zurück. #27675 von John Cant.API Change
inspection.DecisionBoundaryDisplaylöst einenAttributeErroranstelle einesValueErroraus, wenn ein Schätzer die angeforderte Antwortmethode nicht implementiert. #27291 von Guillaume Lemaitre.
sklearn.kernel_ridge#
Fix Der Parameter
degreeim Konstruktor vonkernel_ridge.KernelRidgeakzeptiert nun reelle Werte anstelle von nur ganzzahligen Werten, entsprechend dem Parameterdegreevonsklearn.metrics.pairwise.polynomial_kernel. #27668 von Nolan McMahon.
sklearn.linear_model#
Efficiency
linear_model.LogisticRegressionundlinear_model.LogisticRegressionCVhaben nun eine deutlich bessere Konvergenz für die Solver"lbfgs"und"newton-cg". Beide Solver können nun eine viel höhere Präzision für die Koeffizienten erreichen, abhängig von der angegebenentol. Zusätzlich kann lbfgstolbesser nutzen, d.h. früher stoppen oder eine höhere Präzision erreichen. Dies wird durch eine bessere Skalierung der Zielfunktion erreicht, d.h. durch die Verwendung von durchschnittlichen pro Stichprobe Verlusten anstelle der Summe von pro Stichprobe Verlusten. #26721 von Christian Lorentzen.Efficiency
linear_model.LogisticRegressionundlinear_model.LogisticRegressionCVmit dem Solver"newton-cg"können nun für einige Daten- und Parametereinstellungen erheblich schneller sein. Dies wird durch eine bessere Linien-Suche-Konvergenzprüfung für vernachlässigbare Verlustverbesserungen erreicht, die Gradienteninformationen berücksichtigt. #26721 von Christian Lorentzen.Efficiency Der Solver
"newton-cg"inlinear_model.LogisticRegressionundlinear_model.LogisticRegressionCVverwendet etwas weniger Speicher. Die Auswirkung ist proportional zur Anzahl der Koeffizienten (n_features * n_classes). #27417 von Christian Lorentzen.Fix Stellt sicher, dass das Attribut
sigma_vonlinear_model.ARDRegressionundlinear_model.BayesianRidgeimmer einenfloat32Dtype hat, wenn auffloat32Daten gefittet wird, selbst mit den Typ-Promotion-Regeln von NumPy 2. #27899 von Olivier Grisel.API Change Das Attribut
loss_function_vonlinear_model.SGDClassifierundlinear_model.SGDOneClassSVMist veraltet und wird in Version 1.6 entfernt. #27979 von Christian Lorentzen.
sklearn.metrics#
Efficiency Die Berechnung paarweiser Distanzen über
metrics.DistanceMetricfür CSR x CSR, Dense x CSR und CSR x Dense Datensätze ist nun 1,5x schneller. #26765 von Meekail Zain.Efficiency Die Berechnung von Distanzen über
metrics.DistanceMetricfür CSR x CSR, Dense x CSR und CSR x Dense verbraucht nun ~50% weniger Speicher und gibt Distanzen im gleichen Dtype wie die bereitgestellten Daten aus. #27006 von Meekail Zain.Enhancement Verbessert die Darstellung des Plots, der mit den Klassen
metrics.PrecisionRecallDisplayundmetrics.RocCurveDisplayerhalten wird. Die x- und y-Achsenlimits werden auf [0, 1] gesetzt und das Seitenverhältnis zwischen beiden Achsen wird auf 1 gesetzt, um einen quadratischen Plot zu erhalten. #26366 von Mojdeh Rastgoo.Enhancement
neg_root_mean_squared_log_error_scorerwurde als Scorer hinzugefügt #26734 von Alejandro Martin Gil.Enhancement
metrics.confusion_matrixwarnt nun, wenn iny_trueundy_prednur ein Label gefunden wurde. #27650 von Lucy Liu.Fix Das Berechnen paarweiser Distanzen mit
metrics.pairwise.euclidean_distanceslöst keine Ausnahme mehr aus, wennXalsfloat64-Array undX_norm_squaredalsfloat32-Array übergeben wird. #27624 von Jérôme Dockès.Fix
f1_scoreliefert nun korrekte Werte bei der Handhabung verschiedener Fälle, in denen es zu einer Division durch Null kommt, indem eine Formulierung verwendet wird, die nicht von den Präzisions- und Rückrufwerten abhängt. #27577 von Omar Salman und Guillaume Lemaitre.Fix
metrics.make_scorerlöst nun einen Fehler aus, wenn ein Regressor auf einem Scorer verwendet wird, der eine nicht-schwellenwertbasierte Entscheidungsfunktion (ausdecision_functionoderpredict_proba) anfordert. Solche Scorer sind spezifisch für die Klassifikation. #26840 von Guillaume Lemaitre.Fix
metrics.DetCurveDisplay.from_predictions,metrics.PrecisionRecallDisplay.from_predictions,metrics.PredictionErrorDisplay.from_predictionsundmetrics.RocCurveDisplay.from_predictionsgeben nun den korrekten Typ für Unterklassen zurück. #27675 von John Cant.API Change
needs_thresholdundneeds_probavonmetrics.make_scorersind veraltet und werden in Version 1.6 entfernt. Verwenden Sie stattdessenresponse_method, das"predict","predict_proba"oder"decision_function"oder eine Liste solcher Werte akzeptiert.needs_proba=Trueist äquivalent zuresponse_method="predict_proba"undneeds_threshold=Trueist äquivalent zuresponse_method=("decision_function", "predict_proba"). #26840 von Guillaume Lemaitre.API Change Der Parameter
squaredvonmetrics.mean_squared_errorundmetrics.mean_squared_log_errorist veraltet und wird in Version 1.6 entfernt. Verwenden Sie stattdessen die neuen Funktionenmetrics.root_mean_squared_errorundmetrics.root_mean_squared_log_error. #26734 von Alejandro Martin Gil.
sklearn.model_selection#
Enhancement
model_selection.learning_curvegibt eine Warnung aus, wenn jede Kreuzvalidierungsfalte fehlschlägt. #26299 von Rahil Parikh.Fix
model_selection.GridSearchCV,model_selection.RandomizedSearchCVundmodel_selection.HalvingGridSearchCVändern das übergebene Objekt im Parameter-Grid nicht mehr, wenn es sich um einen Schätzer handelt. #26786 von Adrin Jalali.
sklearn.multioutput#
Enhancement Methode
predict_log_probazumultioutput.ClassifierChainhinzugefügt. #27720 von Guillaume Lemaitre.
sklearn.neighbors#
Efficiency
sklearn.neighbors.KNeighborsRegressor.predictundsklearn.neighbors.KNeighborsClassifier.predict_probaunterstützen nun effizient Paare von dichten und spärlichen Datensätzen. #27018 von Julien Jerphanion.Efficiency Die Leistung von
neighbors.RadiusNeighborsClassifier.predictund vonneighbors.RadiusNeighborsClassifier.predict_probawurde verbessert, wennradiusgroß ist undalgorithm="brute"mit nicht-euklidischen Metriken verwendet wird. #26828 von Omar Salman.Fix Fehlermeldung für
neighbors.LocalOutlierFactorverbessert, wenn es mitn_samples=n_neighborsaufgerufen wird. #23317 von Bharat Raghunathan.Fix
neighbors.KNeighborsClassifier.predictundneighbors.KNeighborsClassifier.predict_probalösen nun einen Fehler aus, wenn die Gewichte aller Nachbarn eines Samples Null sind. Dies kann geschehen, wennweightseine benutzerdefinierte Funktion ist. #26410 von Yao Xiao.API Change
neighbors.KNeighborsRegressorakzeptiert nun direktmetrics.DistanceMetric-Objekte über das Schlüsselwortargumentmetric, was die Verwendung beschleunigter Drittanbietermetrics.DistanceMetric-Objekte ermöglicht. #26267 von Meekail Zain.
sklearn.preprocessing#
Efficiency
preprocessing.OrdinalEncodervermeidet die doppelte Berechnung fehlender Indizes zur Verbesserung der Effizienz. #27017 von Xuefeng Xu.Efficiency Verbessert die Effizienz von
preprocessing.OneHotEncoderundpreprocessing.OrdinalEncoderbei der Überprüfung vonnan. #27760 von Xuefeng Xu.Enhancement Verbessert Warnungen in
preprocessing.FunctionTransformer, wennfunceinen Pandas DataFrame zurückgibt und die Ausgabe für Pandas konfiguriert ist. #26944 von Thomas Fan.Enhancement
preprocessing.TargetEncoderunterstützt nuntarget_type‚multiclass‘. #26674 von Lucy Liu.Fix
preprocessing.OneHotEncoderundpreprocessing.OrdinalEncoderlösen eine Ausnahme aus, wennnaneine Kategorie ist und nicht die letzte der vom Benutzer bereitgestellten Kategorien ist. #27309 von Xuefeng Xu.Fix
preprocessing.OneHotEncoderundpreprocessing.OrdinalEncoderlösen eine Ausnahme aus, wenn die vom Benutzer bereitgestellten Kategorien Duplikate enthalten. #27328 von Xuefeng Xu.Fix
preprocessing.FunctionTransformerlöst beitransformeinen Fehler aus, wenn die Ausgabe vonget_feature_names_outnicht mit den Spaltennamen des Ausgabebereiches übereinstimmt, falls diese definiert sind. #27801 von Guillaume Lemaitre.Fix Löst einen
NotFittedErrorinpreprocessing.OrdinalEncoderaus, wenntransformaufgerufen wird, ohnefitaufgerufen zu haben, dacategoriesimmer überprüft werden muss. #27821 von Guillaume Lemaitre.
sklearn.tree#
Feature
tree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifierundtree.ExtraTreeRegressorunterstützen nun monotone Einschränkungen, nützlich wenn Merkmale einen positiven/negativen Einfluss auf das Ziel haben sollen. Fehlende Werte in den Trainingsdaten und Multi-Output-Ziele werden nicht unterstützt. #13649 von Samuel Ronsin, initiiert von Patrick O’Reilly.
sklearn.utils#
Enhancement
sklearn.utils.estimator_html_reprpasst Diagrammfarben dynamisch an dasprefers-color-schemedes Browsers an und bietet so eine verbesserte Anpassungsfähigkeit an Dunkelmodus-Umgebungen. #26862 von Andrew Goh Yisheng, Thomas Fan, Adrin Jalali.Enhancement
MetadataRequestundMetadataRouterhaben nun eine Methodeconsumes, mit der überprüft werden kann, ob eine gegebene Menge von Parametern verbraucht würde. #26831 von Adrin Jalali.Enhancement
sklearn.utils.check_arrayversucht,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 keineint64-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_arraysollte sowohl Matrizen als auch Arrays aus dem spärlichen SciPy-Modul akzeptieren. Die vorherige Implementierung würde beicopy=Truefehlschlagen, indem sie spezifische NumPynp.may_share_memoryaufruft, die nicht mit SciPy Sparse Array funktioniert und kein korrektes Ergebnis für SciPy Sparse Matrix liefert. #27336 von Guillaume Lemaitre.Fix
check_estimators_picklemitreadonly_memmap=Truestü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, aberaccept_sparseaufFalsegesetzt ist, schlägt nun vor,.toarray()und nichtX.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_logisticist 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