Ältere Versionen#
Version 0.12.1#
8. Oktober 2012
Das Release 0.12.1 ist ein Bugfix-Release ohne zusätzliche Features, sondern ein Satz von Fehlerbehebungen.
Änderungsprotokoll#
Verbesserte numerische Stabilität im spektralen Einbetten durch Gael Varoquaux
Doctest unter Windows 64bit durch Gael Varoquaux
Dokumentationskorrekturen für Elastic Net durch Andreas Müller und Alexandre Gramfort
Korrekte Verhaltensweise mit Fortran-geordneten NumPy-Arrays durch Gael Varoquaux
GridSearchCV mit Nicht-CSR-Sparse-Matrizen zum Laufen bringen durch Lars Buitinck
Parallel-Computing in MDS beheben durch Gael Varoquaux
Unicode-Unterstützung in CountVectorizer beheben durch Andreas Müller
MinCovDet beheben, das mit X.shape = (3, 1) brach, durch Virgile Fritsch
Klonen von SGD-Objekten beheben durch Peter Prettenhofer
GMM stabilisieren durch Virgile Fritsch
Personen#
Version 0.12#
4. September 2012
Änderungsprotokoll#
Verschiedene Geschwindigkeitsverbesserungen des Moduls Entscheidungsbäume, durch Gilles Louppe.
GradientBoostingRegressorundGradientBoostingClassifierunterstützen nun das Merkmals-Subsampling über das Argumentmax_features, durch Peter Prettenhofer.Huber- und Quantilverlustfunktionen zu
GradientBoostingRegressorhinzugefügt, durch Peter Prettenhofer.Entscheidungsbäume und Zufallsbäume-Ensembles unterstützen nun Multi-Output-Klassifizierungs- und Regressionsprobleme, durch Gilles Louppe.
Hinzugefügt:
LabelEncoder, eine einfache Dienstprogrammklasse zum Normalisieren von Labels oder zum Transformieren von nicht-numerischen Labels, durch Mathieu Blondel.Hinzugefügt: die Epsilon-insensitive Verlustfunktion und die Möglichkeit, probabilistische Vorhersagen mit dem modifizierten Huber-Verlust in Stochastischem Gradientenabstieg zu treffen, durch Mathieu Blondel.
Hinzugefügt: Multidimensional Scaling (MDS), von Nelle Varoquaux.
SVMlight-Datei-Formatlader erkennt nun komprimierte Dateien (gzip/bzip2) und dekomprimiert sie on-the-fly, durch Lars Buitinck.
SVMlight-Datei-Format-Serialisierer bewahrt nun Double-Precision-Gleitkommawerte, durch Olivier Grisel.
Ein gemeinsames Test-Framework für alle Schätzer wurde hinzugefügt, durch Andreas Müller.
Verständliche Fehlermeldungen für Schätzer, die keinen Sparse-Input akzeptieren, durch Gael Varoquaux
Beschleunigungen in der hierarchischen Clusterbildung durch Gael Varoquaux. Insbesondere unterstützt der Baumaufbau nun ein Early-Stopping. Dies ist nützlich, wenn die Anzahl der Cluster nicht klein im Verhältnis zur Anzahl der Samples ist.
Hinzugefügt: MultiTaskLasso und MultiTaskElasticNet zur gemeinsamen Merkmalsauswahl, durch Alexandre Gramfort.
Hinzugefügt: Hilfsfunktionen
metrics.auc_scoreundmetrics.average_precision_scoredurch Andreas Müller.Verbesserte Sparse-Matrix-Unterstützung im Modul Merkmal-Auswahl durch Andreas Müller.
Neuer wortgrenzen-bewusster Zeichen-N-Gramm-Analysator für das Modul Text-Merkmalsextraktion von @kernc.
Fehler in der spektralen Clusterbildung behoben, der zu einzelnen Punkt-Clustern führte, durch Andreas Müller.
In
CountVectorizerwurde eine Option hinzugefügt, um seltene Wörter zu ignorieren,min_df, durch Andreas Müller.Unterstützung für mehrere Ziele in einigen linearen Modellen hinzugefügt (ElasticNet, Lasso und OrthogonalMatchingPursuit) durch Vlad Niculae und Alexandre Gramfort.
Korrekturen in der Score-Funktion von
decomposition.ProbabilisticPCAvon Wei Li.Merkmalswichtigkeit-Berechnung in Gradienten-verstärkte Bäume behoben.
Zusammenfassung der API-Änderungen#
Das alte Paket
scikits.learnwurde entfernt; alle Codes sollten stattdessen aussklearnimportiert werden, was in 0.9 eingeführt wurde.In
metrics.roc_curvewird das Arraythresholdsnun mit umgekehrter Reihenfolge zurückgegeben, um es konsistent mit der Reihenfolge der zurückgegebenenfprundtprzu halten.In
hmm-Objekten wiehmm.GaussianHMM,hmm.MultinomialHMMusw. müssen alle Parameter beim Initialisieren des Objekts übergeben werden und nicht überfit. Jetzt akzeptiertfitnur noch die Daten als Eingabeparameter.Bei allen SVM-Klassen wurde ein fehlerhaftes Verhalten von
gammabehoben. Zuvor wurde der Standard-Gamma-Wert nur beim ersten Aufruf vonfitberechnet und gespeichert. Er wird nun bei jedem Aufruf vonfitneu berechnet.Alle
Base-Klassen sind nun abstrakte Metaklassen, damit sie nicht instanziiert werden können.cluster.ward_treegibt nun auch das Eltern-Array zurück. Dies ist notwendig für Early-Stopping, bei dem der Baum nicht vollständig aufgebaut wird.In
CountVectorizerwurden die Parametermin_nundmax_nzum Parametern_gram_rangezusammengefasst, um beide gleichzeitig für Grid-Suche zu ermöglichen.In
CountVectorizerwerden Wörter, die nur in einem Dokument vorkommen, standardmäßig ignoriert. Um das vorherige Verhalten zu reproduzieren, setzen Siemin_df=1.API-Inkonsistenz behoben:
linear_model.SGDClassifier.predict_probagibt nun ein 2D-Array zurück, wenn es auf zwei Klassen trainiert wird.API-Inkonsistenz behoben:
discriminant_analysis.QuadraticDiscriminantAnalysis.decision_functionunddiscriminant_analysis.LinearDiscriminantAnalysis.decision_functiongeben nun 1D-Arrays zurück, wenn sie auf zwei Klassen trainiert werden.Der für das Training von
LassoCVundElasticNetCVverwendete Alpha-Grid wird nun im Attributalphas_gespeichert, anstatt den Init-Parameteralphaszu überschreiben.Lineare Modelle speichern den geschätzten Alpha-Wert bei der Schätzung durch Kreuzvalidierung nun im Attribut
alpha_anstelle vonalphaoderbest_alpha.GradientBoostingClassifierunterstützt nunstaged_predict_probaundstaged_predict.svm.sparse.SVCund andere Sparse-SVM-Klassen sind nun veraltet. Alle Klassen im Modul Support Vector Machines wählen nun automatisch die Sparse- oder Dense-Repräsentation basierend auf der Eingabe aus.Alle Clustering-Algorithmen interpretieren nun das Array
X, das anfitübergeben wird, als Eingabedaten, insbesondereSpectralClusteringundAffinityPropagation, die zuvor Affinitätsmatrizen erwarteten.Bei Clustering-Algorithmen, die die gewünschte Anzahl von Clustern als Parameter nehmen, heißt dieser Parameter nun
n_clusters.
Personen#
267 Andreas Müller
52 Vlad Niculae
44 Nelle Varoquaux
30 Alexis Mignon
30 Immanuel Bayer
16 Subhodeep Moitra
13 Yannick Schwartz
12 @kernc
9 Daniel Duckworth
8 John Benediktsson
7 Marko Burjek
4 Alexandre Abraham
3 Florian Hoenig
3 flyingimmidev
2 Francois Savard
2 Hannes Schulz
2 Peter Welinder
2 Wei Li
1 Alex Companioni
1 Brandyn A. White
1 Bussonnier Matthias
1 Charles-Pierre Astolfi
1 Dan O’Huiginn
1 David Cournapeau
1 Keith Goodman
1 Ludwig Schwardt
1 Olivier Hervieu
1 Sergio Medina
1 Shiqiao Du
1 Tim Sheerman-Chase
1 buguen
Version 0.11#
7. Mai 2012
Änderungsprotokoll#
Highlights#
Gradient-verstärkte Regressionsbäume (Gradienten-verstärkte Bäume) für Klassifizierung und Regression, von Peter Prettenhofer und Scott White.
Einfacher Dict-basierter Merkmalslader mit Unterstützung für kategorische Variablen (
DictVectorizer), durch Lars Buitinck.Matthews-Korrelationskoeffizient (
metrics.matthews_corrcoef) hinzugefügt und Makro- und Mikro-Durchschnittsoptionen zuprecision_score,metrics.recall_scoreundf1_scorehinzugefügt, durch Satrajit Ghosh.Out-of-Bag-Schätzungen (Out of Bag Estimates) des Generalisierungsfehlers für Ensembles: Gradienten-Boosting, Zufallswälder, Bagging, Voting, Stacking, durch Andreas Müller.
Zufällige Sparse-lineare Modelle für die Merkmalsauswahl, durch Alexandre Gramfort und Gael Varoquaux
Label Propagation für semi-überwachtes Lernen, von Clay Woolam. **Hinweis**: Die semi-überwachte API ist noch in Arbeit und kann sich ändern.
BIC/AIC-Modellauswahl zu klassischen Gaußschen Mischmodellen hinzugefügt und die API mit dem Rest von scikit-learn vereinheitlicht, durch Bertrand Thirion
Hinzugefügt:
sklearn.cross_validation.StratifiedShuffleSplit, einesklearn.cross_validation.ShuffleSplitmit ausgewogenen Splits, von Yannick Schwartz.Der
NearestCentroid-Klassifikator wurde hinzugefügt, zusammen mit einem Parametershrink_threshold, der die **Shrunken Centroid Classification** implementiert, durch Robert Layton.
Weitere Änderungen#
Dichte und Sparse-Implementierungen des Moduls Stochastischer Gradientenabstieg zusammengeführt und Dienstprogramm-Erweiterungstypen für sequentielle Datensätze
seq_datasetund Gewichtsvektorenweight_vectordurch Peter Prettenhofer freigelegt.Hinzugefügt:
partial_fit(Unterstützung für Online-/Minibatch-Lernen) und warm_start zum Modul Stochastischer Gradientenabstieg, durch Mathieu Blondel.Dichte und Sparse-Implementierungen von Support Vector Machines-Klassen und
LogisticRegressionzusammengeführt, durch Lars Buitinck.Regressoren können nun als Basis-Schätzer im Modul Multi-Klassen- und Multi-Output-Algorithmen verwendet werden, durch Mathieu Blondel.
Hinzugefügt: n_jobs-Option zu
metrics.pairwise_distancesundmetrics.pairwise.pairwise_kernelsfür parallele Berechnungen, durch Mathieu Blondel.K-Means kann nun parallel ausgeführt werden, indem das Argument
n_jobsentweder in K-Means odercluster.KMeansverwendet wird, durch Robert Layton.Verbesserte Dokumentation zu Kreuzvalidierung: Leistung von Schätzern bewerten und Abstimmen der Hyperparameter eines Schätzers und Einführung der neuen Hilfsfunktion
cross_validation.train_test_split, durch Olivier GriselSVC-Mitgliedercoef_undintercept_haben ihr Vorzeichen geändert, um mitdecision_functionkonsistent zu sein; fürkernel==linearwurdecoef_im One-vs-One-Fall korrigiert, durch Andreas Müller.Leistungsverbesserungen für effiziente Leave-One-Out-kreuzvalidierte Ridge-Regression, insbesondere für den Fall
n_samples > n_features, inRidgeCV, von Reuben Fletcher-Costin.Refactoring und Vereinfachung der API für Text-Merkmalsextraktion und Fehler behoben, der einen möglichen negativen IDF verursachte, durch Olivier Grisel.
Die Beam-Pruning-Option im Modul
_BaseHMMwurde entfernt, da sie schwer zu Cythonisieren ist. Wenn Sie daran interessiert sind, zu einer Cython-Version beizutragen, können Sie die Python-Version im Git-Verlauf als Referenz verwenden.Klassen in Nearest Neighbors unterstützen nun beliebige Minkowski-Metriken für die Suche nach nächsten Nachbarn. Die Metrik kann über das Argument
pspezifiziert werden.
Zusammenfassung der API-Änderungen#
covariance.EllipticEnvelopist nun veraltet. Bitte verwenden Sie stattdessenEllipticEnvelope.NeighborsClassifierundNeighborsRegressorsind im Modul Nearest Neighbors verschwunden. Verwenden Sie stattdessen die KlassenKNeighborsClassifier,RadiusNeighborsClassifier,KNeighborsRegressorund/oderRadiusNeighborsRegressor.Sparse-Klassen im Modul Stochastischer Gradientenabstieg sind nun veraltet.
In
mixture.GMM,mixture.DPGMMundmixture.VBGMMmüssen Parameter beim Initialisieren eines Objekts übergeben werden und nicht überfit. Jetzt akzeptiertfitnur noch die Daten als Eingabeparameter.Methoden
rvsunddecodeim ModulGMMsind nun veraltet. Stattdessen solltensampleundscoreoderpredictverwendet werden.Attribute
_scoresund_pvaluesin univariaten Merkmalsauswahl-Objekten sind nun veraltet. Stattdessen solltenscores_oderpvalues_verwendet werden.In
LogisticRegression,LinearSVC,SVCundNuSVCist der Parameterclass_weightnun ein Initialisierungsparameter und kein Parameter fürfit. Dies ermöglicht Grid-Suchen über diesen Parameter.LFW
datahat nun immer die Form(n_samples, n_features), um mit dem Olivetti-Gesichtsdatensatz konsistent zu sein. Verwenden Sie stattdessen die Attributeimagesundpairs, um auf die natürlichen Bildformen zuzugreifen.In
LinearSVChat sich die Bedeutung des Parametersmulti_classgeändert. Optionen sind nun'ovr'und'crammer_singer', wobei'ovr'die Standardeinstellung ist. Dies ändert das Standardverhalten nicht, ist aber hoffentlich weniger verwirrend.Die Klasse
feature_selection.text.Vectorizerist veraltet und wird durchfeature_selection.text.TfidfVectorizerersetzt.Die verschachtelte Struktur von Preprocessor / Analyzer für die Text-Merkmalsextraktion wurde entfernt. Alle diese Funktionen werden nun direkt als flache Konstruktorargumente an
feature_selection.text.TfidfVectorizerundfeature_selection.text.CountVectorizerübergeben, insbesondere werden die folgenden Parameter verwendet:analyzerkann'word'oder'char'sein, um das Standard-Analyse-Schema zu wechseln, oder ein spezifischer Python-Callable (wie zuvor).tokenizerundpreprocessorwurden eingeführt, um es weiterhin zu ermöglichen, diese Schritte mit der neuen API anzupassen.inputsteuert explizit, wie die anfitundpredictübergebene Sequenz interpretiert wird: Dateinamen, Dateiobjekte oder direkte (Byte- oder Unicode-) Strings.Die Zeichensatzdekodierung ist standardmäßig explizit und streng.
Das
vocabulary(trainiert oder nicht) wird nun im Attributvocabulary_gespeichert, um mit den Projektkonventionen übereinzustimmen.Die Klasse
feature_selection.text.TfidfVectorizererbt nun direkt vonfeature_selection.text.CountVectorizer, um die Grid-Suche trivial zu machen.Methoden
rvsim Modul_BaseHMMsind nun veraltet. Stattdessen solltesampleverwendet werden.Die Beam-Pruning-Option im Modul
_BaseHMMwurde entfernt, da sie schwer zu Cythonisieren ist. Wenn Sie interessiert sind, können Sie im Git-Verlauf nach den Codes suchen.Der SVMlight-Formatlader unterstützt nun Dateien mit sowohl nullbasierten als auch einsbasierten Spaltenindizes, da beides "in freier Wildbahn" vorkommt.
Argumente in der Klasse
ShuffleSplitsind jetzt konsistent mitStratifiedShuffleSplit. Die Argumentetest_fractionundtrain_fractionsind veraltet und wurden intest_sizeundtrain_sizeumbenannt und können sowohlfloatals auchintakzeptieren.Argumente in der Klasse
Bootstrapsind jetzt konsistent mitStratifiedShuffleSplit. Die Argumenten_testundn_trainsind veraltet und wurden intest_sizeundtrain_sizeumbenannt und können sowohlfloatals auchintakzeptieren.Argument
pwurde den Klassen in Nearest Neighbors hinzugefügt, um eine beliebige Minkowski-Metrik für Nachbarschaftssuchen anzugeben.
Personen#
282 Andreas Müller
198 Gael Varoquaux
129 Olivier Grisel
114 Mathieu Blondel
103 Clay Woolam
28 flyingimmidev
26 Shiqiao Du
17 David Marek
14 Vlad Niculae
11 Yannick Schwartz
9 fcostin
7 Nick Wilson
5 Adrien Gaidon
5 Nelle Varoquaux
5 Emmanuelle Gouillart
3 Joonas Sillanpää
3 Paolo Losi
2 Charles McCarthy
2 Roy Hyunjin Han
2 Scott White
2 ibayer
1 Brandyn White
1 Carlos Scheidegger
1 Claire Revillet
1 Conrad Lee
1 Jan Hendrik Metzen
1 Meng Xinfan
1 Shiqiao
1 Udi Weinsberg
1 Virgile Fritsch
1 Xinfan Meng
1 Yaroslav Halchenko
1 jansoe
1 Leon Palafox
Version 0.10#
11. Januar 2012
Änderungsprotokoll#
Die Kompatibilität mit Python 2.5 wurde eingestellt; die minimale Python-Version für die Verwendung von scikit-learn ist jetzt 2.6.
Schätzung der dünnbesetzten inversen Kovarianz mittels Graph Lasso, mit zugehörigem kreuzvalidiertem Schätzer, von Gael Varoquaux
Neues Modul Baum von Brian Holt, Peter Prettenhofer, Satrajit Ghosh und Gilles Louppe. Das Modul enthält eine vollständige Dokumentation und Beispiele.
Ein Fehler im RFE-Modul wurde von Gilles Louppe behoben (issue #378).
Ein Speicherleck im Modul Support Vector Machines wurde von Brian Holt behoben (issue #367).
Schnellere Tests von Fabian Pedregosa und anderen.
Silhouette-Koeffizienten-Metrik zur Bewertung der Clusteranalyse als
silhouette_scorevon Robert Layton hinzugefügt.Ein Fehler in K-means bei der Behandlung des Parameters
n_initwurde behoben: Der Clustering-Algorithmus wurden_initMal ausgeführt, aber die letzte Lösung wurde beibehalten anstelle der besten Lösung, von Olivier Grisel.Kleinere Refactorings im Modul Stochastic Gradient Descent; dichte und dünnbesetzte Vorhersagemethoden konsolidiert; Testzeit-Performance verbessert, indem Modellparameter nach dem Fitting in Fortran-Style-Arrays konvertiert werden (nur Multi-Klasse).
Angepasste Mutual Information Metrik als
adjusted_mutual_info_scorevon Robert Layton hinzugefügt.Modelle wie SVC/SVR/LinearSVC/LogisticRegression von libsvm/liblinear unterstützen jetzt die Skalierung des Regularisierungsparameters C nach der Anzahl der Samples durch Alexandre Gramfort.
Neues Modul Ensemble Methoden von Gilles Louppe und Brian Holt. Das Modul enthält den Random Forest Algorithmus und die Extra-Trees-Methode, zusammen mit Dokumentation und Beispielen.
Erkennung von Neuheit und Ausreißern: Ausreißer- und Neuheitserkennung, von Virgile Fritsch.
Kernel-Approximation: eine Transformation, die Kernel-Approximation für schnelles SGD auf nicht-linearen Kerneln implementiert, von Andreas Müller.
Fehler durch Atom-Austausch in Orthogonal Matching Pursuit (OMP) von Vlad Niculae behoben.
Sparse-Coding mit einem vordefinierten Dictionary von Vlad Niculae.
Mini Batch K-Means Leistungsverbesserungen von Olivier Grisel.
K-means Unterstützung für dünnbesetzte Matrizen von Mathieu Blondel.
Verbesserte Dokumentation für Entwickler und für das Modul
sklearn.utils, von Jake Vanderplas.Vektorisierter Loader für den Datensatz 20newsgroups (
fetch_20newsgroups_vectorized) von Mathieu Blondel.Algorithmen für Multiclass und Multioutput von Lars Buitinck.
Hilfsmittel für schnelle Berechnung von Mittelwert und Varianz für dünnbesetzte Matrizen von Mathieu Blondel.
Machen
scaleundsklearn.preprocessing.Scalerauf dünnbesetzten Matrizen anwendbar, von Olivier GriselFeature-Wichtigkeiten unter Verwendung von Entscheidungsbäumen und/oder Wald von Bäumen, von Gilles Louppe.
Parallele Implementierung von Wäldern zufälliger Bäume von Gilles Louppe.
sklearn.cross_validation.ShuffleSplitkann die Trainingssätze sowie die Testsätze unterabfragen, von Olivier Grisel.Fehler in der Erstellung der Dokumentation von Andreas Müller behoben.
Zusammenfassung der API-Änderungen#
Hier sind die Anweisungen zur Code-Migration beim Upgrade von scikit-learn Version 0.9
Einige Schätzer, die ihre Eingaben überschreiben können, um Speicher zu sparen, hatten zuvor
overwrite_Parameter; diese wurden durchcopy_Parameter mit genau entgegengesetzter Bedeutung ersetzt.Dies betrifft insbesondere einige der Schätzer in
linear_model. Das Standardverhalten ist immer noch, alles übergebene zu kopieren.Der SVMlight-Datensatz-Loader
load_svmlight_fileunterstützt nicht mehr das Laden von zwei Dateien gleichzeitig; verwenden Sie stattdessenload_svmlight_files. Außerdem ist der (ungenutzte) Parameterbuffer_mbweggefallen.Dünnbesetzte Schätzer im Modul Stochastic Gradient Descent verwenden einen dichten Parametervektor
coef_anstelle vonsparse_coef_. Dies verbessert die Testzeit-Performance erheblich.Das Modul Kovarianzschätzung verfügt nun über einen robusten Kovarianzschätzer, den Minimum Covariance Determinant-Schätzer.
Cluster-Evaluierungsmetriken in
clusterwurden refaktoriert, aber die Änderungen sind abwärtskompatibel. Sie wurden nachmetrics.cluster.supervisedverschoben, zusammen mitmetrics.cluster.unsupervised, das den Silhouette-Koeffizienten enthält.Die Funktion
permutation_test_scoreverhält sich jetzt genauso wiecross_val_score(d.h. sie verwendet den Durchschnittswert über die Folds).Cross-Validation-Generatoren verwenden standardmäßig Ganzzahlindizes (
indices=True) anstelle von booleschen Masken. Dies erleichtert die Verwendung mit dünnbesetzten Matrixdaten.Die Funktionen für Sparse Coding,
sparse_encodeundsparse_encode_parallel, wurden zusparse_encodezusammengeführt und die Formen der Arrays wurden zur Konsistenz mit dem Matrixfaktorisierungssetting, im Gegensatz zum Regressionssetting, transponiert.Ein Off-by-One-Fehler bei der Verarbeitung des SVMlight/LibSVM-Dateiformats wurde behoben; Dateien, die mit
dump_svmlight_filegeneriert wurden, sollten neu generiert werden. (Sie sollten weiterhin funktionieren, hatten aber versehentlich eine zusätzliche Spalte Nullen vorangestellt.)BaseDictionaryLearningKlasse ersetzt durchSparseCodingMixin.sklearn.utils.extmath.fast_svdwurde inrandomized_svdumbenannt und die standardmäßige Überabtastung ist jetzt auf 10 zusätzliche Zufallsvektoren festgelegt, anstatt die Anzahl der zu extrahierenden Komponenten zu verdoppeln. Das neue Verhalten folgt der Referenzarbeit.
Personen#
Die folgenden Personen haben seit der letzten Veröffentlichung zu scikit-learn beigetragen
246 Andreas Müller
242 Olivier Grisel
220 Gilles Louppe
183 Brian Holt
166 Gael Varoquaux
144 Lars Buitinck
73 Vlad Niculae
60 Robert Layton
44 Noel Dawe
3 Jan Hendrik Metzen
3 Kenneth C. Arnold
3 Shiqiao Du
3 Tim Sheerman-Chase
2 Bala Subrahmanyam Varanasi
2 DraXus
2 Michael Eickenberg
1 Bogdan Trach
1 Félix-Antoine Fortin
1 Juan Manuel Caicedo Carvajal
1 Nelle Varoquaux
1 Tiziano Zito
1 Xinfan Meng
Version 0.9#
21. September 2011
scikit-learn 0.9 wurde im September 2011 veröffentlicht, drei Monate nach der Version 0.8 und beinhaltet die neuen Module Manifold Learning, Der Dirichlet-Prozess sowie mehrere neue Algorithmen und Verbesserungen der Dokumentation.
Diese Veröffentlichung beinhaltet auch die von Vlad Niculae im Rahmen des Google Summer of Code Programms entwickelte Dictionary-Learning-Arbeit.
Änderungsprotokoll#
Neues Modul Manifold Learning von Jake Vanderplas und Fabian Pedregosa.
Neues Dirichlet-Prozess-Gaußsches Mischmodell von Der Dirichlet-Prozess von Alexandre Passos
Refactoring des Moduls Nearest Neighbors von Jake Vanderplas: allgemeines Refactoring, Unterstützung für dünnbesetzte Matrizen als Eingabe, Geschwindigkeits- und Dokumentationsverbesserungen. Sehen Sie sich den nächsten Abschnitt für eine vollständige Liste der API-Änderungen an.
Verbesserungen am Modul Feature-Auswahl von Gilles Louppe: Refactoring der RFE-Klassen, Überarbeitung der Dokumentation, erhöhte Effizienz und kleinere API-Änderungen.
Sparse Principal Component Analysis (SparsePCA und MiniBatchSparsePCA) von Vlad Niculae, Gael Varoquaux und Alexandre Gramfort
Das Drucken eines Schätzers verhält sich jetzt unabhängig von Architekturen und Python-Version dank Jean Kossaifi.
Loader für das libsvm/svmlight-Format (Loader für libsvm/svmlight Format) von Mathieu Blondel und Lars Buitinck
Verbesserungen der Dokumentation: Thumbnails in der Beispielgalerie von Fabian Pedregosa.
Wichtige Fehlerbehebungen im Modul Support Vector Machines (Segfaults, schlechte Performance) von Fabian Pedregosa.
Hinzugefügt: Multinomial Naive Bayes und Bernoulli Naive Bayes von Lars Buitinck
Optimierungen der Text-Feature-Extraktion durch Lars Buitinck
Chi-Quadrat-Feature-Auswahl (
feature_selection.chi2) von Lars Buitinck.Refactoring des Moduls Generierte Datensätze von Gilles Louppe
Algorithmen für Multiclass und Multioutput von Mathieu Blondel
Neuschreibung des Ball Tree von Jake Vanderplas
Implementierung des DBSCAN Algorithmus von Robert Layton
Kmeans predict und transform von Robert Layton
Refactoring des Preprocessing-Moduls von Olivier Grisel
Schnellerer Mean Shift von Conrad Lee
Neue
Bootstrap, Zufällige Permutations-Kreuzvalidierung, auch bekannt als Shuffle & Split und verschiedene andere Verbesserungen bei Kreuzvalidierungsschemata von Olivier Grisel und Gael VaroquauxAngepasster Rand-Index und V-Measure Cluster-Evaluierungsmetriken von Olivier Grisel
Hinzugefügt:
Orthogonal Matching Pursuitvon Vlad NiculaeHinzugefügt: 2D-Patch-Extraktions-Hilfsprogramme im Modul Feature-Extraktion von Vlad Niculae
Implementierung von
LassoLarsCV(kreuzvalidierter Lasso-Solver unter Verwendung des Lars-Algorithmus) undLassoLarsIC(BIC/AIC-Modellauswahl in Lars) von Gael Varoquaux und Alexandre GramfortSkalierbarkeitsverbesserungen für
metrics.roc_curvevon Olivier HervieuDistanz-Hilfsfunktionen
metrics.pairwise_distancesundmetrics.pairwise.pairwise_kernelsvon Robert LaytonMini-Batch K-Meansvon Nelle Varoquaux und Peter Prettenhofer.mldata-Hilfsprogramme von Pietro Berkes.
Zusammenfassung der API-Änderungen#
Hier sind die Anweisungen zur Code-Migration beim Upgrade von scikit-learn Version 0.8
Das Paket
scikits.learnwurde insklearnumbenannt. Es gibt immer noch einen Alias für das Paketscikits.learnfür Abwärtskompatibilität.Drittanbieter-Projekte mit einer Abhängigkeit von scikit-learn 0.9+ sollten ihre Codebasis aktualisieren. Zum Beispiel unter Linux / MacOSX einfach ausführen (zuerst ein Backup erstellen!)
find -name "*.py" | xargs sed -i 's/\bscikits.learn\b/sklearn/g'
Schätzer akzeptieren Modellparameter nicht mehr als
fitArgumente: stattdessen müssen alle Parameter nur als Konstruktorargumente oder über die nun öffentliche Methodeset_params, die vonBaseEstimatorgeerbt wird, übergeben werden.Einige Schätzer können immer noch Schlüsselwortargumente bei
fitakzeptieren, dies ist jedoch auf datenabhängige Werte beschränkt (z.B. eine Gram-Matrix oder eine Affinitätsmatrix, die aus derXDatenmatrix vorab berechnet wurden.Das Paket
cross_valwurde incross_validationumbenannt, obwohl es auch einen Alias für das Paketcross_valfür Abwärtskompatibilität gibt.Drittanbieter-Projekte mit einer Abhängigkeit von scikit-learn 0.9+ sollten ihre Codebasis aktualisieren. Zum Beispiel unter Linux / MacOSX einfach ausführen (zuerst ein Backup erstellen!)
find -name "*.py" | xargs sed -i 's/\bcross_val\b/cross_validation/g'
Das Argument
score_funcder Funktionsklearn.cross_validation.cross_val_scorewird nun erwartet,y_testundy_predictedals einzige Argumente für Klassifikations- und Regressionsaufgaben oderX_testfür unüberwachte Schätzer zu akzeptieren.Der Parameter
gammafür Algorithmen von Support-Vektor-Maschinen ist standardmäßig auf1 / n_featuresgesetzt, anstatt auf1 / n_samples.Das Modul
sklearn.hmmwurde als verwaist markiert: Es wird aus scikit-learn in Version 0.11 entfernt, es sei denn, jemand erklärt sich bereit, Dokumentation, Beispiele beizusteuern und schleichende numerische Stabilitätsprobleme zu beheben.sklearn.neighborswurde zu einem Untermodul gemacht. Die beiden zuvor verfügbaren Schätzer,NeighborsClassifierundNeighborsRegressor, wurden als veraltet markiert. Ihre Funktionalität wurde auf fünf neue Klassen aufgeteilt:NearestNeighborsfür unüberwachte Nachbarschaftssuchen,KNeighborsClassifier&RadiusNeighborsClassifierfür überwachte Klassifikationsprobleme undKNeighborsRegressor&RadiusNeighborsRegressorfür überwachte Regressionsprobleme.sklearn.ball_tree.BallTreewurde nachsklearn.neighbors.BallTreeverschoben. Die Verwendung der ersteren wird eine Warnung generieren.sklearn.linear_model.LARS()und verwandte Klassen (LassoLARS, LassoLARSCV, etc.) wurden insklearn.linear_model.Lars()umbenannt.Alle Distanzmetriken und Kernel in
sklearn.metrics.pairwisehaben nun einen Y-Parameter, der standardmäßig None ist. Wenn dieser nicht angegeben wird, ist das Ergebnis die Distanz (oder Kernel-Ähnlichkeit) zwischen jedem Sample in Y. Wenn er angegeben wird, ist das Ergebnis die paarweise Distanz (oder Kernel-Ähnlichkeit) zwischen Samples in X und Y.sklearn.metrics.pairwise.l1_distanceheißt jetztmanhattan_distanceund gibt standardmäßig die paarweise Distanz zurück. Für die komponentenweise Distanz setzen Sie den Parametersum_over_featuresaufFalse.
Abwärtskompatible Paket-Aliase und andere veraltete Klassen und Funktionen werden in Version 0.11 entfernt.
Personen#
38 Personen haben zu dieser Veröffentlichung beigetragen.
387 Vlad Niculae
320 Olivier Grisel
192 Lars Buitinck
179 Gael Varoquaux
168 Fabian Pedregosa (INRIA, Parietal Team)
127 Jake Vanderplas
120 Mathieu Blondel
42 Robert Layton
38 Nelle Varoquaux
30 Conrad Lee
22 Pietro Berkes
18 andy
17 David Warde-Farley
12 Brian Holt
11 Robert
8 Amit Aides
6 Salvatore Masecchia
5 Paolo Losi
4 Vincent Schut
3 Alexis Metaireau
3 Bryan Silverthorn
2 Minwoo Jake Lee
1 Emmanuelle Gouillart
1 Keith Goodman
1 Lucas Wiman
1 Thouis (Ray) Jones
1 Tim Sheerman-Chase
Version 0.8#
11. Mai 2011
scikit-learn 0.8 wurde im Mai 2011 veröffentlicht, einen Monat nach dem ersten „internationalen“ scikit-learn Coding Sprint und zeichnet sich durch die Aufnahme wichtiger Module aus: Hierarchisches Clustering, Kreuzzerlegung, Nicht-negative Matrixfaktorisierung (NMF oder NNMF), erste Unterstützung für Python 3 und durch wichtige Erweiterungen und Fehlerbehebungen.
Änderungsprotokoll#
Mehrere neue Module wurden während dieser Veröffentlichung eingeführt
Neues Modul Hierarchisches Clustering von Vincent Michel, Bertrand Thirion, Alexandre Gramfort und Gael Varoquaux.
Kernel Principal Component Analysis (kPCA) Implementierung von Mathieu Blondel
Der Datensatz zur Gesichtserkennung Labeled Faces in the Wild (Der Labeled Faces in the Wild Datensatz zur Gesichtserkennung) von Olivier Grisel.
Neues Modul Kreuzzerlegung von Edouard Duchesnay.
Modul Nicht-negative Matrixfaktorisierung (NMF oder NNMF) von Vlad Niculae
Implementierung des Oracle Approximating Shrinkage Algorithmus von Virgile Fritsch im Modul Kovarianzschätzung.
Einige andere Module profitierten von signifikanten Verbesserungen oder Bereinigungen.
Erste Unterstützung für Python 3: Builds und Imports sind sauber, einige Module sind nutzbar, während andere fehlgeschlagene Tests haben, von Fabian Pedregosa.
PCAist jetzt über das Pipeline-Objekt nutzbar, von Olivier Grisel.Anleitung Wie man für Geschwindigkeit optimiert von Olivier Grisel.
Behebung von Speicherlecks in libsvm-Bindungen, 64-Bit-sicherer BallTree von Lars Buitinck.
Fehler- und Stilkorrekturen im K-Means-Algorithmus von Jan Schlüter.
Hinzufügen des Attributs converged zu Gaußschen Mischmodellen von Vincent Schut.
Implementiert
transform,predict_log_probainLinearDiscriminantAnalysisvon Mathieu Blondel.Refactoring im Modul Support Vector Machines und Fehlerbehebungen von Fabian Pedregosa, Gael Varoquaux und Amit Aides.
Refactoring des SGD-Moduls (Entfernung von Code-Duplizierung, bessere Variablennamen), Hinzufügen einer Schnittstelle für Stichprobengewichte von Peter Prettenhofer.
BallTree mit Cython umwickelt von Thouis (Ray) Jones.
Hinzufügen der Funktion
svm.l1_min_cvon Paolo Losi.Tippfehler, Dokumentationsstil usw. von Yaroslav Halchenko, Gael Varoquaux, Olivier Grisel, Yann Malet, Nicolas Pinto, Lars Buitinck und Fabian Pedregosa.
Personen#
Personen, die diese Veröffentlichung ermöglicht haben, gefolgt von der Anzahl der Commits
159 Olivier Grisel
96 Vlad Niculae
32 Paolo Losi
7 Lars Buitinck
6 Vincent Michel
4 Thouis (Ray) Jones
4 Vincent Schut
3 Jan Schlüter
2 Julien Miotte
2 Yann Malet
1 Amit Aides
1 Feth Arezki
1 Meng Xinfan
Version 0.7#
2. März 2011
scikit-learn 0.7 wurde im März 2011 veröffentlicht, etwa drei Monate nach der Version 0.6. Diese Version zeichnet sich durch Geschwindigkeitsverbesserungen in bestehenden Algorithmen wie k-Nearest Neighbors und K-Means aus und durch die Einbindung eines effizienten Algorithmus zur Berechnung der Ridge Generalized Cross Validation-Lösung. Im Gegensatz zur vorherigen Version wurden dieser Version keine neuen Module hinzugefügt.
Änderungsprotokoll#
Leistungsverbesserungen für Gaußsche Mischmodell-Sampling [Jan Schlüter].
Implementierung der effizienten Leave-One-Out-Kreuzvalidierung von Ridge in
RidgeCV[Mathieu Blondel]Bessere Handhabung von Kollinearität und frühem Stoppen in
linear_model.lars_path[Alexandre Gramfort und Fabian Pedregosa].Behebungen für die Label-Reihenfolge von liblinear und das Vorzeichen der Koeffizienten [Dan Yamins, Paolo Losi, Mathieu Blondel und Fabian Pedregosa].
Leistungsverbesserungen für den Nearest Neighbors-Algorithmus in hochdimensionalen Räumen [Fabian Pedregosa].
Leistungsverbesserungen für
KMeans[Gael Varoquaux und James Bergstra].Plausibilitätsprüfungen für SVM-basierte Klassen [Mathieu Blondel].
Refactoring von
neighbors.NeighborsClassifierundneighbors.kneighbors_graph: Hinzufügen verschiedener Algorithmen für die k-Nearest Neighbor-Suche und Implementierung eines stabileren Algorithmus zur Ermittlung von Baryzentrische Gewichten. Außerdem wurden einige Entwicklerdokumentationen für dieses Modul hinzugefügt, siehe notes_neighbors für weitere Informationen [Fabian Pedregosa].Verbesserungen der Dokumentation: Hinzufügen von
pca.RandomizedPCAundLogisticRegressionzur Klassenreferenz. Außerdem wurden Referenzen von Matrizen für Clustering und andere Korrekturen hinzugefügt [Gael Varoquaux, Fabian Pedregosa, Mathieu Blondel, Olivier Grisel, Virgile Fritsch , Emmanuelle Gouillart]Bindung von decision_function in Klassen, die liblinear verwenden, dichte und dünne Varianten, wie
LinearSVCoderLogisticRegression[Fabian Pedregosa].Leistungs- und API-Verbesserungen für
metrics.pairwise.euclidean_distancesund fürpca.RandomizedPCA[James Bergstra].Behebung von Kompilierungsproblemen unter NetBSD [Kamel Ibn Hassen Derouiche]
Erlaubt Eingabesequenzen unterschiedlicher Länge in
hmm.GaussianHMM[Ron Weiss].Behebung eines Fehlers in der Affinitätspropagation, der durch falsche Indizierung verursacht wurde [Xinfan Meng]
Personen#
Personen, die diese Veröffentlichung ermöglicht haben, gefolgt von der Anzahl der Commits
14 Dan Yamins
2 Satrajit Ghosh
2 Vincent Dubourg
1 Emmanuelle Gouillart
1 Kamel Ibn Hassen Derouiche
1 Paolo Losi
1 VirgileFritsch
1 Xinfan Meng
Version 0.6#
21. Dezember 2010
scikit-learn 0.6 wurde im Dezember 2010 veröffentlicht. Es zeichnet sich durch die Aufnahme mehrerer neuer Module und eine allgemeine Umbenennung älterer aus. Es zeichnet sich auch durch die Aufnahme neuer Beispiele aus, einschließlich Anwendungen auf reale Datensätze.
Änderungsprotokoll#
Neues Modul für stochastischen Gradientenabstieg von Peter Prettenhofer. Das Modul enthält eine vollständige Dokumentation und Beispiele.
Verbessertes svm-Modul: Der Speicherverbrauch wurde um 50% reduziert, Heuristik zur automatischen Einstellung von Klassengewichten, Möglichkeit zur Zuweisung von Gewichten zu Stichproben (siehe SVM: Gewichtete Stichproben für ein Beispiel).
Neues Modul Gaußsche Prozesse von Vincent Dubourg. Dieses Modul verfügt ebenfalls über eine hervorragende Dokumentation und einige sehr ansprechende Beispiele. Siehe example_gaussian_process_plot_gp_regression.py oder example_gaussian_process_plot_gp_probabilistic_classification_after_regression.py für einen Eindruck, was möglich ist.
Es ist jetzt möglich, die Multi-Class SVC von liblinear zu verwenden (Option multi_class in
LinearSVC)Neue Funktionen und Leistungsverbesserungen bei der Textmerkmalsextraktion.
Verbesserte Unterstützung für dünne Matrizen, sowohl in Hauptklassen (
GridSearchCV) als auch in den Modulen sklearn.svm.sparse und sklearn.linear_model.sparse.Viele coole neue Beispiele und ein neuer Abschnitt, der reale Datensätze verwendet, wurden erstellt. Dazu gehören: Gesichtserkennungsbeispiel mit Eigenfaces und SVMs, Artenverbreitungsmodellierung, Wikipedia Haupt-Eigenvektor und andere.
Schnellerer Least Angle Regression-Algorithmus. Er ist jetzt 2x schneller als die R-Version im Worst Case und bis zu 10x schneller in einigen Fällen.
Schnellerer Algorithmus für koordinierte Abstiegsverfahren. Insbesondere ist die Vollpfadversion von Lasso (
linear_model.lasso_path) mehr als 200x schneller als zuvor.Es ist jetzt möglich, Wahrscheinlichkeitsschätzungen von einem
LogisticRegression-Modell zu erhalten.Umbenennung von Modulen: Das glm-Modul wurde in linear_model umbenannt, das gmm-Modul wurde in das allgemeinere mixture model integriert und das sgd-Modul wurde in linear_model integriert.
Viele Fehlerbehebungen und Verbesserungen der Dokumentation.
Personen#
Personen, die diese Veröffentlichung ermöglicht haben, gefolgt von der Anzahl der Commits
207 Olivier Grisel
167 Fabian Pedregosa
33 Vincent Dubourg
21 Ron Weiss
9 Bertrand Thirion
3 Anne-Laure Fouque
2 Ronan Amicel
Version 0.5#
11. Oktober 2010
Änderungsprotokoll#
Neue Klassen#
Unterstützung für dünne Matrizen in einigen Klassifikatoren der Module
svmundlinear_model(siehesvm.sparse.SVC,svm.sparse.SVR,svm.sparse.LinearSVC,linear_model.sparse.Lasso,linear_model.sparse.ElasticNet)Neues Objekt
Pipelinezur Komposition verschiedener Schätzer.Routinen für Recursive Feature Elimination im Modul Merkmalsauswahl.
Hinzufügung verschiedener Klassen, die für Kreuzvalidierung im linear_model-Modul geeignet sind (
LassoCV,ElasticNetCV, etc.).Neue, effizientere LARS-Algorithmus-Implementierung. Die Lasso-Variante des Algorithmus ist ebenfalls implementiert. Siehe
lars_path,LarsundLassoLars.Neues Modul für Hidden Markov Models (siehe Klassen
hmm.GaussianHMM,hmm.MultinomialHMM,hmm.GMMHMM)Neues Modul feature_extraction (siehe Klassenreferenz)
Neuer FastICA-Algorithmus im Modul sklearn.fastica
Dokumentation#
Verbesserte Dokumentation für viele Module, wobei nun die narrative Dokumentation von der Klassenreferenz getrennt ist. Als Beispiel siehe Dokumentation für das SVM-Modul und die vollständige Klassenreferenz.
Behebungen#
API-Änderungen: Variablennamen an PEP-8 anpassen, aussagekräftigere Namen geben.
Behebungen für das svm-Modul zur Ausführung in einem Shared Memory-Kontext (Multiprocessing).
Es ist wieder möglich, Latex (und somit PDF) aus den Sphinx-Dokumenten zu generieren.
Beispiele#
Neue Beispiele mit einigen der mlcomp-Datensätze:
sphx_glr_auto_examples_mlcomp_sparse_document_classification.py(seitdem entfernt) und Klassifizierung von Textdokumenten mit dünnen MerkmalenViele weitere Beispiele. Sehen Sie hier die vollständige Liste der Beispiele.
Externe Abhängigkeiten#
Joblib ist jetzt eine Abhängigkeit dieses Pakets, obwohl es mitgeliefert wird (sklearn.externals.joblib).
Entfernte Module#
Das Modul ann (Artificial Neural Networks) wurde aus der Distribution entfernt. Benutzer, die solche Algorithmen wünschen, sollten sich pybrain ansehen.
Sonstiges#
Neues Sphinx-Theme für die Webseite.
Version 0.4#
26. August 2010
Änderungsprotokoll#
Wesentliche Änderungen in dieser Version sind:
Coordinate Descent-Algorithmus (Lasso, ElasticNet) Refactoring & Geschwindigkeitsverbesserungen (ungefähr 100x schneller).
Coordinate Descent Refactoring (und Fehlerbehebung) zur Konsistenz mit R's Paket GLMNET.
Neues Metrics-Modul.
Neues GMM-Modul, beigesteuert von Ron Weiss.
Implementierung des LARS-Algorithmus (vorerst ohne Lasso-Variante).
Redesign des feature_selection-Moduls.
Migration zu GIT als Versionskontrollsystem.
Entfernung des veralteten attrselect-Moduls.
Umbenennung von privaten kompilierten Erweiterungen (Unterstrich hinzugefügt).
Entfernung von veraltetem, nicht gewartetem Code.
Verbesserungen der Dokumentation (sowohl Docstrings als auch rst).
Verbesserung des Build-Systems zur (optionalen) Verknüpfung mit MKL. Außerdem Bereitstellung einer Lite-BLAS-Implementierung, falls kein systemweites BLAS gefunden wird.
Viele neue Beispiele.
Viele, viele Fehlerbehebungen...
Autoren#
Die Committer-Liste für diese Veröffentlichung ist die folgende (vorangestellt von der Anzahl der Commits)
143 Fabian Pedregosa
35 Alexandre Gramfort
34 Olivier Grisel
11 Gael Varoquaux
5 Yaroslav Halchenko
2 Vincent Michel
1 Chris Filo Gorgolewski
Frühere Versionen#
Frühere Versionen enthielten Beiträge von Fred Mailhot, David Cooke, David Huard, Dave Morrill, Ed Schofield, Travis Oliphant, Pearu Peterson.