Version 0.15#

Version 0.15.2#

4. September 2014

Fehlerbehebungen#

Version 0.15.1#

1. August 2014

Fehlerbehebungen#

  • cross_validation.cross_val_score verwendet nun cross_validation.KFold anstelle von cross_validation.StratifiedKFold bei Multi-Output-Klassifizierungsproblemen. Von Nikolay Mayorov.

  • Unterstützung für unbekannte Labels in preprocessing.LabelBinarizer, um das Standardverhalten von 0.14.1 zur Rückwärtskompatibilität wiederherzustellen. Von Hamzeh Alsalhi.

  • Behobenes Stoppkriterium von cluster.KMeans, das eine frühzeitige Konvergenzerkennung verhinderte. Von Edward Raff und Gael Varoquaux.

  • Behobenes Verhalten von multiclass.OneVsOneClassifier bei Stimmengleichheit auf Klassenebene durch Berechnung der korrekten Summe der Vorhersagewerte pro Klasse. Von Andreas Müller.

  • cross_validation.cross_val_score und grid_search.GridSearchCV akzeptieren nun Python-Listen als Eingabedaten. Dies ist besonders nützlich für Kreuzvalidierung und Modellauswahl von Textverarbeitungs-Pipelines. Von Andreas Müller.

  • Behobene Eingabeüberprüfungen der meisten Schätzer, um Eingabedaten zu akzeptieren, die das NumPy __array__-Protokoll implementieren. Dies ist der Fall für pandas.Series und pandas.DataFrame in neueren Versionen von pandas. Von Gael Varoquaux.

  • Behobene Regression für linear_model.SGDClassifier mit class_weight="auto" auf Daten mit nicht zusammenhängenden Labels. Von Olivier Grisel.

Version 0.15#

15. Juli 2014

Highlights#

  • Viele Geschwindigkeits- und Speicherverbesserungen im gesamten Code

  • Enorme Geschwindigkeits- und Speicherverbesserungen für Random Forests (und Extra Trees), die auch besser von paralleler Berechnung profitieren.

  • Inkrementelles Training für BernoulliRBM

  • Hinzugefügt wurde cluster.AgglomerativeClustering für hierarchisches agglomeratives Clustering mit durchschnittlichem Linkage, vollständigem Linkage und Ward-Strategien.

  • Hinzugefügt wurde linear_model.RANSACRegressor für robuste Regressionsmodelle.

  • Hinzugefügt wurde Dimensionsreduktion mit manifold.TSNE, die zur Visualisierung hochdimensionaler Daten verwendet werden kann.

Änderungsprotokoll#

Neue Funktionen#

