Version 1.3#
Eine kurze Beschreibung der wichtigsten Highlights des Releases finden Sie unter Release Highlights für scikit-learn 1.3.
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.3.2#
Oktober 2023
Änderungsprotokoll#
sklearn.datasets#
Fix Alle Dataset-Fetcher akzeptieren jetzt
data_homeals jedes Objekt, das dieos.PathLike-Schnittstelle implementiert, z. B.pathlib.Path. #27468 von Yao Xiao.
sklearn.decomposition#
Fix Behebt einen Fehler in
decomposition.KernelPCA, indem die Ausgabe des internenpreprocessing.KernelCentererzu einem Standardarray gezwungen wird. Wenn der arpack-Solver verwendet wird, erwartet er ein Array mit einemdtype-Attribut. #27583 von Guillaume Lemaitre.
sklearn.metrics#
Fix Behebt einen Fehler bei Metriken, die
zero_division=np.nanverwenden (z. B.precision_score) innerhalb einer parallelen Schleife (z. B.cross_val_score), bei der das Singleton fürnp.nanin den Unterprozessen unterschiedlich ist. #27573 von Guillaume Lemaitre.
sklearn.tree#
Fix Leckt keine Daten mehr über nicht initialisierten Speicher in Entscheidungsbaum-Pickle-Dateien und macht die Generierung dieser Dateien deterministisch. #27580 von Loïc Estève.
Version 1.3.1#
September 2023
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 Ridge-Modelle mit
solver='sparse_cg'können leicht unterschiedliche Ergebnisse liefern als bei scipy>=1.12, da sich der zugrunde liegende scipy-Solver geändert hat (siehe scipy#18488 für weitere Details) #26814 von Loïc Estève
Änderungen, die alle Module betreffen#
Fix Die
set_outputAPI funktioniert korrekt mit Listen-Eingaben. #27044 von Thomas Fan.
Änderungsprotokoll#
sklearn.calibration#
Fix
calibration.CalibratedClassifierCVkann jetzt Modelle verarbeiten, die große Vorhersagewerte erzeugen. Zuvor war dies numerisch instabil. #26913 von Omar Salman.
sklearn.cluster#
Fix
cluster.BisectingKMeanskonnte beim Vorhersagen auf Daten mit einer anderen Skala als die zum Anpassen des Modells verwendeten Daten abstürzen. #27167 von Olivier Grisel.Fix
cluster.BisectingKMeansfunktioniert jetzt mit Daten, die nur eine einzige Merkmal aufweisen. #27243 von Jérémie du Boisberranger.
sklearn.cross_decomposition#
Fix
cross_decomposition.PLSRegressionravelt nun automatisch die Ausgabe vonpredict, wenn mit einem eindimensionalenyangepasst wurde. #26602 von Yao Xiao.
sklearn.ensemble#
Fix Behebt einen Fehler in
ensemble.AdaBoostClassifiermitalgorithm="SAMME", bei dem die Entscheidungsfunktion jedes schwachen Lernenden symmetrisch sein sollte (d. h. die Summe der Scores sollte für eine Stichprobe Null ergeben). #26521 von Guillaume Lemaitre.
sklearn.feature_selection#
Fix
feature_selection.mutual_info_regressionberechnet nun korrekt das Ergebnis, wennXvom ganzzahligen Typ ist. #26748 von Yao Xiao.
sklearn.impute#
Fix
impute.KNNImputerfügt jetzt korrekt eine fehlende Indikatorspalte intransformhinzu, wennadd_indicatoraufTruegesetzt ist und fehlende Werte währendfitbeobachtet werden. #26600 von Shreesha Kumar Bhat.
sklearn.metrics#
Fix Mit
metrics.get_scorerverwendete Scorer behandeln jetzt Multilabel-Indikator-Matrizen korrekt. #27002 von Guillaume Lemaitre.
sklearn.mixture#
Fix Die Initialisierung von
mixture.GaussianMixtureaus vom Benutzer bereitgestelltenprecisions_initfürcovariance_typevonfullodertiedwar nicht korrekt und wurde behoben. #26416 von Yang Tao.
sklearn.neighbors#
Fix
neighbors.KNeighborsClassifier.predictlöst keine Ausnahme mehr für Eingaben vom Typpandas.DataFramesaus. #26772 von Jérémie du Boisberranger.Fix
sklearn.neighbors.BallTree.valid_metricsundsklearn.neighbors.KDTree.valid_metricswerden als öffentliche Klassenattribute wieder eingeführt. #26754 von Julien Jerphanion.Fix
sklearn.model_selection.HalvingRandomSearchCVlöst keine Ausnahme mehr aus, wenn die Eingabe für den Parameterparam_distributionseine Liste von Dictionaries ist. #26893 von Stefanie Senger.Fix Schätzer, die auf Nachbarn basieren, funktionieren jetzt korrekt, wenn
metric="minkowski"und der Metrikparameterpim Bereich0 < p < 1liegt, unabhängig vomdtypevonX. #26760 von Shreesha Kumar Bhat.
sklearn.preprocessing#
Fix
preprocessing.LabelEncoderakzeptiert jetztykorrekt als Schlüsselwortargument. #26940 von Thomas Fan.Fix
preprocessing.OneHotEncoderzeigt eine informativere Fehlermeldung an, wennsparse_output=Trueist und die Ausgabe für Pandas konfiguriert ist. #26931 von Thomas Fan.
sklearn.tree#
Fix
tree.plot_treeakzeptiert jetztclass_names=Truewie dokumentiert. #26903 von Thomas RoehrFix Der Parameter
feature_namesvontree.plot_treeakzeptiert jetzt jede Art von Array-ähnlichem Typ anstelle nur einer Liste. #27292 von Rahil Parikh.
Version 1.3.0#
Juni 2023
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.
Enhancement
multiclass.OutputCodeClassifier.predictverwendet jetzt eine effizientere paarweise Distanzreduktion. Infolgedessen ist die Tie-Breaking-Strategie anders und die vorhergesagten Labels können daher unterschiedlich sein. #25196 von Guillaume Lemaitre.Enhancement Die Methode
fit_transformvondecomposition.DictionaryLearningist effizienter, kann aber im Vergleich zu früheren Versionen unterschiedliche Ergebnisse liefern, wenntransform_algorithmnicht mitfit_algorithmübereinstimmt und die Anzahl der Iterationen gering ist. #24871 von Omar Salman.Enhancement Der Parameter
sample_weightwird jetzt bei der Zentroideninitialisierung fürcluster.KMeans,cluster.BisectingKMeansundcluster.MiniBatchKMeansverwendet. Diese Änderung bricht die Abwärtskompatibilität, da Zahlen, die aus denselben Zufallssamen generiert werden, unterschiedlich sein werden. #25752 von Hleb Levitski, Jérémie du Boisberranger, Guillaume Lemaitre.Fix Kleine Werte in den Matrizen
WundHwährend derfit- undtransform-Schritte vondecomposition.NMFunddecomposition.MiniBatchNMFwerden konsistenter behandelt, was zu unterschiedlichen Ergebnissen als in früheren Versionen führen kann. #25438 von Yotam Avidar-Constantini.Fix
decomposition.KernelPCAkann durchinverse_transformunterschiedliche Ergebnisse liefern, wenngammaNoneist. Jetzt wird es korrekt als1/n_featuresder Daten gewählt, auf denen es angepasst wurde, während es zuvor fälschlicherweise als1/n_featuresder Daten gewählt werden konnte, die aninverse_transformübergeben wurden. Ein neues Attributgamma_wird bereitgestellt, um den tatsächlichen Wert vongammaanzuzeigen, der jedes Mal verwendet wird, wenn der Kernel aufgerufen wird. #26337 von Yao Xiao.
Geänderte Anzeigen#
Enhancement
model_selection.LearningCurveDisplayzeigt standardmäßig sowohl die Trainings- als auch die Testkurven an. Sie könnenscore_type="test"setzen, um das frühere Verhalten beizubehalten. #25120 von Guillaume Lemaitre.Fix
model_selection.ValidationCurveDisplayakzeptiert jetzt das Übergeben einer Liste an den Parameterparam_range. #27311 von Arturo Amor.
Änderungen, die alle Module betreffen#
Enhancement Die Methode
get_feature_names_outder folgenden Klassen löst jetzt eineNotFittedErroraus, wenn die Instanz nicht angepasst wurde. Dies stellt sicher, dass der Fehler bei allen Schätzern mit der Methodeget_feature_names_outkonsistent ist.Die
NotFittedErrorzeigt eine informative Nachricht an, die zur Anpassung der Instanz mit den entsprechenden Argumenten auffordert.#25294, #25308, #25291, #25367, #25402, von John Pangas, Rahil Parikh , und Alex Buzenet.
Enhancement Eine Multi-Thread-Cython-Routine wurde zur Berechnung von quadrierten euklidischen Distanzen (manchmal gefolgt von einer Fused-Reduktionsoperation) für ein Paar von Datensätzen hinzugefügt, bestehend aus einer spärlichen CSR-Matrix und einem dichten NumPy-Array.
Dies kann die Leistung der folgenden Funktionen und Schätzer verbessern
Ein typisches Beispiel für diese Leistungsverbesserung tritt auf, wenn eine spärliche CSR-Matrix an die Methoden
predictodertransformvon Schätzern übergeben wird, die eine dichte NumPy-Repräsentation zur Speicherung ihrer angepassten Parameter (oder umgekehrt) verwenden.Zum Beispiel ist
sklearn.neighbors.NearestNeighbors.kneighborsin diesem Fall auf gängigen Laptops bis zu 2x schneller.#25044 von Julien Jerphanion.
Enhancement Alle Schätzer, die intern OpenMP-Multithreading (über Cython) verwenden, nutzen jetzt standardmäßig eine Anzahl von Threads, die der Anzahl physischer (anstelle von logischen) Kerne entspricht. In der Vergangenheit haben wir beobachtet, dass die Verwendung von so vielen Threads wie logische Kerne auf SMT-Hosts je nach Algorithmen und Datenform zu erheblichen Leistungsproblemen führen konnte. Beachten Sie, dass es immer noch möglich ist, die von OpenMP verwendete Anzahl von Threads manuell anzupassen, wie in Parallelism dokumentiert.
#26082 von Jérémie du Boisberranger und Olivier Grisel.
Experimentell / In Entwicklung#
Major Feature Die mit Metadata Routing verbundenen Basis-Methoden sind in diesem Release enthalten. Dieses Feature ist nur über das Feature-Flag
enable_metadata_routingverfügbar, das mitsklearn.set_configundsklearn.config_contextaktiviert werden kann. Vorerst ist dieses Feature hauptsächlich für Drittentwickler nützlich, um ihre Codebasis für das Metadata-Routing vorzubereiten, und wir empfehlen dringend, dass sie es ebenfalls hinter demselben Feature-Flag verbergen, anstatt es standardmäßig zu aktivieren. #24027 von Adrin Jalali, Benjamin Bossan, und Omar Salman.
Änderungsprotokoll#
sklearn#
Feature Eine neue Option
skip_parameter_validationwurde zur Funktionsklearn.set_configund zum Kontextmanagersklearn.config_contexthinzugefügt, die es ermöglicht, die Validierung der an Schätzer und öffentliche Funktionen übergebenen Parameter zu überspringen. Dies kann nützlich sein, um den Code zu beschleunigen, sollte aber mit Vorsicht verwendet werden, da es zu unerwarteten Verhaltensweisen führen oder obskure Fehlermeldungen auslösen kann, wenn ungültige Parameter gesetzt werden. #25815 von Jérémie du Boisberranger.
sklearn.base#
Feature Ein Protokoll
__sklearn_clone__ist jetzt verfügbar, um das Standardverhalten vonbase.clonezu überschreiben. #24568 von Thomas Fan.Fix
base.TransformerMixinbehält nun den Klassennamen eines Named-Tuples bei, wenntransformein Named-Tuple zurückgibt. #26121 von Thomas Fan.
sklearn.calibration#
Fix
calibration.CalibratedClassifierCVerzwingt nun keine Sample-Ausrichtung mehr auffit_params. #25805 von Adrin Jalali.
sklearn.cluster#
Major Feature Hinzugefügt wurde
cluster.HDBSCAN, ein moderner hierarchischer dichte-basierter Clustering-Algorithmus. Ähnlich wiecluster.OPTICSkann er als Verallgemeinerung voncluster.DBSCANbetrachtet werden, indem er hierarchisches statt flaches Clustering erlaubt. Seine Vorgehensweise unterscheidet sich jedoch voncluster.OPTICS. Dieser Algorithmus ist sehr robust hinsichtlich der Werte seiner Hyperparameter und kann ohne viel oder gar keine Abstimmung auf einer Vielzahl von Daten verwendet werden.Diese Implementierung ist eine Anpassung der ursprünglichen Implementierung von HDBSCAN in scikit-learn-contrib/hdbscan von Leland McInnes et al.
#26385 von Meekail Zain
Enhancement Der Parameter
sample_weightwird jetzt bei der Zentroideninitialisierung fürcluster.KMeans,cluster.BisectingKMeansundcluster.MiniBatchKMeansverwendet. Diese Änderung bricht die Abwärtskompatibilität, da Zahlen, die aus denselben Zufallssamen generiert werden, unterschiedlich sein werden. #25752 von Hleb Levitski, Jérémie du Boisberranger, Guillaume Lemaitre.Fix
cluster.KMeans,cluster.MiniBatchKMeansundcluster.k_meansbehandeln nun korrekt die Kombination vonn_init="auto"undinitals Array-ähnlich, und führen in diesem Fall eine Initialisierung durch. #26657 von Binesh Bannerjee.API Change Der Parameter
sample_weightinpredictfürcluster.KMeans.predictundcluster.MiniBatchKMeans.predictist nun veraltet und wird in v1.5 entfernt. #25251 von Hleb Levitski.API Change Das Argument
Xredincluster.FeatureAgglomeration.inverse_transformwird inXtumbenannt und in v1.5 entfernt. #26503 von Adrin Jalali.
sklearn.compose#
Fix
compose.ColumnTransformerlöst eine informative Fehlermeldung aus, wenn die einzelnen Transformer vonColumnTransformerPandas DataFrames mit inkonsistenten Indizes ausgeben und die Ausgabe als Pandas konfiguriert ist. #26286 von Thomas Fan.Fix
compose.ColumnTransformersetzt korrekt die Ausgabe des Rests, wennset_outputaufgerufen wird. #26323 von Thomas Fan.
sklearn.covariance#
Fix Ermöglicht
alpha=0incovariance.GraphicalLassozur Konsistenz mitcovariance.graphical_lasso. #26033 von Genesis Valencia.Fix
covariance.empirical_covariancegibt nun eine informative Fehlermeldung aus, wenn die Eingabe ungeeignet ist. #26108 von Quentin Barthélemy.API Change
cov_initincovariance.graphical_lassowird in 1.3 als veraltet markiert, da der Parameter keine Auswirkung hat. Er wird in 1.5 entfernt. #26033 von Genesis Valencia.API Change Fügt das Fitted-Attribut
costs_incovariance.GraphicalLassoundcovariance.GraphicalLassoCVhinzu. #26033 von Genesis Valencia.API Change Fügt den Parameter
covarianceincovariance.GraphicalLassohinzu. #26033 von Genesis Valencia.API Change Fügt den Parameter
epsincovariance.GraphicalLasso,covariance.graphical_lassoundcovariance.GraphicalLassoCVhinzu. #26033 von Genesis Valencia.
sklearn.datasets#
Enhancement Ermöglicht das Überschreiben der Parameter zum Öffnen der ARFF-Datei über den Parameter
read_csv_kwargsindatasets.fetch_openmlbei Verwendung des Pandas-Parsers. #26433 von Guillaume Lemaitre.Fix
datasets.fetch_openmlgibt verbesserte Datentypen zurück, wennas_frame=Trueundparser="liac-arff"verwendet werden. #26386 von Thomas Fan.Fix Gemäß den ARFF-Spezifikationen wird nur das Zeichen
"?"als fehlender Wert betrachtet, wenn ARFF-Dateien, die mitdatasets.fetch_openmlabgerufen wurden, mit dem Pandas-Parser geöffnet werden. Der Parameterread_csv_kwargsermöglicht das Überschreiben dieses Verhaltens. #26551 von Guillaume Lemaitre.Fix
datasets.fetch_openmlverwendet konsistentnp.nanals Marker für fehlende Werte mit beiden Parsern"pandas"und"liac-arff". #26579 von Guillaume Lemaitre.API Change Das Argument
data_transposedvondatasets.make_sparse_coded_signalist veraltet und wird in v1.5 entfernt. #25784 von @Jérémie du Boisberranger.
sklearn.decomposition#
Efficiency
decomposition.MiniBatchDictionaryLearningunddecomposition.MiniBatchSparsePCAsind nun für kleine Batch-Größen schneller, da doppelte Validierungen vermieden werden. #25490 von Jérémie du Boisberranger.Enhancement
decomposition.DictionaryLearningakzeptiert nun den Parametercallbackzur Konsistenz mit der Funktiondecomposition.dict_learning. #24871 von Omar Salman.Fix Kleine Werte in den Matrizen
WundHwährend derfit- undtransform-Schritte vondecomposition.NMFunddecomposition.MiniBatchNMFwerden konsistenter behandelt, was zu unterschiedlichen Ergebnissen als in früheren Versionen führen kann. #25438 von Yotam Avidar-Constantini.API Change Das Argument
Windecomposition.NMF.inverse_transformunddecomposition.MiniBatchNMF.inverse_transformwird inXtumbenannt und in v1.5 entfernt. #26503 von Adrin Jalali.
sklearn.discriminant_analysis#
Enhancement
discriminant_analysis.LinearDiscriminantAnalysisunterstützt nun PyTorch. Weitere Details finden Sie unter Array-API-Unterstützung (experimentell). #25956 von Thomas Fan.
sklearn.ensemble#
Feature
ensemble.HistGradientBoostingRegressorunterstützt nun die Gamma-Devianz-Verlustfunktion überloss="gamma". Die Verwendung der Gamma-Devianz als Verlustfunktion ist nützlich für die Modellierung von schief verteilten, streng positiven Zielvariablen. #22409 von Christian Lorentzen.Feature Berechnen Sie einen benutzerdefinierten Out-of-Bag-Score, indem Sie eine aufrufbare Funktion an
ensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifierundensemble.ExtraTreesRegressorübergeben. #25177 von Tim Head.Feature
ensemble.GradientBoostingClassifiergibt nun Out-of-Bag-Scores über die Attributeoob_scores_oderoob_score_aus. #24882 von Ashwin Mathur.Efficiency Die Vorhersagezeit von
ensemble.IsolationForestist nun schneller (typischerweise um den Faktor 8 oder mehr). Intern berechnet der Schätzer nun imfit-Zeitpunkt die Entscheidungspfadlängen pro Baum. Daher ist es nicht möglich, einen mit scikit-learn 1.2 trainierten Schätzer zu laden, um Vorhersagen mit scikit-learn 1.3 zu treffen: Ein Retraining mit scikit-learn 1.3 ist erforderlich. #25186 von Felipe Breve Siola.Efficiency
ensemble.RandomForestClassifierundensemble.RandomForestRegressormitwarm_start=Trueberechnen Out-of-Bag-Scores nur noch neu, wenn bei nachfolgendenfit-Aufrufen tatsächlich mehrn_estimatorsvorhanden sind. #26318 von Joshua Choo Yun Keat.Enhancement
ensemble.BaggingClassifierundensemble.BaggingRegressorgeben den Tagallow_nandes zugrunde liegenden Schätzers aus. #25506 von Thomas Fan.Fix
ensemble.RandomForestClassifier.fitsetztmax_samples = 1, wennmax_samplesein Float ist undround(n_samples * max_samples) < 1ist. #25601 von Jan Fidor.Fix
ensemble.IsolationForest.fitgibt keine Warnung mehr wegen fehlender Feature-Namen aus, wenn es mitcontaminationungleich"auto"auf einem Pandas DataFrame aufgerufen wird. #25931 von Yao Xiao.Fix
ensemble.HistGradientBoostingRegressorundensemble.HistGradientBoostingClassifierbehandeln negative Werte für kategoriale Features konsistent als fehlende Werte, im Einklang mit den Konventionen von LightGBM und Pandas. #25629 von Thomas Fan.Fix Korrigiert die Veraltung von
base_estimatorinensemble.AdaBoostClassifierundensemble.AdaBoostRegressor, die in #23819 eingeführt wurde. #26242 von Marko Toplak.
sklearn.exceptions#
Feature Hinzugefügt wurde
exceptions.InconsistentVersionWarning, die ausgelöst wird, wenn ein scikit-learn-Schätzer mit einer scikit-learn-Version entpickelt wird, die inkonsistent mit der scikit-learn-Version ist, mit der der Schätzer entpickelt wurde. #25297 von Thomas Fan.
sklearn.feature_extraction#
API Change
feature_extraction.image.PatchExtractorfolgt nun der Transformer-API von scikit-learn. Diese Klasse ist als zustandslose Transformation definiert, was bedeutet, dassfitvor dem Aufruf vontransformnicht aufgerufen werden muss. Die Parameterprüfung erfolgt nur zum Zeitpunkt vonfit. #24230 von Guillaume Lemaitre.
sklearn.feature_selection#
Enhancement Alle Selektoren in
sklearn.feature_selectionerhalten bei der Transformation den dtype eines DataFrames. #25102 von Thomas Fan.Fix Der Parameter
cvvonfeature_selection.SequentialFeatureSelectorunterstützt nun Generatoren. #25973 vonYao Xiao <Charlie-XIAO>.
sklearn.impute#
Enhancement Hinzugefügt wurde der Parameter
fill_valuezuimpute.IterativeImputer. #25232 von Thijs van Weezel.Fix
impute.IterativeImputerbewahrt nun korrekt den Pandas Index, wennset_config(transform_output="pandas")verwendet wird. #26454 von Thomas Fan.
sklearn.inspection#
Enhancement Unterstützung für
sample_weightininspection.partial_dependenceundinspection.PartialDependenceDisplay.from_estimatorhinzugefügt. Dies ermöglicht eine gewichtete Mittelung bei der Aggregation für jeden Wert des Rasters, auf dem die Inspektion durchgeführt wird. Die Option ist nur verfügbar, wennmethodaufbrutegesetzt ist. #25209 und #26644 von Carlo Lemos.API-Änderung
inspection.partial_dependencegibt einenutils.Bunchmit neuem Schlüssel zurück:grid_values. Der Schlüsselvalueswird zugunsten vongrid_valuesals veraltet markiert und der Schlüsselvalueswird in Version 1.5 entfernt. #21809 und #25732 von Thomas Fan.
sklearn.kernel_approximation#
Korrektur
kernel_approximation.AdditiveChi2Samplerist jetzt zustandslos. Das Attributsample_interval_ist veraltet und wird in Version 1.5 entfernt. #25190 von Vincent Maladière.
sklearn.linear_model#
Effizienz Vermeidet Datenskalierung, wenn
sample_weight=Noneist, sowie weitere unnötige Datenkopien und unerwartete Dichte-zu-Dichte-Konvertierungen inlinear_model.LinearRegression. #26207 von Olivier Grisel.Verbesserung
linear_model.SGDClassifier,linear_model.SGDRegressorundlinear_model.SGDOneClassSVMbehalten jetzt den dtype fürnumpy.float32bei. #25587 von Omar Salman.Verbesserung Das Attribut
n_iter_wurde inlinear_model.ARDRegressionaufgenommen, um die tatsächliche Anzahl von Iterationen anzuzeigen, die zur Erreichung des Stoppkriteriums erforderlich sind. #25697 von John Pangas.Korrektur Verwendung eines robusteren Kriteriums zur Erkennung der Konvergenz von
linear_model.LogisticRegressionmitpenalty="l1"undsolver="liblinear"bei linear separierbaren Problemen. #25214 von Tom Dupre la Tour.Korrektur Behebt einen Absturz beim Aufruf von
fitfürlinear_model.LogisticRegressionmitsolver="newton-cholesky"undmax_iter=0, der die Zustandsprüfung des Modells vor der ersten Parameteraktualisierung fehlschlagen ließ. #26653 von Olivier Grisel.API-Änderung
n_iterist zugunsten vonmax_iterinlinear_model.BayesianRidgeundlinear_model.ARDRegressionveraltet.n_iterwird in scikit-learn 1.5 entfernt. Diese Änderung macht diese Schätzer mit den restlichen Schätzern konsistent. #25697 von John Pangas.
sklearn.manifold#
Korrektur
manifold.Isomapbehält jetzt korrekt den Pandas Index bei, wennset_config(transform_output="pandas")verwendet wird. #26454 von Thomas Fan.
sklearn.metrics#
Funktion Fügt
zero_division=np.nanzu mehreren Klassifikationsmetriken hinzu:metrics.precision_score,metrics.recall_score,metrics.f1_score,metrics.fbeta_score,metrics.precision_recall_fscore_support,metrics.classification_report. Wennzero_division=np.nanund eine Nullteilung auftritt, ist die Metrik undefiniert und wird von der Mittelwertbildung ausgeschlossen. Wenn sie nicht für Mittelwerte verwendet wird, ist der zurückgegebene Wertnp.nan. #25531 von Marc Torrellas Socastro.Funktion
metrics.average_precision_scoreunterstützt jetzt den Multiklassenfall. #17388 von Geoffrey Bolmier und #24769 von Ashwin Mathur.Effizienz Die Berechnung der erwarteten gegenseitigen Information in
metrics.adjusted_mutual_info_scoreist jetzt schneller, wenn die Anzahl der eindeutigen Labels groß ist, und der Speicherverbrauch ist generell reduziert. #25713 von Kshitij Mathur, Guillaume Lemaitre, Omar Salman und Jérémie du Boisberranger.Verbesserung
metrics.silhouette_samplesakzeptiert jetzt eine spärliche Matrix von paarweisen Distanzen zwischen Stichproben oder ein Feature-Array. #18723 von Sahil Gupta und #24677 von Ashwin Mathur.Verbesserung Ein neuer Parameter
drop_intermediatewurde zumetrics.precision_recall_curve,metrics.PrecisionRecallDisplay.from_estimator,metrics.PrecisionRecallDisplay.from_predictionshinzugefügt, der einige suboptimale Schwellenwerte verwirft, um leichtere Präzisions-Recall-Kurven zu erstellen. #24668 von @dberenbaum.Verbesserung
metrics.RocCurveDisplay.from_estimatorundmetrics.RocCurveDisplay.from_predictionsakzeptieren jetzt zwei neue Schlüsselwörter,plot_chance_levelundchance_level_kw, um die Basis-Chance-Level zu plotten. Diese Linie wird im Attributchance_level_exponiert. #25987 von Yao Xiao.Verbesserung
metrics.PrecisionRecallDisplay.from_estimatorundmetrics.PrecisionRecallDisplay.from_predictionsakzeptieren jetzt zwei neue Schlüsselwörter,plot_chance_levelundchance_level_kw, um die Basis-Chance-Level zu plotten. Diese Linie wird im Attributchance_level_exponiert. #26019 von Yao Xiao.Korrektur
metrics.pairwise.manhattan_distancesunterstützt jetzt schreibgeschützte spärliche Datensätze. #25432 von Julien Jerphanion.Korrektur
metrics.classification_reportwurde korrigiert, so dass leere Eingabennp.nanzurückgeben. Zuvor gab "macro avg" und "weighted avg" z.B.f1-score=np.nanundf1-score=0.0zurück, was inkonsistent war. Jetzt geben beidenp.nanzurück. #25531 von Marc Torrellas Socastro.Korrektur
metrics.ndcg_scoregibt jetzt eine aussagekräftige Fehlermeldung für Eingaben der Länge 1 aus. #25672 von Lene Preuss und Wei-Chun Chu.Korrektur
metrics.log_lossgibt eine Warnung aus, wenn die Werte des Parametersy_prednicht normalisiert sind, anstatt sie in der Metrik zu normalisieren. Ab Version 1.5 wird dies einen Fehler auslösen. #25299 von @Omar Salman <OmarManzoor.Korrektur In
metrics.roc_curvewird der Schwellenwertnp.infanstelle des willkürlichenmax(y_score) + 1verwendet. Dieser Schwellenwert ist mit dem ROC-Kurvenpunkttpr=0undfpr=0verbunden. #26194 von Guillaume Lemaitre.Korrektur Die Metrik
'matching'wurde mit SciPy>=1.9 entfernt, um sie mitscipy.spatial.distancekonsistent zu halten, das'matching'nicht mehr unterstützt. #26264 von Barata T. OnggoAPI-Änderung Der Parameter
epsder Funktionmetrics.log_lossist veraltet und wird in Version 1.5 entfernt. #25299 von Omar Salman.
sklearn.gaussian_process#
Korrektur
gaussian_process.GaussianProcessRegressorhat ein neues Argumentn_targets, das verwendet wird, um die Anzahl der Ausgaben bei der Stichprobenziehung aus den Prior-Verteilungen zu bestimmen. #23099 von Zhehao Liu.
sklearn.mixture#
Effizienz
mixture.GaussianMixtureist jetzt effizienter und umgeht unnötige Initialisierung, wenn Gewichte, Mittelwerte und Präzisionen vom Benutzer bereitgestellt werden. #26021 von Jiawei Zhang.
sklearn.model_selection#
Hauptfunktion Fügt die Klasse
model_selection.ValidationCurveDisplayhinzu, die das einfache Plotten von Validierungskurven ermöglicht, die von der Funktionmodel_selection.validation_curveerhalten wurden. #25120 von Guillaume Lemaitre.API-Änderung Der Parameter
log_scalein der Methodeplotder Klassemodel_selection.LearningCurveDisplayist in Version 1.3 veraltet und wird in Version 1.5 entfernt. Die Standard-Skalierung kann überschrieben werden, indem sie direkt auf demax-Objekt gesetzt wird, und wird andernfalls automatisch aus dem Abstand der Datenpunkte gesetzt. #25120 von Guillaume Lemaitre.Verbesserung
model_selection.cross_validateakzeptiert einen neuen Parameterreturn_indices, um die Trainings-Test-Indizes jeder CV-Aufteilung zurückzugeben. #25659 von Guillaume Lemaitre.
sklearn.multioutput#
Korrektur
getattraufmultioutput.MultiOutputRegressor.partial_fitundmultioutput.MultiOutputClassifier.partial_fitlöst jetzt korrekt einenAttributeErroraus, wenn er vor dem Aufruf vonfiterfolgt. #26333 von Adrin Jalali.
sklearn.naive_bayes#
Korrektur
naive_bayes.GaussianNBlöst keineZeroDivisionErrormehr aus, wenn das bereitgestelltesample_weightdas Problem infitauf eine einzige Klasse reduziert. #24140 von Jonathan Ohayon und Chiara Marmo.
sklearn.neighbors#
Verbesserung Die Leistung von
neighbors.KNeighborsClassifier.predictundneighbors.KNeighborsClassifier.predict_probawurde verbessert, wennn_neighborsgroß ist undalgorithm="brute"mit nicht-euklidischen Metriken verwendet wird. #24076 von Meekail Zain, Julien Jerphanion.Korrektur Entfernt die Unterstützung für
KulsinskiDistanceinneighbors.BallTree. Diese Unähnlichkeit ist keine Metrik und kann vom BallTree nicht unterstützt werden. #25417 von Guillaume Lemaitre.API-Änderung Die Unterstützung für andere Metriken als
euclideanundmanhattansowie für aufrufbare Funktionen inneighbors.NearestNeighborsist veraltet und wird in Version 1.5 entfernt. #24083 von Valentin Laurent.
sklearn.neural_network#
Korrektur
neural_network.MLPRegressorundneural_network.MLPClassifiermelden die korrekte Anzahl von Iterationenn_iter_, wennwarm_start=Trueist. Dies entspricht der Anzahl der Iterationen, die bei dem aktuellen Aufruf vonfitdurchgeführt wurden, anstatt der Gesamtzahl der seit der Initialisierung des Schätzers durchgeführten Iterationen. #25443 von Marvin Krawutschke.
sklearn.pipeline#
Funktion
pipeline.FeatureUnionkann jetzt Indexierungsnotation (z.B.feature_union["scalar"]) verwenden, um Transformer nach Namen zuzugreifen. #25093 von Thomas Fan.Funktion
pipeline.FeatureUnionkann jetzt auf das Attributfeature_names_in_zugreifen, wenn der bei.fitgeseheneX-Wert eincolumns-Attribut hat und alle Spalten Zeichenketten sind. Z.B. wennXeinpandas.DataFrameist. #25220 von Ian Thompson.Korrektur
pipeline.Pipeline.fit_transformlöst jetzt einenAttributeErroraus, wenn der letzte Schritt der Pipelinefit_transformnicht unterstützt. #26325 von Adrin Jalali.
sklearn.preprocessing#
Hauptfunktion Einführung von
preprocessing.TargetEncoder, einer kategorialen Kodierung, die auf dem Zielmittelwert basiert, konditioniert auf den Wert der Kategorie. #25334 von Thomas Fan.Funktion
preprocessing.OrdinalEncoderunterstützt jetzt die Gruppierung seltener Kategorien zu einer einzigen Merkmal. Die Gruppierung seltener Kategorien wird durch Angabe, wie seltene Kategorien ausgewählt werden sollen, mitmin_frequencyodermax_categoriesaktiviert. #25677 von Thomas Fan.Verbesserung
preprocessing.PolynomialFeaturesberechnet jetzt a priori die Anzahl der erweiterten Terme, wenn spärlichecsr-Matrizen behandelt werden, um die Wahl desdtypefürindicesundindptrzu optimieren. Es kann jetztcsr-Matrizen mitnp.int32indices/indptr-Komponenten ausgeben, wenn es wenige Elemente gibt, und verwendet automatischnp.int64für ausreichend große Matrizen. #20524 von niuk-a und #23731 von Meekail ZainVerbesserung Ein neuer Parameter
sparse_outputwurde zupreprocessing.SplineTransformerhinzugefügt, verfügbar ab SciPy 1.8. Wennsparse_output=True, gibtpreprocessing.SplineTransformereine spärliche CSR-Matrix zurück. #24145 von Christian Lorentzen.Erweiterung Fügt einen Parameter
feature_name_combinerzupreprocessing.OneHotEncoderhinzu. Dieser spezifiziert einen benutzerdefinierten aufrufbaren Funktionsaufruf, um Feature-Namen zu erstellen, die vonpreprocessing.OneHotEncoder.get_feature_names_outzurückgegeben werden. Der aufrufbare Funktionsaufruf kombiniert die Eingabeargumente(input_feature, category)zu einem String. #22506 von Mario Kostelac.Erweiterung Unterstützung für
sample_weightinpreprocessing.KBinsDiscretizerhinzugefügt. Dies ermöglicht die Angabe des Parameterssample_weightfür jede Stichprobe, die beim Anpassen verwendet werden soll. Die Option ist nur verfügbar, wennstrategyaufquantileundkmeansgesetzt ist. #24935 von Seladus, Guillaume Lemaitre und Dea María Léon, #25257 von Hleb Levitski.Erweiterung Subsampling über den Parameter
subsamplekann nun inpreprocessing.KBinsDiscretizerunabhängig von der verwendeten Strategie verwendet werden. #26424 von Jérémie du Boisberranger.Korrektur
preprocessing.PowerTransformerbewahrt den Pandas Index nun korrekt, wennset_config(transform_output="pandas")verwendet wird. #26454 von Thomas Fan.Korrektur
preprocessing.PowerTransformerwirft nun korrekt einen Fehler, wennmethod="box-cox"auf Daten mit einer konstantennp.nanSpalte verwendet wird. #26400 von Yao Xiao.Korrektur
preprocessing.PowerTransformermitmethod="yeo-johnson"lässt konstante Features unverändert anstatt mit einem beliebigen Wert für den angepassten Parameterlambdas_zu transformieren. #26566 von Jérémie du Boisberranger.API-Änderung Der Standardwert des Parameters
subsamplevonpreprocessing.KBinsDiscretizerändert sich vonNoneauf200_000in Version 1.5, wennstrategy="kmeans"oderstrategy="uniform". #26424 von Jérémie du Boisberranger.
sklearn.svm#
API-Änderung Der Parameter
dualakzeptiert nun die Optionautofürsvm.LinearSVCundsvm.LinearSVR. #26093 von Hleb Levitski.
sklearn.tree#
Hauptfunktion
tree.DecisionTreeRegressorundtree.DecisionTreeClassifierunterstützen fehlende Werte, wennsplitter='best'und das Kriteriumgini,entropyoderlog_lossfür Klassifikation odersquared_error,friedman_mseoderpoissonfür Regression ist. #23595, #26376 von Thomas Fan.Erweiterung Fügt einen Parameter
class_nameszutree.export_texthinzu. Dies ermöglicht die Angabe des Parametersclass_namesfür jede Zielklasse in aufsteigender numerischer Reihenfolge. #25387 von William M und crispinlogan.Korrektur
tree.export_graphvizundtree.export_textakzeptieren nunfeature_namesundclass_namesals array-ähnlich anstelle von Listen. #26289 von Yao Xiao
sklearn.utils#
Korrektur Korrigiert
utils.check_array, um Pandas Extension Arrays ordnungsgemäß zu konvertieren. #25813 und #26106 von Thomas Fan.Korrektur
utils.check_arrayunterstützt nun Pandas DataFrames mit Extension Arrays und Objekt-Datentypen, indem es ein ndarray mit Objekt-Datentyp zurückgibt. #25814 von Thomas Fan.API-Änderung
utils.estimator_checks.check_transformers_unfitted_statelesswurde eingeführt, um sicherzustellen, dass zustandslose Transformer beitransformohne vorherigen Aufruf vonfitoderfit_transformkeineNotFittedErrorauslösen. #25190 von Vincent Maladière.API-Änderung Eine
FutureWarningwird nun ausgelöst, wenn eine Klasse instanziiert wird, die von einer veralteten Basisklasse erbt (d. h. dekoriert mitutils.deprecated) und die__init__Methode überschreibt. #25733 von Brigitta Sipőcz und Jérémie du Boisberranger.
sklearn.semi_supervised#
Erweiterung
semi_supervised.LabelSpreading.fitundsemi_supervised.LabelPropagation.fitakzeptieren nun Sparse-Metriken. #19664 von Kaushik Amar Das.
Sonstiges#
Erweiterung Veraltete Ausnahmen
EnvironmentError,IOErrorundWindowsErrorersetzt. #26466 von Dimitri Papadopoulos ORfanos.
Code- und Dokumentationsbeitragende
Vielen Dank an alle, die seit Version 1.2 zur Wartung und Verbesserung des Projekts beigetragen haben, einschließlich
2357juan, Abhishek Singh Kushwah, Adam Handke, Adam Kania, Adam Li, adienes, Admir Demiraj, adoublet, Adrin Jalali, A.H.Mansouri, Ahmedbgh, Ala-Na, Alex Buzenet, AlexL, Ali H. El-Kassas, amay, András Simon, André Pedersen, Andrew Wang, Ankur Singh, annegnx, Ansam Zedan, Anthony22-dev, Artur Hermano, Arturo Amor, as-90, ashah002, Ashish Dutt, Ashwin Mathur, AymericBasset, Azaria Gebremichael, Barata Tripramudya Onggo, Benedek Harsanyi, Benjamin Bossan, Bharat Raghunathan, Binesh Bannerjee, Boris Feld, Brendan Lu, Brevin Kunde, cache-missing, Camille Troillard, Carla J, carlo, Carlo Lemos, c-git, Changyao Chen, Chiara Marmo, Christian Lorentzen, Christian Veenhuis, Christine P. Chai, crispinlogan, Da-Lan, DanGonite57, Dave Berenbaum, davidblnc, david-cortes, Dayne, Dea María Léon, Denis, Dimitri Papadopoulos Orfanos, Dimitris Litsidis, Dmitry Nesterov, Dominic Fox, Dominik Prodinger, Edern, Ekaterina Butyugina, Elabonga Atuo, Emir, farhan khan, Felipe Siola, futurewarning, Gael Varoquaux, genvalen, Hleb Levitski, Guillaume Lemaitre, gunesbayir, Haesun Park, hujiahong726, i-aki-y, Ian Thompson, Ido M, Ily, Irene, Jack McIvor, jakirkham, James Dean, JanFidor, Jarrod Millman, JB Mountford, Jérémie du Boisberranger, Jessicakk0711, Jiawei Zhang, Joey Ortiz, JohnathanPi, John Pangas, Joshua Choo Yun Keat, Joshua Hedlund, JuliaSchoepp, Julien Jerphanion, jygerardy, ka00ri, Kaushik Amar Das, Kento Nozawa, Kian Eliasi, Kilian Kluge, Lene Preuss, Linus, Logan Thomas, Loic Esteve, Louis Fouquet, Lucy Liu, Madhura Jayaratne, Marc Torrellas Socastro, Maren Westermann, Mario Kostelac, Mark Harfouche, Marko Toplak, Marvin Krawutschke, Masanori Kanazu, mathurinm, Matt Haberland, Max Halford, maximeSaur, Maxwell Liu, m. bou, mdarii, Meekail Zain, Mikhail Iljin, murezzda, Nawazish Alam, Nicola Fanelli, Nightwalkx, Nikolay Petrov, Nishu Choudhary, NNLNR, npache, Olivier Grisel, Omar Salman, ouss1508, PAB, Pandata, partev, Peter Piontek, Phil, pnucci, Pooja M, Pooja Subramaniam, precondition, Quentin Barthélemy, Rafal Wojdyla, Raghuveer Bhat, Rahil Parikh, Ralf Gommers, ram vikram singh, Rushil Desai, Sadra Barikbin, SANJAI_3, Sashka Warner, Scott Gigante, Scott Gustafson, searchforpassion, Seoeun Hong, Shady el Gewily, Shiva chauhan, Shogo Hida, Shreesha Kumar Bhat, sonnivs, Sortofamudkip, Stanislav (Stanley) Modrak, Stefanie Senger, Steven Van Vaerenbergh, Tabea Kossen, Théophile Baranger, Thijs van Weezel, Thomas A Caswell, Thomas Germer, Thomas J. Fan, Tim Head, Tim P, Tom Dupré la Tour, tomiock, tspeng, Valentin Laurent, Veghit, VIGNESH D, Vijeth Moudgalya, Vinayak Mehta, Vincent M, Vincent-violet, Vyom Pathak, William M, windiana42, Xiao Yuan, Yao Xiao, Yaroslav Halchenko, Yotam Avidar-Constantini, Yuchen Zhou, Yusuf Raji, zeeshan lone