Version 0.18#
Warnung
Scikit-learn 0.18 ist die letzte Hauptversion von scikit-learn, die Python 2.6 unterstützt. Spätere Versionen von scikit-learn erfordern Python 2.7 oder höher.
Version 0.18.2#
20. Juni 2017
Änderungsprotokoll#
Code-Mitarbeiter#
Aman Dalmia, Loic Esteve, Nate Guerin, Sergei Lebedev
Version 0.18.1#
11. November 2016
Änderungsprotokoll#
Verbesserungen#
Verbesserte Geschwindigkeit von
sample_without_replacementdurch Nutzung von numpy.random.permutation für die meisten Fälle. Als Ergebnis können Stichproben in dieser Version für einen festen Zufallszustand unterschiedlich sein. Betroffene SchätzerDies betrifft auch die Methode
datasets.make_classification.
Fehlerbehebungen#
Behebung eines Problems, bei dem die Parameter
min_grad_normundn_iter_without_progressvonmanifold.TSNEnicht verwendet wurden. #6497 von Sebastian SägerBehebung eines Fehlers bei den Entscheidungswerten von SVMs, wenn
decision_function_shapeovrist, insvm.SVC. Die Entscheidung_Funktion vonsvm.SVCwar von den Versionen 0.17.0 bis 0.18.0 falsch. #7724 von Bing Tian DaiDas Attribut
explained_variance_ratiovondiscriminant_analysis.LinearDiscriminantAnalysis, berechnet mit SVD und Eigen-Solver, hat nun die gleiche Länge. #7632 von JPFrancoiaBehebung eines Problems bei der univariaten Merkmalsauswahl, bei dem Punktwertfunktionen keine Multi-Label-Ziele akzeptierten. #7676 von Mohammed Affan
Behebung der Einstellung von Parametern beim mehrfachen Aufruf von
fitauffeature_selection.SelectFromModel. #7756 von Andreas MüllerBehebung eines Problems in der Methode
partial_fitvonmulticlass.OneVsRestClassifier, wenn die Anzahl der inpartial_fitverwendeten Klassen kleiner war als die Gesamtzahl der Klassen in den Daten. #7786 von Srivatsan RameshBehebung eines Problems in
calibration.CalibratedClassifierCV, bei dem die Summe der Wahrscheinlichkeiten jeder Klasse für Daten nicht 1 war, undCalibratedClassifierCVbehandelt nun den Fall, dass der Trainingsdatensatz weniger Klassen als die Gesamtdaten hat. #7799 von Srivatsan RameshBehebung eines Fehlers, bei dem
sklearn.feature_selection.SelectFdrdas Benjamini-Hochberg-Verfahren nicht exakt implementierte. Es wählte früher möglicherweise weniger Merkmale aus als erforderlich. #7490 von Peng Meng.sklearn.manifold.LocallyLinearEmbeddingbehandelt nun Integer-Eingaben korrekt. #6282 von Jake Vanderplas.Der Parameter
min_weight_fraction_leafvon baumbasierten Klassifikatoren und Regressoren geht nun von gleichmäßigen Stichprobengewichten aus, wenn das Argumentsample_weightnicht an die Funktionfitübergeben wird. Zuvor wurde der Parameter stillschweigend ignoriert. #7301 von Nelson Liu.Numerisches Problem mit
linear_model.RidgeCVbei zentrierten Daten, wennn_features > n_samples. #6178 von Bertrand ThirionDas Klonen/Pickling von Baumaufteilungs-Kriterium-Klassen ist nun speichersicher #7680 von Ibraim Ganiev.
Behebung eines Fehlers, bei dem
decomposition.NMFsein Attributn_iters_intransform()setzt. #7553 von Ekaterina Krivich.sklearn.linear_model.LogisticRegressionCVbehandelt nun Zeichenketten-Labels korrekt. #5874 von Raghav RV.Behebung eines Fehlers, bei dem
sklearn.model_selection.train_test_spliteinen Fehler auslöste, wennstratifyeine Liste von Zeichenketten-Labels war. #7593 von Raghav RV.Behebung eines Fehlers, bei dem
sklearn.model_selection.GridSearchCVundsklearn.model_selection.RandomizedSearchCVaufgrund eines Pickling-Fehlers innp.ma.MaskedArraynicht pickelbar waren. #7594 von Raghav RV.Alle Cross-Validation-Utilities in
sklearn.model_selectionerlauben nun One-Time-Cross-Validation-Splitter für den Parametercv. Auch nicht-deterministische Cross-Validation-Splitter (bei denen mehrere Aufrufe vonsplitunterschiedliche Aufteilungen ergeben) können alscv-Parameter verwendet werden.sklearn.model_selection.GridSearchCVwird jede Parametereinstellung anhand der vom erstensplit-Aufruf des Cross-Validation-Splitters erzeugten Aufteilung validieren. #7660 von Raghav RV.Fehlerbehebung, bei der
preprocessing.MultiLabelBinarizer.fit_transformeine ungültige CSR-Matrix zurückgab. #7750 von CJ Carey.Behebung eines Fehlers, bei dem
metrics.pairwise.cosine_distanceseine geringfügig negative Distanz zurückgeben konnte. #7732 von Artsion.
Zusammenfassung der API-Änderungen#
Bäume und Wälder
Der Parameter
min_weight_fraction_leafvon baumbasierten Klassifikatoren und Regressoren geht nun von gleichmäßigen Stichprobengewichten aus, wenn das Argumentsample_weightnicht an die Funktionfitübergeben wird. Zuvor wurde der Parameter stillschweigend ignoriert. #7301 von Nelson Liu.Das Klonen/Pickling von Baumaufteilungs-Kriterium-Klassen ist nun speichersicher. #7680 von Ibraim Ganiev.
Lineare, kernelisierte und verwandte Modelle
Die Länge von
explained_variance_ratiovondiscriminant_analysis.LinearDiscriminantAnalysishat sich sowohl für den Eigen- als auch für den SVD-Solver geändert. Das Attribut hat nun die Länge min(n_components, n_classes - 1). #7632 von JPFrancoiaNumerisches Problem mit
linear_model.RidgeCVbei zentrierten Daten, wennn_features > n_samples. #6178 von Bertrand Thirion
Version 0.18#
28. September 2016
Verbesserungen und API-Änderungen bei der Modellauswahl#
Das Modul model_selection
Das neue Modul
sklearn.model_selection, das die Funktionalitäten der früheren Modulesklearn.cross_validation,sklearn.grid_searchundsklearn.learning_curvezusammenfasst, führt neue Möglichkeiten ein, wie verschachtelte Kreuzvalidierung und bessere Manipulation von Parametersuchen mit Pandas.Viele Dinge bleiben gleich, aber es gibt einige wichtige Unterschiede. Lesen Sie weiter unten, um mehr über die Änderungen zu erfahren.
Datenunabhängige CV-Splitter für verschachtelte Kreuzvalidierung
Die neuen Kreuzvalidierungs-Splitter, die in
sklearn.model_selectiondefiniert sind, werden nicht mehr mit datenabhängigen Parametern wieyinitialisiert. Stattdessen bieten sie einesplit-Methode, die die Daten entgegennimmt und einen Generator für die verschiedenen Aufteilungen liefert.Diese Änderung ermöglicht die Verwendung der Kreuzvalidierungs-Splitter zur Durchführung von verschachtelten Kreuzvalidierungen, unterstützt durch die Utilities
model_selection.GridSearchCVundmodel_selection.RandomizedSearchCV.Das erweiterte cv_results_-Attribut
Das neue Attribut
cv_results_(vonmodel_selection.GridSearchCVundmodel_selection.RandomizedSearchCV) ersetzt das Attributgrid_scores_und ist ein Wörterbuch mit 1D-Arrays, wobei die Elemente in jedem Array den Parametereinstellungen (d. h. Suchkandidaten) entsprechen.Das Wörterbuch
cv_results_kann einfach inpandasalsDataFrameimportiert werden, um die Suchergebnisse zu analysieren.Die Arrays
cv_results_enthalten Punktwerte für jede Kreuzvalidierungsaufteilung (mit Schlüsseln wie'split0_test_score') sowie deren Mittelwert ('mean_test_score') und Standardabweichung ('std_test_score').Die Ränge der Suchkandidaten (basierend auf ihrem mittleren Kreuzvalidierungs-Score) sind unter
cv_results_['rank_test_score']verfügbar.Die Parameterwerte für jeden Parameter werden separat als masked NumPy-Objekt-Arrays gespeichert. Der Wert für diesen Suchkandidaten ist maskiert, wenn der entsprechende Parameter nicht anwendbar ist. Zusätzlich wird eine Liste aller Parameterwörterbücher unter
cv_results_['params']gespeichert.Parameter n_folds und n_iter umbenannt in n_splits
Einige Parameternamen haben sich geändert: Der Parameter
n_foldsin den neuen Klassenmodel_selection.KFold,model_selection.GroupKFold(siehe unten für die Namensänderung) undmodel_selection.StratifiedKFoldwurde inn_splitsumbenannt. Der Parametern_iterinmodel_selection.ShuffleSplit, der neuen Klassemodel_selection.GroupShuffleSplitundmodel_selection.StratifiedShuffleSplitwurde inn_splitsumbenannt.Umbenennung von Splitter-Klassen, die Gruppenlabels zusammen mit Daten akzeptieren
Die Kreuzvalidierungs-Splitter
LabelKFold,LabelShuffleSplit,LeaveOneLabelOutundLeavePLabelOutwurden inmodel_selection.GroupKFold,model_selection.GroupShuffleSplit,model_selection.LeaveOneGroupOutundmodel_selection.LeavePGroupsOutumbenannt.Beachten Sie die Änderung von der Singular- zur Pluralform in
model_selection.LeavePGroupsOut.Parameter fit labels umbenannt in groups
Der Parameter
labelsin dersplit-Methode der neu umbenannten Splittermodel_selection.GroupKFold,model_selection.LeaveOneGroupOut,model_selection.LeavePGroupsOut,model_selection.GroupShuffleSplitwurde ingroupsumbenannt, entsprechend der neuen Nomenklatur ihrer Klassennamen.Parameter n_labels umbenannt in n_groups
Der Parameter
n_labelsin der neu umbenannten Klassemodel_selection.LeavePGroupsOutwurde inn_groupsgeändert.Trainingspunktwerte und Timing-Informationen
cv_results_enthält auch die Trainingspunktwerte für jede Kreuzvalidierungsaufteilung (mit Schlüsseln wie'split0_train_score') sowie deren Mittelwert ('mean_train_score') und Standardabweichung ('std_train_score'). Um die Kosten für die Auswertung des Trainings-Scores zu vermeiden, setzen Siereturn_train_score=False.Zusätzlich sind der Mittelwert und die Standardabweichung der Zeiten, die für die Aufteilung, das Training und die Bewertung des Modells über alle Kreuzvalidierungsaufteilungen hinweg benötigt werden, unter den Schlüsseln
'mean_time'bzw.'std_time'verfügbar.
Änderungsprotokoll#
Neue Funktionen#
Klassifikatoren und Regressoren
Das Gauß-Prozess-Modul wurde neu implementiert und bietet nun Klassifizierungs- und Regressionsschätzer über
gaussian_process.GaussianProcessClassifierundgaussian_process.GaussianProcessRegressor. Die neue Implementierung unterstützt unter anderem Kernel-Engineering, gradientenbasierte Hyperparameter-Optimierung oder das Sampling von Funktionen aus dem GP-Prior und GP-Posterior. Umfangreiche Dokumentation und Beispiele sind verfügbar. Von Jan Hendrik Metzen.Neuer Algorithmus für überwachtes Lernen hinzugefügt: Multi-layer Perceptron #3204 von Issam H. Laradji
Hinzugefügt
linear_model.HuberRegressor, ein lineares Modell, das robust gegenüber Ausreißern ist. #5291 von Manoj Kumar.Der Meta-Schätzer
multioutput.MultiOutputRegressorwurde hinzugefügt. Er wandelt Single-Output-Regressoren in Multi-Output-Regressoren um, indem er einen Regressor pro Ausgabe anpasst. Von Tim Head.
Andere Schätzer
Neue Klassen
mixture.GaussianMixtureundmixture.BayesianGaussianMixtureersetzen frühere Mischmodelle und verwenden schnellere Inferenz für fundiertere Ergebnisse. #7295 von Wei Xue und Thierry Guillemot.Die Klasse
decomposition.RandomizedPCAwurde indecomposition.PCAintegriert und ist durch Aufruf mit dem Parametersvd_solver='randomized'verfügbar. Die Standardanzahl vonn_iterfür'randomized'wurde auf 4 geändert. Das alte Verhalten von PCA wird durchsvd_solver='full'wiederhergestellt. Ein zusätzlicher Solver ruftarpackauf und führt eine abgeschnittene (nicht-randomisierte) SVD durch. Standardmäßig wird der beste Solver basierend auf der Größe der Eingabe und der angeforderten Anzahl von Komponenten ausgewählt. Von Giorgio Patrini.Zwei Funktionen zur Schätzung der gegenseitigen Information hinzugefügt:
feature_selection.mutual_info_classifundfeature_selection.mutual_info_regression. Diese Funktionen können infeature_selection.SelectKBestundfeature_selection.SelectPercentileals Score-Funktionen verwendet werden. Von Andrea Bravi und Nikolay Mayorov.Die Klasse
ensemble.IsolationForestzur Anomalieerkennung auf Basis von Random Forests wurde hinzugefügt. Von Nicolas Goix.Zu
cluster.KMeanswurdealgorithm="elkan"hinzugefügt, das den schnellen K-Means-Algorithmus von Elkan implementiert. Von Andreas Müller.
Modellauswahl und -bewertung
Die Funktion
metrics.fowlkes_mallows_scorewurde hinzugefügt, der Fowlkes-Mallows-Index, der die Ähnlichkeit zweier Clusterings einer Punktmenge misst. Von Arnaud Fouchet und Thierry Guillemot.Die Funktion
metrics.calinski_harabaz_scorewurde hinzugefügt, die den Calinski-Harabaz-Score zur Bewertung des resultierenden Clusterings einer Punktmenge berechnet. Von Arnaud Fouchet und Thierry Guillemot.Ein neuer Kreuzvalidierungs-Splitter
model_selection.TimeSeriesSplitwurde zur Verarbeitung von Zeitreihendaten hinzugefügt. #6586 von YenChen LinDie Kreuzvalidierungs-Iteratoren werden durch Kreuzvalidierungs-Splitter aus
sklearn.model_selectionersetzt, was verschachtelte Kreuzvalidierungen ermöglicht. Weitere Informationen finden Sie unter Verbesserungen und API-Änderungen bei der Modellauswahl. #4294 von Raghav RV.
Verbesserungen#
Bäume und Ensembles
Ein neues Aufteilungs-Kriterium für
tree.DecisionTreeRegressorwurde hinzugefügt: der mittlere absolute Fehler. Dieses Kriterium kann auch inensemble.ExtraTreesRegressor,ensemble.RandomForestRegressorund den Gradient-Boosting-Schätzern verwendet werden. #6667 von Nelson Liu.Hinzugefügtes gewichtetes, auf Verunreinigung basiertes Kriterium für frühes Stoppen des Wachstums von Entscheidungsbäumen. #6954 von Nelson Liu
Die Schätzer für Zufallswälder, Extra Trees und Entscheidungsbäume haben nun eine Methode
decision_path, die den Entscheidungsbaum von Stichproben im Baum zurückgibt. Von Arnaud Joly.Ein neues Beispiel wurde hinzugefügt, das die Struktur des Entscheidungsbaums aufzeigt. Von Arnaud Joly.
Zufallswälder, Extra Trees, Entscheidungsbäume und Gradient Boosting Schätzer akzeptieren die Parameter
min_samples_splitundmin_samples_leaf, die als Prozentsatz der Trainingsstichproben angegeben werden. Von yelite und Arnaud Joly.Gradient Boosting Schätzer akzeptieren den Parameter
criterion, um das Teilungskriterium für die erstellten Entscheidungsbäume anzugeben. #6667 von Nelson Liu.Der Speicherverbrauch wird für
ensemble.bagging.BaseBaggingund davon abgeleitete Klassen, z. B.ensemble.BaggingClassifier,ensemble.BaggingRegressorundensemble.IsolationForest, reduziert (manchmal erheblich), indem das Attributestimators_samples_dynamisch und nur bei Bedarf generiert wird. Von David Staub.Hinzugefügte Parameter
n_jobsundsample_weightfürensemble.VotingClassifier, um zugrundeliegende Schätzer parallel zu trainieren. #5805 von Ibraim Ganiev.
Lineare, kernelisierte und verwandte Modelle
In
linear_model.LogisticRegressionist der SAG-Solver nun auch im multivariaten Fall verfügbar. #5251 von Tom Dupre la Tour.linear_model.RANSACRegressor,svm.LinearSVCundsvm.LinearSVRunterstützen nunsample_weight. Von Imaculate.Parameter
losszulinear_model.RANSACRegressorhinzugefügt, um den Fehler bei den Stichproben für jeden Versuch zu messen. Von Manoj Kumar.Die Vorhersage von Out-of-Sample-Ereignissen mit Isotonic Regression (
isotonic.IsotonicRegression) ist nun deutlich schneller (über 1000x in Tests mit synthetischen Daten). Von Jonathan Arfa.Isotonic Regression (
isotonic.IsotonicRegression) verwendet nun einen besseren Algorithmus, um einO(n^2)Verhalten in pathologischen Fällen zu vermeiden, und ist generell auch schneller (##6691). Von Antony Lee.naive_bayes.GaussianNBakzeptiert nun datenunabhängige Klassenvorhersagen über den Parameterpriors. Von Guillaume Lemaitre.linear_model.ElasticNetundlinear_model.Lassoarbeiten nun mitnp.float32Eingabedaten, ohne sie innp.float64zu konvertieren. Dies ermöglicht eine Reduzierung des Speicherverbrauchs. #6913 von YenChen Lin.semi_supervised.LabelPropagationundsemi_supervised.LabelSpreadingakzeptieren nun beliebige Kernel-Funktionen zusätzlich zu den Stringsknnundrbf. #5762 von Utkarsh Upadhyay.
Zerlegung, Manifold Learning und Clustering
Hinzufügung der Funktion
inverse_transformzudecomposition.NMF, um die Datenmatrix ursprünglicher Form zu berechnen. Von Anish Shah.cluster.KMeansundcluster.MiniBatchKMeansarbeiten nun mitnp.float32undnp.float64Eingabedaten, ohne diese zu konvertieren. Dies ermöglicht eine Reduzierung des Speicherverbrauchs durch die Verwendung vonnp.float32. #6846 von Sebastian Säger und YenChen Lin.
Vorverarbeitung und Merkmalsauswahl
preprocessing.RobustScalerakzeptiert nun den Parameterquantile_range. #5929 von Konstantin Podshumok.feature_extraction.FeatureHasherakzeptiert nun Zeichenkettenwerte. #6173 von Ryad Zenine und Devashish Deshpande.Schlüsselwortargumente können nun über den Parameter
kw_argsanfuncinpreprocessing.FunctionTransformerübergeben werden. Von Brian McFee.feature_selection.SelectKBestundfeature_selection.SelectPercentileakzeptieren nun Bewertungsfunktionen, die X, y als Eingabe nehmen und nur die Bewertungen zurückgeben. Von Nikolay Mayorov.
Modellauswertung und Meta-Schätzer
multiclass.OneVsOneClassifierundmulticlass.OneVsRestClassifierunterstützen nunpartial_fit. Von Asish Panda und Philipp Dowling.Unterstützung für den Austausch oder die Deaktivierung von Komponenten in
pipeline.Pipelineundpipeline.FeatureUnionüber die Schnittstelleset_params, diesklearn.grid_searchantreibt, wurde hinzugefügt. Siehe Auswahl der Dimensionalitätsreduktion mit Pipeline und GridSearchCV Von Joel Nothman und Robert McGibbon.Das neue Attribut
cv_results_vonmodel_selection.GridSearchCV(undmodel_selection.RandomizedSearchCV) kann einfach alsDataFramein Pandas importiert werden. Weitere Informationen finden Sie unter Verbesserungen und API-Änderungen bei der Modellauswahl. #6697 von Raghav RV.Verallgemeinerung von
model_selection.cross_val_predict. Man kann Methodennamen wiepredict_probaübergeben, die im Kreuzvalidierungsframework anstelle des Standardwertspredictverwendet werden sollen. Von Ori Ziv und Sears Merritt.Die Trainingsergebnisse und die für das Training benötigte Zeit, gefolgt von der Bewertung für jeden Suchkandidaten, sind nun im Wörterbuch
cv_results_verfügbar. Weitere Informationen finden Sie unter Verbesserungen und API-Änderungen bei der Modellauswahl. #7325 von Eugene Chen und Raghav RV.
Metriken
Hinzugefügtes Flag
labelszumetrics.log_loss, um die Labels explizit anzugeben, wenn die Anzahl der Klassen iny_trueundy_predunterschiedlich ist. #7239 von Hong Guangguo mit Hilfe von Mads Jensen und Nelson Liu.Unterstützung für spärliche Kontingenzmatrizen in der Cluster-Bewertung (
metrics.cluster.supervised), um die Skalierbarkeit auf eine große Anzahl von Clustern zu ermöglichen. #7419 von Gregory Stupp und Joel Nothman.Parameter
sample_weightzumetrics.matthews_corrcoefhinzugefügt. Von Jatin Shah und Raghav RV.Beschleunigung von
metrics.silhouette_scoredurch Verwendung vektorisierter Operationen. Von Manoj Kumar.Parameter
sample_weightzumetrics.confusion_matrixhinzugefügt. Von Bernardo Stein.
Verschiedenes
Hinzugefügter Parameter
n_jobszufeature_selection.RFECV, um die Bewertung auf den Testfaltungen parallel durchzuführen. Von Manoj KumarDer Code-Bestand enthält keine generierten C/C++-Cython-Dateien: sie werden während des Builds generiert. Distributionspakete enthalten weiterhin generierte C/C++-Dateien. Von Arthur Mensch.
Reduzierung des Speicherverbrauchs für 32-Bit-Float-Eingabearrays von
utils.sparse_func.mean_variance_axisundutils.sparse_func.incr_mean_variance_axisdurch Unterstützung von Cython-Fused-Typen. Von YenChen Lin.ignore_warningsakzeptiert nun ein Kategorie-Argument, um nur die Warnungen eines bestimmten Typs zu ignorieren. Von Thierry Guillemot.Hinzugefügter Parameter
return_X_yund Rückgabetyp(data, target) : tupleOption für den Datensatzdatasets.load_iris#7049, den Datensatzdatasets.load_breast_cancer#7152, den Datensatzdatasets.load_digits, den Datensatzdatasets.load_diabetes, den Datensatzdatasets.load_linnerud, den Datensatzdatasets.load_boston#7154. Von Manvendra Singh.Vereinfachung der Funktion
clone, Deprecation der Unterstützung für Schätzer, die Parameter in__init__ändern. #5540 von Andreas Müller.Beim Entpickeln eines scikit-learn Schätzers in einer anderen Version als der, mit der der Schätzer trainiert wurde, wird eine
UserWarningausgegeben. Weitere Details finden Sie in der Dokumentation zur Modellpersistenz. (#7248) Von Andreas Müller.
Fehlerbehebungen#
Bäume und Ensembles
Zufallswälder, Extra Trees, Entscheidungsbäume und Gradient Boosting akzeptieren nicht mehr
min_samples_split=1, da mindestens 2 Stichproben zum Teilen eines Entscheidungsknotens erforderlich sind. Von Arnaud Jolyensemble.VotingClassifierlöst nunNotFittedErroraus, wennpredict,transformoderpredict_probaauf dem nicht trainierten Schätzer aufgerufen werden. Von Sebastian Raschka.Fehler behoben, bei dem
ensemble.AdaBoostClassifierundensemble.AdaBoostRegressorschlecht performten, wennrandom_stategesetzt war (#7411). Von Joel Nothman.Fehler in Ensembles mit Randomisierung behoben, bei dem das Ensemble
random_statenicht auf Basis-Schätzer in einer Pipeline oder ähnlicher Verschachtelung setzte. (#7411). Beachten Sie, dass die Ergebnisse fürensemble.BaggingClassifierensemble.BaggingRegressor,ensemble.AdaBoostClassifierundensemble.AdaBoostRegressornun von früheren Versionen abweichen werden. Von Joel Nothman.
Lineare, kernelisierte und verwandte Modelle
Falsche Gradientenberechnung für
loss='squared_epsilon_insensitive'inlinear_model.SGDClassifierundlinear_model.SGDRegressor(#6764) behoben. Von Wenhua Yang.Fehler in
linear_model.LogisticRegressionCVbehoben, bei demsolver='liblinear'class_weights='balancednicht akzeptierte. (#6817). Von Tom Dupre la Tour.Fehler in
neighbors.RadiusNeighborsClassifierbehoben, bei dem ein Fehler auftrat, wenn Ausreißer mit einem Gewichtungsfunktion markiert und spezifiziert wurden (#6902). Von LeonieBorne.Fehler in
linear_model.ElasticNetkorrigiert, damit die spärliche Entscheidungsfunktion im Multi-Output-Fall mit der dichten Version übereinstimmt.
Zerlegung, Manifold Learning und Clustering
Die Standardanzahl von
iterated_powerindecomposition.RandomizedPCAist 4 statt 3. #5141 von Giorgio Patrini.utils.extmath.randomized_svdführt standardmäßig 4 Potenziterationen durch, anstatt 0. In der Praxis reicht dies aus, um eine gute Annäherung an die wahren Eigenwerte/-vektoren bei Vorhandensein von Rauschen zu erhalten. Wennn_componentsklein ist (< .1 * min(X.shape)), wirdn_iterauf 7 gesetzt, es sei denn, der Benutzer gibt eine höhere Zahl an. Dies verbessert die Genauigkeit bei wenigen Komponenten. #5299 von Giorgio Patrini.Inkonsistenz zwischen Whitening/Nicht-Whitening der Komponenten von
decomposition.PCAunddecomposition.RandomizedPCA(jetzt in PCA integriert, siehe Neue Funktionen) wurde behoben.components_werden ohne Whitening gespeichert. #5299 von Giorgio Patrini.Fehler in
manifold.spectral_embeddingbehoben, bei dem die Diagonale der unnormalisierten Laplace-Matrix falsch auf 1 gesetzt wurde. #4995 von Peter Fischer.Fehlerhafte Initialisierung von
utils.arpack.eigshin allen Fällen behoben. Betrifftcluster.bicluster.SpectralBiclustering,decomposition.KernelPCA,manifold.LocallyLinearEmbeddingundmanifold.SpectralEmbedding(#5012). Von Peter Fischer.Das Attribut
explained_variance_ratio_, das mit dem SVD-Solver vondiscriminant_analysis.LinearDiscriminantAnalysisberechnet wurde, liefert nun korrekte Ergebnisse. Von JPFrancoia
Vorverarbeitung und Merkmalsauswahl
preprocessing.data._transform_selectedübergibt nun immer eine Kopie vonXan die Transformationsfunktion, wenncopy=Trueist (#7194). Von Caio Oliveira.
Modellauswertung und Meta-Schätzer
model_selection.StratifiedKFoldlöst nun einen Fehler aus, wenn alle n_labels für einzelne Klassen kleiner als n_folds sind. #6182 von Devashish Deshpande.Fehler in
model_selection.StratifiedShuffleSplitbehoben, bei dem Trainings- und Teststichproben in einigen Randfällen überlappen konnten. Weitere Details siehe #6121. Von Loic Esteve.Korrektur in
sklearn.model_selection.StratifiedShuffleSplit, um in allen Fällen Splits der Größetrain_sizeundtest_sizezurückzugeben (#6472). Von Andreas Müller.Kreuzvalidierung von
multiclass.OneVsOneClassifierundmulticlass.OneVsRestClassifierfunktioniert jetzt mit vortrainierten Kernels. #7350 von Russell Smith.Unvollständige Delegierung der Methode
predict_probavonmodel_selection.GridSearchCVanlinear_model.SGDClassifierbehoben (#7159) von Yichuan Liu.
Metriken
Fehler in
metrics.silhouette_scorebehoben, bei dem Cluster der Größe 1 fälschlicherweise bewertet wurden. Sie sollten eine Bewertung von 0 erhalten. Von Joel Nothman.Fehler in
metrics.silhouette_samplesbehoben, sodass es nun mit beliebigen Labels funktioniert, nicht nur mit solchen im Bereich von 0 bis n_clusters - 1.Fehler behoben, bei dem die erwartete und die angepasste gegenseitige Information falsch waren, wenn die Zellen der Cluster-Kontingenz
2**16überschritten. Von Joel Nothman.metrics.pairwise_distanceskonvertiert Arrays nun in boolesche Arrays, wenn dies inscipy.spatial.distanceerforderlich ist. #5460 von Tom Dupre la Tour.Unterstützung für sparse Eingaben in
metrics.silhouette_scoresowie in den Beispiel-Dateien examples/text/document_clustering.py behoben. Von YenChen Lin.metrics.roc_curveundmetrics.precision_recall_curverundeny_scoreWerte bei der Erstellung von ROC-Kurven nicht mehr; dies verursachte Probleme für Benutzer mit sehr geringen Score-Unterschieden (#7353).
Verschiedenes
model_selection.tests._search._check_param_gridfunktioniert nun korrekt mit allen Typen, dieSequenceerweitern/implementieren (außer Strings), einschließlich range (Python 3.x) und xrange (Python 2.x). #7323 von Viacheslav Kovalevskyi.utils.extmath.randomized_range_finderist numerisch stabiler, wenn viele Potenziterationen angefordert werden, da standardmäßig eine LU-Normalisierung angewendet wird. Wennn_iter<2sind, sind numerische Probleme unwahrscheinlich, daher wird keine Normalisierung angewendet. Andere Normalisierungsoptionen sind verfügbar:'none', 'LU'und'QR'. #5141 von Giorgio Patrini.Fehler behoben, bei dem einige Formate von
scipy.sparseMatrizen und Estimators mit ihnen als Parameter nicht anbase.cloneübergeben werden konnten. Von Loic Esteve.datasets.load_svmlight_filekann nun lange QID-Werte lesen. #7101 von Ibraim Ganiev.
Zusammenfassung der API-Änderungen#
Lineare, kernelisierte und verwandte Modelle
residual_metricist inlinear_model.RANSACRegressorveraltet. Verwenden Sie stattdessenloss. Von Manoj Kumar.Der Zugriff auf öffentliche Attribute
.X_und.y_ist inisotonic.IsotonicRegressionveraltet. Von Jonathan Arfa.
Zerlegung, Manifold Learning und Clustering
Das alte
mixture.DPGMMist zugunsten des neuenmixture.BayesianGaussianMixture(mit dem Parameterweight_concentration_prior_type='dirichlet_process') veraltet. Die neue Klasse löst die Rechenprobleme der alten Klasse und berechnet das Gaußsche Mischmodell mit einem Dirichlet-Prozess-Prior schneller als zuvor. #7295 von Wei Xue und Thierry Guillemot.Das alte
mixture.VBGMMist zugunsten des neuenmixture.BayesianGaussianMixture(mit dem Parameterweight_concentration_prior_type='dirichlet_distribution') veraltet. Die neue Klasse löst die Rechenprobleme der alten Klasse und berechnet das Variational Bayesian Gaussian Mixture schneller als zuvor. #6651 von Wei Xue und Thierry Guillemot.Das alte
mixture.GMMist zugunsten des neuenmixture.GaussianMixtureveraltet. Die neue Klasse berechnet das Gaußsche Mischmodell schneller als zuvor und einige Rechenprobleme wurden behoben. #6666 von Wei Xue und Thierry Guillemot.
Modellauswertung und Meta-Schätzer
sklearn.cross_validation,sklearn.grid_searchundsklearn.learning_curvesind veraltet und die Klassen und Funktionen wurden in das Modulsklearn.model_selectionverschoben. Weitere Informationen finden Sie unter Erweiterungen und API-Änderungen der Modellauswahl. #4294 von Raghav RV.Das Attribut
grid_scores_vonmodel_selection.GridSearchCVundmodel_selection.RandomizedSearchCVist zugunsten des Attributscv_results_veraltet. Weitere Informationen finden Sie unter Erweiterungen und API-Änderungen der Modellauswahl. #6697 von Raghav RV.Die Parameter
n_iterodern_foldsin alten CV-Splittern werden durch den neuen Parametern_splitsersetzt, da dieser eine konsistente und eindeutige Schnittstelle zur Darstellung der Anzahl der Train-Test-Splits bieten kann. #7187 von YenChen Lin.Der Parametername
classeswurde inmetrics.hamming_lossinlabelsumbenannt. #7260 von Sebastián Vanrell.Die Splitter-Klassen
LabelKFold,LabelShuffleSplit,LeaveOneLabelOutundLeavePLabelsOutwerden inmodel_selection.GroupKFold,model_selection.GroupShuffleSplit,model_selection.LeaveOneGroupOutundmodel_selection.LeavePGroupsOutumbenannt. Ebenso wird der Parameterlabelsin dersplitMethode der neu benannten Splittermodel_selection.LeaveOneGroupOutundmodel_selection.LeavePGroupsOutingroupsumbenannt. Zusätzlich wird inmodel_selection.LeavePGroupsOutder Parametern_labelsinn_groupsumbenannt. #6660 von Raghav RV.Fehler- und Verlustnamen für Parameter
scoringwerden nun mit'neg_'präfixiert, z. B.neg_mean_squared_error. Die ungeprägten Versionen sind veraltet und werden in Version 0.20 entfernt. #7261 von Tim Head.
Code-Mitwirkende#
Aditya Joshi, Alejandro, Alexander Fabisch, Alexander Loginov, Alexander Minyushkin, Alexander Rudy, Alexandre Abadie, Alexandre Abraham, Alexandre Gramfort, Alexandre Saint, alexfields, Alvaro Ulloa, alyssaq, Amlan Kar, Andreas Mueller, andrew giessel, Andrew Jackson, Andrew McCulloh, Andrew Murray, Anish Shah, Arafat, Archit Sharma, Ariel Rokem, Arnaud Joly, Arnaud Rachez, Arthur Mensch, Ash Hoover, asnt, b0noI, Behzad Tabibian, Bernardo, Bernhard Kratzwald, Bhargav Mangipudi, blakeflei, Boyuan Deng, Brandon Carter, Brett Naul, Brian McFee, Caio Oliveira, Camilo Lamus, Carol Willing, Cass, CeShine Lee, Charles Truong, Chyi-Kwei Yau, CJ Carey, codevig, Colin Ni, Dan Shiebler, Daniel, Daniel Hnyk, David Ellis, David Nicholson, David Staub, David Thaler, David Warshaw, Davide Lasagna, Deborah, definitelyuncertain, Didi Bar-Zev, djipey, dsquareindia, edwinENSAE, Elias Kuthe, Elvis DOHMATOB, Ethan White, Fabian Pedregosa, Fabio Ticconi, fisache, Florian Wilhelm, Francis, Francis O’Donovan, Gael Varoquaux, Ganiev Ibraim, ghg, Gilles Louppe, Giorgio Patrini, Giovanni Cherubin, Giovanni Lanzani, Glenn Qian, Gordon Mohr, govin-vatsan, Graham Clenaghan, Greg Reda, Greg Stupp, Guillaume Lemaitre, Gustav Mörtberg, halwai, Harizo Rajaona, Harry Mavroforakis, hashcode55, hdmetor, Henry Lin, Hobson Lane, Hugo Bowne-Anderson, Igor Andriushchenko, Immaculate, Inki Hwang, Isaac Sijaranamual, Ishank Gulati, Issam Laradji, Iver Jordal, jackmartin, Jacob Schreiber, Jake Vanderplas, James Fiedler, James Routley, Jan Zikes, Janna Brettingen, jarfa, Jason Laska, jblackburne, jeff levesque, Jeffrey Blackburne, Jeffrey04, Jeremy Hintz, jeremynixon, Jeroen, Jessica Yung, Jill-Jênn Vie, Jimmy Jia, Jiyuan Qian, Joel Nothman, johannah, John, John Boersma, John Kirkham, John Moeller, jonathan.striebel, joncrall, Jordi, Joseph Munoz, Joshua Cook, JPFrancoia, jrfiedler, JulianKahnert, juliathebrave, kaichogami, KamalakerDadi, Kenneth Lyons, Kevin Wang, kingjr, kjell, Konstantin Podshumok, Kornel Kielczewski, Krishna Kalyan, krishnakalyan3, Kvle Putnam, Kyle Jackson, Lars Buitinck, ldavid, LeiG, LeightonZhang, Leland McInnes, Liang-Chi Hsieh, Lilian Besson, lizsz, Loic Esteve, Louis Tiao, Léonie Borne, Mads Jensen, Maniteja Nandana, Manoj Kumar, Manvendra Singh, Marco, Mario Krell, Mark Bao, Mark Szepieniec, Martin Madsen, MartinBpr, MaryanMorel, Massil, Matheus, Mathieu Blondel, Mathieu Dubois, Matteo, Matthias Ekman, Max Moroz, Michael Scherer, michiaki ariga, Mikhail Korobov, Moussa Taifi, mrandrewandrade, Mridul Seth, nadya-p, Naoya Kanai, Nate George, Nelle Varoquaux, Nelson Liu, Nick James, NickleDave, Nico, Nicolas Goix, Nikolay Mayorov, ningchi, nlathia, okbalefthanded, Okhlopkov, Olivier Grisel, Panos Louridas, Paul Strickland, Perrine Letellier, pestrickland, Peter Fischer, Pieter, Ping-Yao, Chang, practicalswift, Preston Parry, Qimu Zheng, Rachit Kansal, Raghav RV, Ralf Gommers, Ramana.S, Rammig, Randy Olson, Rob Alexander, Robert Lutz, Robin Schucker, Rohan Jain, Ruifeng Zheng, Ryan Yu, Rémy Léone, saihttam, Saiwing Yeung, Sam Shleifer, Samuel St-Jean, Sartaj Singh, Sasank Chilamkurthy, saurabh.bansod, Scott Andrews, Scott Lowe, seales, Sebastian Raschka, Sebastian Saeger, Sebastián Vanrell, Sergei Lebedev, shagun Sodhani, shanmuga cv, Shashank Shekhar, shawpan, shengxiduan, Shota, shuckle16, Skipper Seabold, sklearn-ci, SmedbergM, srvanrell, Sébastien Lerique, Taranjeet, themrmax, Thierry, Thierry Guillemot, Thomas, Thomas Hallock, Thomas Moreau, Tim Head, tKammy, toastedcornflakes, Tom, TomDLT, Toshihiro Kamishima, tracer0tong, Trent Hauck, trevorstephens, Tue Vo, Varun, Varun Jewalikar, Viacheslav, Vighnesh Birodkar, Vikram, Villu Ruusmann, Vinayak Mehta, walter, waterponey, Wenhua Yang, Wenjian Huang, Will Welch, wyseguy7, xyguo, yanlend, Yaroslav Halchenko, yelite, Yen, YenChenLin, Yichuan Liu, Yoav Ram, Yoshiki, Zheng RuiFeng, zivori, Óscar Nájera