Verbesserungen#

  • Unterstützung für Sparse-Eingaben zu den Meta-Estimators ensemble.AdaBoostClassifier und ensemble.AdaBoostRegressor hinzugefügt. Von Hamzeh Alsalhi.

  • Speicherverbesserungen bei Entscheidungsbäumen, von Arnaud Joly.

  • Entscheidungsbäume können nun im Best-First-Verfahren aufgebaut werden, indem max_leaf_nodes als Stoppkriterium verwendet wird. Der Baumcode wurde refaktoriert, um entweder einen Stack oder eine Prioritätswarteschlange für den Baumaufbau zu verwenden. Von Peter Prettenhofer und Gilles Louppe.

  • Entscheidungsbäume können nun auf Fortran- und C-Stil-Arrays sowie nicht zusammenhängende Arrays ohne Kopie trainiert werden. Wenn das Eingabearray einen anderen dtype als np.float32 hat, wird eine Fortran-Stil-Kopie erstellt, da Fortran-Stil-Speicherlayouts Geschwindigkeitsvorteile bieten. Von Peter Prettenhofer und Gilles Louppe.

  • Geschwindigkeitsverbesserung bei Regressionsbäumen durch Optimierung der Berechnung des mittleren quadratischen Fehlers. Dies führte zu einer Geschwindigkeitsverbesserung der Baum-, Forest- und Gradient-Boosting-Baum-Module. Von Arnaud Joly

  • Die Funktionen img_to_graph und grid_tograph in sklearn.feature_extraction.image geben nun np.ndarray anstelle von np.matrix zurück, wenn return_as=np.ndarray angegeben ist. Weitere Informationen zur Kompatibilität finden Sie im Abschnitt Hinweise.

  • Änderung der internen Speicherung von Entscheidungsbäumen zur Verwendung eines Struct-Arrays. Dies behob einige kleine Fehler, verbesserte den Code und sorgte für einen kleinen Geschwindigkeitsgewinn. Von Joel Nothman.

  • Reduzierung des Speicherverbrauchs und des Overheads beim Trainieren und Vorhersagen mit Wäldern von zufälligen Bäumen parallel mit n_jobs != 1 durch Nutzung des neuen Threading-Backends von joblib 0.8 und Freigabe des GIL im Cython-Code des Baumtrainings. Von Olivier Grisel und Gilles Louppe.

  • Geschwindigkeitsverbesserung des Moduls sklearn.ensemble.gradient_boosting. Von Gilles Louppe und Peter Prettenhofer.

  • Verschiedene Verbesserungen am Modul sklearn.ensemble.gradient_boosting: ein Argument warm_start zum Trainieren zusätzlicher Bäume, ein Argument max_leaf_nodes zum Trainieren von GBM-ähnlichen Bäumen, ein monitor-Argument zum Überwachen des Estimators während des Trainings und Refactoring des ausführlichen Codes. Von Peter Prettenhofer.

  • Schnellere sklearn.ensemble.ExtraTrees durch Caching von Feature-Werten. Von Arnaud Joly.

  • Schnellerer tiefenbasierter Baumaufbau-Algorithmus wie bei Entscheidungsbäumen, Random Forests, Extra Trees oder Gradient Tree Boosting (mit tiefenbasierter Wachstumsstrategie) durch Vermeidung von Splits auf konstanten Features in der Stichprobe. Von Arnaud Joly.

  • Hinzugefügt wurde der Vorab-Pruning-Parameter min_weight_fraction_leaf für baumbasierte Methoden: der minimale gewichtete Anteil der Eingabestichproben, der für einen Blattknoten erforderlich ist. Von Noel Dawe.

  • Hinzugefügt wurde metrics.pairwise_distances_argmin_min, von Philippe Gervais.

  • Hinzugefügt wurde die predict-Methode zu cluster.AffinityPropagation und cluster.MeanShift, von Mathieu Blondel.

  • Vektor- und Matrixmultiplikationen wurden im gesamten Bibliotheksbestand optimiert von Denis Engemann und Alexandre Gramfort. Insbesondere sollten sie mit älteren NumPy-Versionen (vor 1.7.2) weniger Speicher verbrauchen.

  • Präzisions-Recall- und ROC-Beispiele verwenden nun train_test_split und enthalten weitere Erläuterungen, warum diese Metriken nützlich sind. Von Kyle Kastner

  • Der Trainingsalgorithmus für decomposition.NMF ist schneller für Sparse-Matrizen und hat eine deutlich geringere Speicherkomplexität, was bedeutet, dass er gut auf große Datensätze skaliert. Von Lars Buitinck.

  • Hinzugefügt wurde die Option svd_method mit Standardwert "randomized" zu decomposition.FactorAnalysis, um Speicher zu sparen und die Berechnung erheblich zu beschleunigen, von Denis Engemann und Alexandre Gramfort.

  • cross_validation.StratifiedKFold wurde so geändert, dass versucht wird, so viel wie möglich von der ursprünglichen Reihenfolge der Stichproben beizubehalten, um kein Overfitting bei Datensätzen mit einem nicht unerheblichen Maß an Stichprobenabhängigkeit zu verdecken. Von Daniel Nouri und Olivier Grisel.

  • Hinzugefügt wurde Multi-Output-Unterstützung für gaussian_process.GaussianProcessRegressor von John Novak.

  • Unterstützung für vorab berechnete Distanzmatrizen in Nachbarschafts-Estimators von Robert Layton und Joel Nothman.

  • Normberechnungen optimiert für NumPy 1.6 und spätere Versionen von Lars Buitinck. Insbesondere benötigt der k-Means-Algorithmus keine temporäre Datenstruktur mehr, die der Größe seiner Eingabe entspricht.

  • dummy.DummyClassifier kann nun verwendet werden, um einen konstanten Ausgabewert vorherzusagen. Von Manoj Kumar.

  • dummy.DummyRegressor hat nun einen strategy-Parameter, der die Vorhersage des Mittelwerts, des Medians des Trainingsdatensatzes oder eines konstanten Ausgabewerts ermöglicht. Von Maheshakya Wijewardena.

  • Multi-Label-Klassifizierungsausgabe im Multi-Label-Indikatorformat wird nun von metrics.roc_auc_score und metrics.average_precision_score unterstützt, von Arnaud Joly.

  • Signifikante Leistungsverbesserungen (mehr als 100-fache Beschleunigung für große Probleme) in isotonic.IsotonicRegression von Andrew Tulloch.

  • Geschwindigkeits- und Speicherverbesserungen des SGD-Algorithmus für lineare Modelle: Er verwendet nun Threads, keine separaten Prozesse mehr, wenn n_jobs>1. Von Lars Buitinck.

  • Grid Search und Kreuzvalidierung erlauben NaNs in den Eingabearrays, sodass Vorverarbeiter wie preprocessing.Imputer innerhalb der Kreuzvalidierungsschleife trainiert werden können, um potenziell verzerrte Ergebnisse zu vermeiden.

  • Ridge-Regression kann nun mit Stichprobengewichten im Merkmalsraum umgehen (zuvor nur im Stichprobenraum). Von Michael Eickenberg. Beide Lösungen werden vom Cholesky-Solver bereitgestellt.

  • Mehrere Klassifizierungs- und Regressionsmetriken unterstützen nun gewichtete Stichproben mit dem neuen Argument sample_weight: metrics.accuracy_score, metrics.zero_one_loss, metrics.precision_score, metrics.average_precision_score, metrics.f1_score, metrics.fbeta_score, metrics.recall_score, metrics.roc_auc_score, metrics.explained_variance_score, metrics.mean_squared_error, metrics.mean_absolute_error, metrics.r2_score. Von Noel Dawe.

  • Beschleunigung des Stichprobengenerators datasets.make_multilabel_classification. Von Joel Nothman.

