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#

Fehlerbehebungen#

Zusammenfassung der API-Änderungen#

Bäume und Wälder

  • Der Parameter min_weight_fraction_leaf von baumbasierten Klassifikatoren und Regressoren geht nun von gleichmäßigen Stichprobengewichten aus, wenn das Argument sample_weight nicht an die Funktion fit ü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

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 Module sklearn.cross_validation, sklearn.grid_search und sklearn.learning_curve zusammenfasst, 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_selection definiert sind, werden nicht mehr mit datenabhängigen Parametern wie y initialisiert. Stattdessen bieten sie eine split-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.GridSearchCV und model_selection.RandomizedSearchCV.

  • Das erweiterte cv_results_-Attribut

    Das neue Attribut cv_results_ (von model_selection.GridSearchCV und model_selection.RandomizedSearchCV) ersetzt das Attribut grid_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 in pandas als DataFrame importiert 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_folds in den neuen Klassen model_selection.KFold, model_selection.GroupKFold (siehe unten für die Namensänderung) und model_selection.StratifiedKFold wurde in n_splits umbenannt. Der Parameter n_iter in model_selection.ShuffleSplit, der neuen Klasse model_selection.GroupShuffleSplit und model_selection.StratifiedShuffleSplit wurde in n_splits umbenannt.

  • Umbenennung von Splitter-Klassen, die Gruppenlabels zusammen mit Daten akzeptieren

    Die Kreuzvalidierungs-Splitter LabelKFold, LabelShuffleSplit, LeaveOneLabelOut und LeavePLabelOut wurden in model_selection.GroupKFold, model_selection.GroupShuffleSplit, model_selection.LeaveOneGroupOut und model_selection.LeavePGroupsOut umbenannt.

    Beachten Sie die Änderung von der Singular- zur Pluralform in model_selection.LeavePGroupsOut.

  • Parameter fit labels umbenannt in groups

    Der Parameter labels in der split-Methode der neu umbenannten Splitter model_selection.GroupKFold, model_selection.LeaveOneGroupOut, model_selection.LeavePGroupsOut, model_selection.GroupShuffleSplit wurde in groups umbenannt, entsprechend der neuen Nomenklatur ihrer Klassennamen.

  • Parameter n_labels umbenannt in n_groups

    Der Parameter n_labels in der neu umbenannten Klasse model_selection.LeavePGroupsOut wurde in n_groups geä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 Sie return_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

Andere Schätzer

Modellauswahl und -bewertung

Verbesserungen#

Bäume und Ensembles

  • Ein neues Aufteilungs-Kriterium für tree.DecisionTreeRegressor wurde hinzugefügt: der mittlere absolute Fehler. Dieses Kriterium kann auch in ensemble.ExtraTreesRegressor, ensemble.RandomForestRegressor und 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_split und min_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.BaseBagging und davon abgeleitete Klassen, z. B. ensemble.BaggingClassifier, ensemble.BaggingRegressor und ensemble.IsolationForest, reduziert (manchmal erheblich), indem das Attribut estimators_samples_ dynamisch und nur bei Bedarf generiert wird. Von David Staub.

  • Hinzugefügte Parameter n_jobs und sample_weight für ensemble.VotingClassifier, um zugrundeliegende Schätzer parallel zu trainieren. #5805 von Ibraim Ganiev.

Lineare, kernelisierte und verwandte Modelle

Zerlegung, Manifold Learning und Clustering

Vorverarbeitung und Merkmalsauswahl

Modellauswertung und Meta-Schätzer

Metriken

Verschiedenes

Fehlerbehebungen#

Bäume und Ensembles

Lineare, kernelisierte und verwandte Modelle

Zerlegung, Manifold Learning und Clustering

Vorverarbeitung und Merkmalsauswahl

  • preprocessing.data._transform_selected übergibt nun immer eine Kopie von X an die Transformationsfunktion, wenn copy=True ist (#7194). Von Caio Oliveira.

Modellauswertung und Meta-Schätzer

Metriken

Verschiedenes

  • model_selection.tests._search._check_param_grid funktioniert nun korrekt mit allen Typen, die Sequence erweitern/implementieren (außer Strings), einschließlich range (Python 3.x) und xrange (Python 2.x). #7323 von Viacheslav Kovalevskyi.

  • utils.extmath.randomized_range_finder ist numerisch stabiler, wenn viele Potenziterationen angefordert werden, da standardmäßig eine LU-Normalisierung angewendet wird. Wenn n_iter<2 sind, 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.sparse Matrizen und Estimators mit ihnen als Parameter nicht an base.clone übergeben werden konnten. Von Loic Esteve.

  • datasets.load_svmlight_file kann nun lange QID-Werte lesen. #7101 von Ibraim Ganiev.

Zusammenfassung der API-Änderungen#

Lineare, kernelisierte und verwandte Modelle

Zerlegung, Manifold Learning und Clustering

  • Das alte mixture.DPGMM ist zugunsten des neuen mixture.BayesianGaussianMixture (mit dem Parameter weight_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.VBGMM ist zugunsten des neuen mixture.BayesianGaussianMixture (mit dem Parameter weight_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.GMM ist zugunsten des neuen mixture.GaussianMixture veraltet. 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

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