Verbesserungen der Dokumentation#

  • Das Tutorial "Working With Text Data" wurde in den Tutorial-Bereich der Hauptdokumentation integriert. Enthält Übungen und Vorlagen für Tutorien-Präsentationen. Ursprüngliches Tutorial erstellt von mehreren Autoren, darunter Olivier Grisel, Lars Buitinck und viele andere. Integration des Tutorials in die scikit-learn-Dokumentation durch Jaques Grobler

  • Hinzugefügt wurde die Dokumentation Computational Performance. Diskussion und Beispiele zur Vorhersagelatenz / Durchsatz und verschiedene Faktoren, die die Geschwindigkeit beeinflussen. Zusätzliche Tipps für schnellere Modelle und die Wahl eines Kompromisses zwischen Geschwindigkeit und Vorhersagekraft. Von Eustache Diemert.

Fehlerbehebungen#

  • Fehlerbehebung in decomposition.MiniBatchDictionaryLearning: partial_fit funktionierte nicht richtig.

  • Fehlerbehebung in linear_model.stochastic_gradient: l1_ratio wurde als (1.0 - l1_ratio) verwendet.

  • Fehlerbehebung in multiclass.OneVsOneClassifier mit String-Labels.

  • Fehlerbehebung in LassoCV und ElasticNetCV: Sie berechneten die Gram-Matrix nicht vor mit precompute=True oder precompute="auto" und n_samples > n_features. Von Manoj Kumar.

  • Fehlerhafte Schätzung der Freiheitsgrade in feature_selection.f_regression bei nicht zentrierten Variaten. Von Virgile Fritsch.

  • Fehlerhafte Race Condition bei paralleler Verarbeitung mit pre_dispatch != "all" (z. B. in cross_val_score). Von Olivier Grisel.

  • Fehlerauslösung in cluster.FeatureAgglomeration und cluster.WardAgglomeration, wenn keine Stichproben gegeben sind, anstatt eine bedeutunglose Clusterbildung zurückzugeben.

  • Fehlerbehebung in gradient_boosting.GradientBoostingRegressor mit loss='huber': gamma wurde möglicherweise nicht initialisiert.

  • Fehlerhafte Feature-Wichtigkeiten, wie sie mit einem Wald von zufälligen Bäumen berechnet wurden, wenn mit sample_weight != None und/oder mit bootstrap=True trainiert wurde. Von Gilles Louppe.

Zusammenfassung der API-Änderungen#

  • sklearn.hmm ist veraltet. Die Entfernung ist für die Version 0.17 geplant.

  • Die Verwendung von covariance.EllipticEnvelop wurde nach der Deprecation entfernt. Bitte verwenden Sie stattdessen covariance.EllipticEnvelope.

  • cluster.Ward ist veraltet. Verwenden Sie stattdessen cluster.AgglomerativeClustering.

  • cluster.WardClustering ist veraltet. Verwenden Sie

  • stattdessen cluster.AgglomerativeClustering.

  • cross_validation.Bootstrap ist veraltet. cross_validation.KFold oder cross_validation.ShuffleSplit werden stattdessen empfohlen.

  • Direkte Unterstützung für das Multi-Label-Format "Sequenz von Sequenzen" (oder Liste von Listen) ist veraltet. Zur Konvertierung in und aus dem unterstützten binären Indikator-Matrix-Format verwenden Sie preprocessing.MultiLabelBinarizer. Von Joel Nothman.

  • Hinzugefügt wurde die score-Methode zu decomposition.PCA, analog zu probabilistischem PCA, und das Modell ProbabilisticPCA wurde als veraltet erklärt, da seine Score-Implementierung nicht korrekt war. Die Berechnung nutzt nun auch das Lemma der Matrixinversion für schnellere Berechnungen. Von Alexandre Gramfort.

  • Die score-Methode von decomposition.FactorAnalysis gibt nun die durchschnittliche Log-Likelihood der Stichproben zurück. Verwenden Sie score_samples, um die Log-Likelihood jeder Stichprobe zu erhalten. Von Alexandre Gramfort.

  • Das Generieren von booleschen Masken (Einstellung indices=False) aus Kreuzvalidierungsgeneratoren ist veraltet. Die Unterstützung für Masken wird in Version 0.17 entfernt. Die Generatoren haben seit Version 0.10 standardmäßig Arrays von Indizes erzeugt. Von Joel Nothman.

  • 1D-Arrays, die Strings mit dtype=object (wie sie in Pandas verwendet werden) enthalten, werden nun als gültige Klassifizierungsziele betrachtet. Dies behebt eine Regression aus Version 0.13 in einigen Klassifikatoren. Von Joel Nothman.

  • Falscher Korrekturwert für das Attribut explained_variance_ratio_ in RandomizedPCA. Von Alexandre Gramfort.

  • Passen Sie die Alphas für jedes l1_ratio anstelle von mean_l1_ratio in linear_model.ElasticNetCV und linear_model.LassoCV an. Dies ändert die Form von alphas_ von (n_alphas,) zu (n_l1_ratio, n_alphas), wenn das angegebene l1_ratio ein eindimensionales Array-ähnliches Objekt mit einer Länge größer als eins ist. Von Manoj Kumar.

  • Beheben Sie linear_model.ElasticNetCV und linear_model.LassoCV bei der Anpassung des Achsenabschnitts und wenn die Eingabedaten spärlich sind. Das automatische Gitter von Alphas wurde nicht korrekt berechnet und die Skalierung mit normalize war falsch. Von Manoj Kumar.

  • Korrigieren Sie die falsche maximale Anzahl der Merkmale, die bei jeder Aufteilung für Entscheidungsbäume, Random Forests und Gradient Tree Boosting gezogen werden (max_features). Zuvor begann die Zählung der Anzahl der gezogenen Merkmale erst nach einem nicht konstanten Merkmal in der Aufteilung. Diese Fehlerbehebung wirkt sich auf die Rechen- und Generalisierungsleistung dieser Algorithmen bei Vorhandensein konstanter Merkmale aus. Um die vorherige Generalisierungsleistung wiederherzustellen, sollten Sie den Wert von max_features ändern. Von Arnaud Joly.

  • Korrigieren Sie die falsche maximale Anzahl der Merkmale, die bei jeder Aufteilung für ensemble.ExtraTreesClassifier und ensemble.ExtraTreesRegressor gezogen werden (max_features). Zuvor wurden nur nicht konstante Merkmale in der Aufteilung als gezogen gezählt. Jetzt werden konstante Merkmale als gezogen gezählt. Außerdem muss mindestens ein Merkmal nicht konstant sein, um eine gültige Aufteilung vorzunehmen. Diese Fehlerbehebung wirkt sich auf die Rechen- und Generalisierungsleistung von Extra Trees bei Vorhandensein konstanter Merkmale aus. Um die vorherige Generalisierungsleistung wiederherzustellen, sollten Sie den Wert von max_features ändern. Von Arnaud Joly.

  • Korrigieren Sie utils.class_weight.compute_class_weight, wenn class_weight=="auto". Zuvor war dies für Eingaben mit dtype, die nicht ganzzahlig waren, fehlerhaft, und das zurückgegebene gewichtete Array war falsch. Von Manoj Kumar.

  • Korrigieren Sie cross_validation.Bootstrap, um ValueError zurückzugeben, wenn n_train + n_test > n. Von Ronald Phlypo.

Personen#

Liste der Mitwirkenden für Version 0.15 nach Anzahl der Commits.

  • 312 Olivier Grisel

  • 275 Lars Buitinck

  • 221 Gael Varoquaux

  • 148 Arnaud Joly

  • 134 Johannes Schönberger

  • 119 Gilles Louppe

  • 113 Joel Nothman

  • 111 Alexandre Gramfort

  • 95 Jaques Grobler

  • 89 Denis Engemann

  • 83 Peter Prettenhofer

  • 83 Alexander Fabisch

  • 62 Mathieu Blondel

  • 60 Eustache Diemert

  • 60 Nelle Varoquaux

  • 49 Michael Bommarito

  • 45 Manoj-Kumar-S

  • 28 Kyle Kastner

  • 26 Andreas Mueller

  • 22 Noel Dawe

  • 21 Maheshakya Wijewardena

  • 21 Brooke Osborn

  • 21 Hamzeh Alsalhi

  • 21 Jake VanderPlas

  • 21 Philippe Gervais

  • 19 Bala Subrahmanyam Varanasi

  • 12 Ronald Phlypo

  • 10 Mikhail Korobov

  • 8 Thomas Unterthiner

  • 8 Jeffrey Blackburne

  • 8 eltermann

  • 8 bwignall

  • 7 Ankit Agrawal

  • 7 CJ Carey

  • 6 Daniel Nouri

  • 6 Chen Liu

  • 6 Michael Eickenberg

  • 6 ugurthemaster

  • 5 Aaron Schumacher

  • 5 Baptiste Lagarde

  • 5 Rajat Khanduja

  • 5 Robert McGibbon

  • 5 Sergio Pascual

  • 4 Alexis Metaireau

  • 4 Ignacio Rossi

  • 4 Virgile Fritsch

  • 4 Sebastian Säger

  • 4 Ilambharathi Kanniah

  • 4 sdenton4

  • 4 Robert Layton

  • 4 Alyssa

  • 4 Amos Waterland

  • 3 Andrew Tulloch

  • 3 murad

  • 3 Steven Maude

  • 3 Karol Pysniak

  • 3 Jacques Kvam

  • 3 cgohlke

  • 3 cjlin

  • 3 Michael Becker

  • 3 hamzeh

  • 3 Eric Jacobsen

  • 3 john collins

  • 3 kaushik94

  • 3 Erwin Marsi

  • 2 csytracy

  • 2 LK

  • 2 Vlad Niculae

  • 2 Laurent Direr

  • 2 Erik Shilts

  • 2 Raul Garreta

  • 2 Yoshiki Vázquez Baeza

  • 2 Yung Siang Liau

  • 2 abhishek thakur

  • 2 James Yu

  • 2 Rohit Sivaprasad

  • 2 Roland Szabo

  • 2 amormachine

  • 2 Alexis Mignon

  • 2 Oscar Carlsson

  • 2 Nantas Nardelli

  • 2 jess010

  • 2 kowalski87

  • 2 Andrew Clegg

  • 2 Federico Vaggi

  • 2 Simon Frid

  • 2 Félix-Antoine Fortin

  • 1 Ralf Gommers

  • 1 t-aft

  • 1 Ronan Amicel

  • 1 Rupesh Kumar Srivastava

  • 1 Ryan Wang

  • 1 Samuel Charron

  • 1 Samuel St-Jean

  • 1 Fabian Pedregosa

  • 1 Skipper Seabold

  • 1 Stefan Walk

  • 1 Stefan van der Walt

  • 1 Stephan Hoyer

  • 1 Allen Riddell

  • 1 Valentin Haenel

  • 1 Vijay Ramesh

  • 1 Will Myers

  • 1 Yaroslav Halchenko

  • 1 Yoni Ben-Meshulam

  • 1 Yury V. Zaytsev

  • 1 adrinjalali

  • 1 ai8rahim

  • 1 alemagnani

  • 1 alex

  • 1 benjamin wilson

  • 1 chalmerlowe

  • 1 dzikie drożdże

  • 1 jamestwebber

  • 1 matrixorz

  • 1 popo

  • 1 samuela

  • 1 François Boulogne

  • 1 Alexander Measure

  • 1 Ethan White

  • 1 Guilherme Trein

  • 1 Hendrik Heuer

  • 1 IvicaJovic

  • 1 Jan Hendrik Metzen

  • 1 Jean Michel Rouly

  • 1 Eduardo Ariño de la Rubia

  • 1 Jelle Zijlstra

  • 1 Eddy L O Jansson

  • 1 Denis

  • 1 John

  • 1 John Schmidt

  • 1 Jorge Cañardo Alastuey

  • 1 Joseph Perla

  • 1 Joshua Vredevoogd

  • 1 José Ricardo

  • 1 Julien Miotte

  • 1 Kemal Eren

  • 1 Kenta Sato

  • 1 David Cournapeau

  • 1 Kyle Kelley

  • 1 Daniele Medri

  • 1 Laurent Luce

  • 1 Laurent Pierron

  • 1 Luis Pedro Coelho

  • 1 DanielWeitzenfeld

  • 1 Craig Thompson

  • 1 Chyi-Kwei Yau

  • 1 Matthew Brett

  • 1 Matthias Feurer

  • 1 Max Linke

  • 1 Chris Filo Gorgolewski

  • 1 Charles Earl

  • 1 Michael Hanke

  • 1 Michele Orrù

  • 1 Bryan Lunt

  • 1 Brian Kearns

  • 1 Paul Butler

  • 1 Paweł Mandera

  • 1 Peter

  • 1 Andrew Ash

  • 1 Pietro Zambelli

  • 1 staubda