Release history

Version 0.19

In Development

Changelog

New features

Enhancements

  • The min_weight_fraction_leaf constraint in tree construction is now more efficient, taking a fast path to declare a node a leaf if its weight is less than 2 * the minimum. Note that the constructed tree will be different from previous versions where min_weight_fraction_leaf is used. (#7441) by Nelson Liu.
  • Added average parameter to perform weights averaging in linear_model.PassiveAggressiveClassifier. (#4939) by `Andrea Esuli`_.

Bug fixes

  • The min_weight_fraction_leaf parameter of tree-based classifiers and regressors now assumes uniform sample weights by default if the sample_weight argument is not passed to the fit function. Previously, the parameter was silently ignored. (#7301) by Nelson Liu.

Version 0.18

September 28, 2016

Last release with Python 2.6 support

Scikit-learn 0.18 will be the last version of scikit-learn to support Python 2.6. Later versions of scikit-learn will require Python 2.7 or above.

Model Selection Enhancements and API Changes

  • The model_selection module

    The new module sklearn.model_selection, which groups together the functionalities of formerly sklearn.cross_validation, sklearn.grid_search and sklearn.learning_curve, introduces new possibilities such as nested cross-validation and better manipulation of parameter searches with Pandas.

    Many things will stay the same but there are some key differences. Read below to know more about the changes.

  • Data-independent CV splitters enabling nested cross-validation

    The new cross-validation splitters, defined in the sklearn.model_selection, are no longer initialized with any data-dependent parameters such as y. Instead they expose a split method that takes in the data and yields a generator for the different splits.

    This change makes it possible to use the cross-validation splitters to perform nested cross-validation, facilitated by model_selection.GridSearchCV and model_selection.RandomizedSearchCV utilities.

  • The enhanced cv_results_ attribute

    The new cv_results_ attribute (of model_selection.GridSearchCV and model_selection.RandomizedSearchCV) introduced in lieu of the grid_scores_ attribute is a dict of 1D arrays with elements in each array corresponding to the parameter settings (i.e. search candidates).

    The cv_results_ dict can be easily imported into pandas as a DataFrame for exploring the search results.

    The cv_results_ arrays include scores for each cross-validation split (with keys such as 'split0_test_score'), as well as their mean ('mean_test_score') and standard deviation ('std_test_score').

    The ranks for the search candidates (based on their mean cross-validation score) is available at cv_results_['rank_test_score'].

    The parameter values for each parameter is stored separately as numpy masked object arrays. The value, for that search candidate, is masked if the corresponding parameter is not applicable. Additionally a list of all the parameter dicts are stored at cv_results_['params'].

  • Parameters n_folds and n_iter renamed to n_splits

    Some parameter names have changed: The n_folds parameter in new model_selection.KFold, model_selection.GroupKFold (see below for the name change), and model_selection.StratifiedKFold is now renamed to n_splits. The n_iter parameter in model_selection.ShuffleSplit, the new class model_selection.GroupShuffleSplit and model_selection.StratifiedShuffleSplit is now renamed to n_splits.

  • Rename of splitter classes which accepts group labels along with data

    The cross-validation splitters LabelKFold, LabelShuffleSplit, LeaveOneLabelOut and LeavePLabelOut have been renamed to model_selection.GroupKFold, model_selection.GroupShuffleSplit, model_selection.LeaveOneGroupOut and model_selection.LeavePGroupsOut respectively.

    Note the change from singular to plural form in model_selection.LeavePGroupsOut.

  • Fit parameter labels renamed to groups

    The labels parameter in the split method of the newly renamed splitters model_selection.GroupKFold, model_selection.LeaveOneGroupOut, model_selection.LeavePGroupsOut, model_selection.GroupShuffleSplit is renamed to groups following the new nomenclature of their class names.

  • Parameter n_labels renamed to n_groups

    The parameter n_labels in the newly renamed model_selection.LeavePGroupsOut is changed to n_groups.

  • Training scores and Timing information

    cv_results_ also includes the training scores for each cross-validation split (with keys such as 'split0_train_score'), as well as their mean ('mean_train_score') and standard deviation ('std_train_score'). To avoid the cost of evaluating training score, set return_train_score=False.

    Additionally the mean and standard deviation of the times taken to split, train and score the model across all the cross-validation splits is available at the key 'mean_time' and 'std_time' respectively.

Changelog

New features

Classifiers and Regressors

Other estimators

Model selection and evaluation

Enhancements

Trees and ensembles

Linear, kernelized and related models

Decomposition, manifold learning and clustering

Preprocessing and feature selection

Model evaluation and meta-estimators

Metrics

Miscellaneous

  • Added n_jobs parameter to feature_selection.RFECV to compute the score on the test folds in parallel. By Manoj Kumar
  • Codebase does not contain C/C++ cython generated files: they are generated during build. Distribution packages will still contain generated C/C++ files. By Arthur Mensch.
  • Reduce the memory usage for 32-bit float input arrays of utils.sparse_func.mean_variance_axis and utils.sparse_func.incr_mean_variance_axis by supporting cython fused types. By YenChen Lin.
  • The ignore_warnings now accept a category argument to ignore only the warnings of a specified type. By Thierry Guillemot.
  • Added parameter return_X_y and return type (data, target) : tuple option to load_iris dataset #7049, load_breast_cancer dataset #7152, load_digits dataset, load_diabetes dataset, load_linnerud dataset, load_boston dataset #7154 by Manvendra Singh.
  • Simplification of the clone function, deprecate support for estimators that modify parameters in __init__. (#5540) By Andreas Müller.
  • When unpickling a scikit-learn estimator in a different version than the one the estimator was trained with, a UserWarning is raised, see the documentation on model persistence for more details. (#7248) By Andreas Müller.

Bug fixes

Trees and ensembles

Linear, kernelized and related models

Decomposition, manifold learning and clustering

Preprocessing and feature selection

  • preprocessing.data._transform_selected now always passes a copy of X to transform function when copy=True (#7194). By Caio Oliveira.

Model evaluation and meta-estimators

Metrics

Miscellaneous

  • model_selection.tests._search._check_param_grid now works correctly with all types that extends/implements Sequence (except string), including range (Python 3.x) and xrange (Python 2.x). (#7323) by Viacheslav Kovalevskyi.
  • utils.extmath.randomized_range_finder is more numerically stable when many power iterations are requested, since it applies LU normalization by default. If n_iter<2 numerical issues are unlikely, thus no normalization is applied. Other normalization options are available: 'none', 'LU' and 'QR'. (#5141) by Giorgio Patrini.
  • Fix a bug where some formats of scipy.sparse matrix, and estimators with them as parameters, could not be passed to base.clone. By Loic Esteve.
  • datasets.load_svmlight_file now is able to read long int QID values. (#7101) By Ibraim Ganiev.

API changes summary

Linear, kernelized and related models

Decomposition, manifold learning and clustering

  • The old mixture.DPGMM is deprecated in favor of the new mixture.BayesianGaussianMixture (with the parameter weight_concentration_prior_type='dirichlet_process'). The new class solves the computational problems of the old class and computes the Gaussian mixture with a Dirichlet process prior faster than before. (#7295) by Wei Xue and Thierry Guillemot.
  • The old mixture.VBGMM is deprecated in favor of the new mixture.BayesianGaussianMixture (with the parameter weight_concentration_prior_type='dirichlet_distribution'). The new class solves the computational problems of the old class and computes the Variational Bayesian Gaussian mixture faster than before. (#6651) by Wei Xue and Thierry Guillemot.
  • The old mixture.GMM is deprecated in favor of the new mixture.GaussianMixture. The new class computes the Gaussian mixture faster than before and some of computational problems have been solved. (#6666) by Wei Xue and Thierry Guillemot.

Model evaluation and meta-estimators

Code Contributors

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, Imaculate, 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

Version 0.17.1

February 18, 2016

Changelog

Bug fixes

Version 0.17

November 5, 2015

Changelog

New features

Enhancements

Bug fixes

API changes summary

  • Attribute data_min, data_max and data_range in preprocessing.MinMaxScaler are deprecated and won’t be available from 0.19. Instead, the class now exposes data_min_, data_max_ and data_range_. By Giorgio Patrini.
  • All Scaler classes now have an scale_ attribute, the feature-wise rescaling applied by their transform methods. The old attribute std_ in preprocessing.StandardScaler is deprecated and superseded by scale_; it won’t be available in 0.19. By Giorgio Patrini.
  • svm.SVC` and svm.NuSVC now have an decision_function_shape parameter to make their decision function of shape (n_samples, n_classes) by setting decision_function_shape='ovr'. This will be the default behavior starting in 0.19. By Andreas Müller.
  • Passing 1D data arrays as input to estimators is now deprecated as it caused confusion in how the array elements should be interpreted as features or as samples. All data arrays are now expected to be explicitly shaped (n_samples, n_features). By Vighnesh Birodkar.
  • lda.LDA and qda.QDA have been moved to discriminant_analysis.LinearDiscriminantAnalysis and discriminant_analysis.QuadraticDiscriminantAnalysis.
  • The store_covariance and tol parameters have been moved from the fit method to the constructor in discriminant_analysis.LinearDiscriminantAnalysis and the store_covariances and tol parameters have been moved from the fit method to the constructor in discriminant_analysis.QuadraticDiscriminantAnalysis.
  • Models inheriting from _LearntSelectorMixin will no longer support the transform methods. (i.e, RandomForests, GradientBoosting, LogisticRegression, DecisionTrees, SVMs and SGD related models). Wrap these models around the metatransfomer feature_selection.SelectFromModel to remove features (according to coefs_ or feature_importances_) which are below a certain threshold value instead.
  • cluster.KMeans re-runs cluster-assignments in case of non-convergence, to ensure consistency of predict(X) and labels_. By Vighnesh Birodkar.
  • Classifier and Regressor models are now tagged as such using the _estimator_type attribute.
  • Cross-validation iterators always provide indices into training and test set, not boolean masks.
  • The decision_function on all regressors was deprecated and will be removed in 0.19. Use predict instead.
  • datasets.load_lfw_pairs is deprecated and will be removed in 0.19. Use datasets.fetch_lfw_pairs instead.
  • The deprecated hmm module was removed.
  • The deprecated Bootstrap cross-validation iterator was removed.
  • The deprecated Ward and WardAgglomerative classes have been removed. Use clustering.AgglomerativeClustering instead.
  • cross_validation.check_cv is now a public function.
  • The property residues_ of linear_model.LinearRegression is deprecated and will be removed in 0.19.
  • The deprecated n_jobs parameter of linear_model.LinearRegression has been moved to the constructor.
  • Removed deprecated class_weight parameter from linear_model.SGDClassifier‘s fit method. Use the construction parameter instead.
  • The deprecated support for the sequence of sequences (or list of lists) multilabel format was removed. To convert to and from the supported binary indicator matrix format, use MultiLabelBinarizer.
  • The behavior of calling the inverse_transform method of Pipeline.pipeline will change in 0.19. It will no longer reshape one-dimensional input to two-dimensional input.
  • The deprecated attributes indicator_matrix_, multilabel_ and classes_ of preprocessing.LabelBinarizer were removed.
  • Using gamma=0 in svm.SVC and svm.SVR to automatically set the gamma to 1. / n_features is deprecated and will be removed in 0.19. Use gamma="auto" instead.

Code Contributors

Aaron Schumacher, Adithya Ganesh, akitty, Alexandre Gramfort, Alexey Grigorev, Ali Baharev, Allen Riddell, Ando Saabas, Andreas Mueller, Andrew Lamb, Anish Shah, Ankur Ankan, Anthony Erlinger, Ari Rouvinen, Arnaud Joly, Arnaud Rachez, Arthur Mensch, banilo, Barmaley.exe, benjaminirving, Boyuan Deng, Brett Naul, Brian McFee, Buddha Prakash, Chi Zhang, Chih-Wei Chang, Christof Angermueller, Christoph Gohlke, Christophe Bourguignat, Christopher Erick Moody, Chyi-Kwei Yau, Cindy Sridharan, CJ Carey, Clyde-fare, Cory Lorenz, Dan Blanchard, Daniel Galvez, Daniel Kronovet, Danny Sullivan, Data1010, David, David D Lowe, David Dotson, djipey, Dmitry Spikhalskiy, Donne Martin, Dougal J. Sutherland, Dougal Sutherland, edson duarte, Eduardo Caro, Eric Larson, Eric Martin, Erich Schubert, Fernando Carrillo, Frank C. Eckert, Frank Zalkow, Gael Varoquaux, Ganiev Ibraim, Gilles Louppe, Giorgio Patrini, giorgiop, Graham Clenaghan, Gryllos Prokopis, gwulfs, Henry Lin, Hsuan-Tien Lin, Immanuel Bayer, Ishank Gulati, Jack Martin, Jacob Schreiber, Jaidev Deshpande, Jake VanderPlas, Jan Hendrik Metzen, Jean Kossaifi, Jeffrey04, Jeremy, jfraj, Jiali Mei, Joe Jevnik, Joel Nothman, John Kirkham, John Wittenauer, Joseph, Joshua Loyal, Jungkook Park, KamalakerDadi, Kashif Rasul, Keith Goodman, Kian Ho, Konstantin Shmelkov, Kyler Brown, Lars Buitinck, Lilian Besson, Loic Esteve, Louis Tiao, maheshakya, Maheshakya Wijewardena, Manoj Kumar, MarkTab marktab.net, Martin Ku, Martin Spacek, MartinBpr, martinosorb, MaryanMorel, Masafumi Oyamada, Mathieu Blondel, Matt Krump, Matti Lyra, Maxim Kolganov, mbillinger, mhg, Michael Heilman, Michael Patterson, Miroslav Batchkarov, Nelle Varoquaux, Nicolas, Nikolay Mayorov, Olivier Grisel, Omer Katz, Óscar Nájera, Pauli Virtanen, Peter Fischer, Peter Prettenhofer, Phil Roth, pianomania, Preston Parry, Raghav R V, Rob Zinkov, Robert Layton, Rohan Ramanath, Saket Choudhary, Sam Zhang, santi, saurabh.bansod, scls19fr, Sebastian Raschka, Sebastian Saeger, Shivan Sornarajah, SimonPL, sinhrks, Skipper Seabold, Sonny Hu, sseg, Stephen Hoover, Steven De Gryze, Steven Seguin, Theodore Vasiloudis, Thomas Unterthiner, Tiago Freitas Pereira, Tian Wang, Tim Head, Timothy Hopper, tokoroten, Tom Dupré la Tour, Trevor Stephens, Valentin Stolbunov, Vighnesh Birodkar, Vinayak Mehta, Vincent, Vincent Michel, vstolbunov, wangz10, Wei Xue, Yucheng Low, Yury Zhauniarovich, Zac Stewart, zhai_pro, Zichen Wang

Version 0.16.1

April 14, 2015

Changelog

Bug fixes

Version 0.16

March 26, 2015

Highlights

Changelog

New features

Enhancements

Documentation improvements

Bug fixes

API changes summary

  • GridSearchCV and cross_val_score and other meta-estimators don’t convert pandas DataFrames into arrays any more, allowing DataFrame specific operations in custom estimators.

  • multiclass.fit_ovr, multiclass.predict_ovr, predict_proba_ovr, multiclass.fit_ovo, multiclass.predict_ovo, multiclass.fit_ecoc and multiclass.predict_ecoc are deprecated. Use the underlying estimators instead.

  • Nearest neighbors estimators used to take arbitrary keyword arguments and pass these to their distance metric. This will no longer be supported in scikit-learn 0.18; use the metric_params argument instead.

  • n_jobs parameter of the fit method shifted to the constructor of the

    LinearRegression class.

  • The predict_proba method of multiclass.OneVsRestClassifier now returns two probabilities per sample in the multiclass case; this is consistent with other estimators and with the method’s documentation, but previous versions accidentally returned only the positive probability. Fixed by Will Lamond and Lars Buitinck.

  • Change default value of precompute in ElasticNet and Lasso to False. Setting precompute to “auto” was found to be slower when n_samples > n_features since the computation of the Gram matrix is computationally expensive and outweighs the benefit of fitting the Gram for just one alpha. precompute="auto" is now deprecated and will be removed in 0.18 By Manoj Kumar.

  • Expose positive option in linear_model.enet_path and linear_model.enet_path which constrains coefficients to be positive. By Manoj Kumar.

  • Users should now supply an explicit average parameter to sklearn.metrics.f1_score, sklearn.metrics.fbeta_score, sklearn.metrics.recall_score and sklearn.metrics.precision_score when performing multiclass or multilabel (i.e. not binary) classification. By Joel Nothman.

  • scoring parameter for cross validation now accepts ‘f1_micro’, ‘f1_macro’ or ‘f1_weighted’. ‘f1’ is now for binary classification only. Similar changes apply to ‘precision’ and ‘recall’. By Joel Nothman.

  • The fit_intercept, normalize and return_models parameters in linear_model.enet_path and linear_model.lasso_path have been removed. They were deprecated since 0.14

  • From now onwards, all estimators will uniformly raise NotFittedError (utils.validation.NotFittedError), when any of the predict like methods are called before the model is fit. By Raghav R V.

  • Input data validation was refactored for more consistent input validation. The check_arrays function was replaced by check_array and check_X_y. By Andreas Müller.

  • Allow X=None in the methods radius_neighbors, kneighbors, kneighbors_graph and radius_neighbors_graph in sklearn.neighbors.NearestNeighbors and family. If set to None, then for every sample this avoids setting the sample itself as the first nearest neighbor. By Manoj Kumar.

  • Add parameter include_self in neighbors.kneighbors_graph and neighbors.radius_neighbors_graph which has to be explicitly set by the user. If set to True, then the sample itself is considered as the first nearest neighbor.

  • thresh parameter is deprecated in favor of new tol parameter in GMM, DPGMM and VBGMM. See Enhancements section for details. By Hervé Bredin.

  • Estimators will treat input with dtype object as numeric when possible. By Andreas Müller

  • Estimators now raise ValueError consistently when fitted on empty data (less than 1 sample or less than 1 feature for 2D input). By Olivier Grisel.

  • The shuffle option of linear_model.SGDClassifier, linear_model.SGDRegressor, linear_model.Perceptron, linear_model.PassiveAgressiveClassifier and linear_model.PassiveAgressiveRegressor now defaults to True.

  • cluster.DBSCAN now uses a deterministic initialization. The random_state parameter is deprecated. By Erich Schubert.

Code Contributors

A. Flaxman, Aaron Schumacher, Aaron Staple, abhishek thakur, Akshay, akshayah3, Aldrian Obaja, Alexander Fabisch, Alexandre Gramfort, Alexis Mignon, Anders Aagaard, Andreas Mueller, Andreas van Cranenburgh, Andrew Tulloch, Andrew Walker, Antony Lee, Arnaud Joly, banilo, Barmaley.exe, Ben Davies, Benedikt Koehler, bhsu, Boris Feld, Borja Ayerdi, Boyuan Deng, Brent Pedersen, Brian Wignall, Brooke Osborn, Calvin Giles, Cathy Deng, Celeo, cgohlke, chebee7i, Christian Stade-Schuldt, Christof Angermueller, Chyi-Kwei Yau, CJ Carey, Clemens Brunner, Daiki Aminaka, Dan Blanchard, danfrankj, Danny Sullivan, David Fletcher, Dmitrijs Milajevs, Dougal J. Sutherland, Erich Schubert, Fabian Pedregosa, Florian Wilhelm, floydsoft, Félix-Antoine Fortin, Gael Varoquaux, Garrett-R, Gilles Louppe, gpassino, gwulfs, Hampus Bengtsson, Hamzeh Alsalhi, Hanna Wallach, Harry Mavroforakis, Hasil Sharma, Helder, Herve Bredin, Hsiang-Fu Yu, Hugues SALAMIN, Ian Gilmore, Ilambharathi Kanniah, Imran Haque, isms, Jake VanderPlas, Jan Dlabal, Jan Hendrik Metzen, Jatin Shah, Javier López Peña, jdcaballero, Jean Kossaifi, Jeff Hammerbacher, Joel Nothman, Jonathan Helmus, Joseph, Kaicheng Zhang, Kevin Markham, Kyle Beauchamp, Kyle Kastner, Lagacherie Matthieu, Lars Buitinck, Laurent Direr, leepei, Loic Esteve, Luis Pedro Coelho, Lukas Michelbacher, maheshakya, Manoj Kumar, Manuel, Mario Michael Krell, Martin, Martin Billinger, Martin Ku, Mateusz Susik, Mathieu Blondel, Matt Pico, Matt Terry, Matteo Visconti dOC, Matti Lyra, Max Linke, Mehdi Cherti, Michael Bommarito, Michael Eickenberg, Michal Romaniuk, MLG, mr.Shu, Nelle Varoquaux, Nicola Montecchio, Nicolas, Nikolay Mayorov, Noel Dawe, Okal Billy, Olivier Grisel, Óscar Nájera, Paolo Puggioni, Peter Prettenhofer, Pratap Vardhan, pvnguyen, queqichao, Rafael Carrascosa, Raghav R V, Rahiel Kasim, Randall Mason, Rob Zinkov, Robert Bradshaw, Saket Choudhary, Sam Nicholls, Samuel Charron, Saurabh Jha, sethdandridge, sinhrks, snuderl, Stefan Otte, Stefan van der Walt, Steve Tjoa, swu, Sylvain Zimmer, tejesh95, terrycojones, Thomas Delteil, Thomas Unterthiner, Tomas Kazmar, trevorstephens, tttthomasssss, Tzu-Ming Kuo, ugurcaliskan, ugurthemaster, Vinayak Mehta, Vincent Dubourg, Vjacheslav Murashkin, Vlad Niculae, wadawson, Wei Xue, Will Lamond, Wu Jiang, x0l, Xinfan Meng, Yan Yi, Yu-Chin

Version 0.15.2

September 4, 2014

Bug fixes

Version 0.15.1

August 1, 2014

Bug fixes

  • Made cross_validation.cross_val_score use cross_validation.KFold instead of cross_validation.StratifiedKFold on multi-output classification problems. By Nikolay Mayorov.
  • Support unseen labels preprocessing.LabelBinarizer to restore the default behavior of 0.14.1 for backward compatibility. By Hamzeh Alsalhi.
  • Fixed the cluster.KMeans stopping criterion that prevented early convergence detection. By Edward Raff and Gael Varoquaux.
  • Fixed the behavior of multiclass.OneVsOneClassifier. in case of ties at the per-class vote level by computing the correct per-class sum of prediction scores. By Andreas Müller.
  • Made cross_validation.cross_val_score and grid_search.GridSearchCV accept Python lists as input data. This is especially useful for cross-validation and model selection of text processing pipelines. By Andreas Müller.
  • Fixed data input checks of most estimators to accept input data that implements the NumPy __array__ protocol. This is the case for for pandas.Series and pandas.DataFrame in recent versions of pandas. By Gael Varoquaux.
  • Fixed a regression for linear_model.SGDClassifier with class_weight="auto" on data with non-contiguous labels. By Olivier Grisel.

Version 0.15

July 15, 2014

Highlights

  • Many speed and memory improvements all across the code
  • Huge speed and memory improvements to random forests (and extra trees) that also benefit better from parallel computing.
  • Incremental fit to BernoulliRBM
  • Added cluster.AgglomerativeClustering for hierarchical agglomerative clustering with average linkage, complete linkage and ward strategies.
  • Added linear_model.RANSACRegressor for robust regression models.
  • Added dimensionality reduction with manifold.TSNE which can be used to visualize high-dimensional data.

Changelog

New features

Enhancements

Documentation improvements

  • The Working With Text Data tutorial has now been worked in to the main documentation’s tutorial section. Includes exercises and skeletons for tutorial presentation. Original tutorial created by several authors including Olivier Grisel, Lars Buitinck and many others. Tutorial integration into the scikit-learn documentation by Jaques Grobler
  • Added Computational Performance documentation. Discussion and examples of prediction latency / throughput and different factors that have influence over speed. Additional tips for building faster models and choosing a relevant compromise between speed and predictive power. By Eustache Diemert.

Bug fixes

  • Fixed bug in decomposition.MiniBatchDictionaryLearning : partial_fit was not working properly.
  • Fixed bug in linear_model.stochastic_gradient : l1_ratio was used as (1.0 - l1_ratio) .
  • Fixed bug in multiclass.OneVsOneClassifier with string labels
  • Fixed a bug in LassoCV and ElasticNetCV: they would not pre-compute the Gram matrix with precompute=True or precompute="auto" and n_samples > n_features. By Manoj Kumar.
  • Fixed incorrect estimation of the degrees of freedom in feature_selection.f_regression when variates are not centered. By Virgile Fritsch.
  • Fixed a race condition in parallel processing with pre_dispatch != "all" (for instance, in cross_val_score). By Olivier Grisel.
  • Raise error in cluster.FeatureAgglomeration and cluster.WardAgglomeration when no samples are given, rather than returning meaningless clustering.
  • Fixed bug in gradient_boosting.GradientBoostingRegressor with loss='huber': gamma might have not been initialized.
  • Fixed feature importances as computed with a forest of randomized trees when fit with sample_weight != None and/or with bootstrap=True. By Gilles Louppe.

API changes summary

  • sklearn.hmm is deprecated. Its removal is planned for the 0.17 release.
  • Use of covariance.EllipticEnvelop has now been removed after deprecation. Please use covariance.EllipticEnvelope instead.
  • cluster.Ward is deprecated. Use cluster.AgglomerativeClustering instead.
  • cluster.WardClustering is deprecated. Use
  • cluster.AgglomerativeClustering instead.
  • cross_validation.Bootstrap is deprecated. cross_validation.KFold or cross_validation.ShuffleSplit are recommended instead.
  • Direct support for the sequence of sequences (or list of lists) multilabel format is deprecated. To convert to and from the supported binary indicator matrix format, use MultiLabelBinarizer. By Joel Nothman.
  • Add score method to PCA following the model of probabilistic PCA and deprecate ProbabilisticPCA model whose score implementation is not correct. The computation now also exploits the matrix inversion lemma for faster computation. By Alexandre Gramfort.
  • The score method of FactorAnalysis now returns the average log-likelihood of the samples. Use score_samples to get log-likelihood of each sample. By Alexandre Gramfort.
  • Generating boolean masks (the setting indices=False) from cross-validation generators is deprecated. Support for masks will be removed in 0.17. The generators have produced arrays of indices by default since 0.10. By Joel Nothman.
  • 1-d arrays containing strings with dtype=object (as used in Pandas) are now considered valid classification targets. This fixes a regression from version 0.13 in some classifiers. By Joel Nothman.
  • Fix wrong explained_variance_ratio_ attribute in RandomizedPCA. By Alexandre Gramfort.
  • Fit alphas for each l1_ratio instead of mean_l1_ratio in linear_model.ElasticNetCV and linear_model.LassoCV. This changes the shape of alphas_ from (n_alphas,) to (n_l1_ratio, n_alphas) if the l1_ratio provided is a 1-D array like object of length greater than one. By Manoj Kumar.
  • Fix linear_model.ElasticNetCV and linear_model.LassoCV when fitting intercept and input data is sparse. The automatic grid of alphas was not computed correctly and the scaling with normalize was wrong. By Manoj Kumar.
  • Fix wrong maximal number of features drawn (max_features) at each split for decision trees, random forests and gradient tree boosting. Previously, the count for the number of drawn features started only after one non constant features in the split. This bug fix will affect computational and generalization performance of those algorithms in the presence of constant features. To get back previous generalization performance, you should modify the value of max_features. By Arnaud Joly.
  • Fix wrong maximal number of features drawn (max_features) at each split for ensemble.ExtraTreesClassifier and ensemble.ExtraTreesRegressor. Previously, only non constant features in the split was counted as drawn. Now constant features are counted as drawn. Furthermore at least one feature must be non constant in order to make a valid split. This bug fix will affect computational and generalization performance of extra trees in the presence of constant features. To get back previous generalization performance, you should modify the value of max_features. By Arnaud Joly.
  • Fix utils.compute_class_weight when class_weight=="auto". Previously it was broken for input of non-integer dtype and the weighted array that was returned was wrong. By Manoj Kumar.
  • Fix cross_validation.Bootstrap to return ValueError when n_train + n_test > n. By Ronald Phlypo.

People

List of contributors for release 0.15 by number of 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

Version 0.14

August 7, 2013

Changelog

API changes summary

  • The auc_score was renamed roc_auc_score.
  • Testing scikit-learn with sklearn.test() is deprecated. Use nosetests sklearn from the command line.
  • Feature importances in tree.DecisionTreeClassifier, tree.DecisionTreeRegressor and all derived ensemble estimators are now computed on the fly when accessing the feature_importances_ attribute. Setting compute_importances=True is no longer required. By Gilles Louppe.
  • linear_model.lasso_path and linear_model.enet_path can return its results in the same format as that of linear_model.lars_path. This is done by setting the return_models parameter to False. By Jaques Grobler and Alexandre Gramfort
  • grid_search.IterGrid was renamed to grid_search.ParameterGrid.
  • Fixed bug in KFold causing imperfect class balance in some cases. By Alexandre Gramfort and Tadej Janež.
  • sklearn.neighbors.BallTree has been refactored, and a sklearn.neighbors.KDTree has been added which shares the same interface. The Ball Tree now works with a wide variety of distance metrics. Both classes have many new methods, including single-tree and dual-tree queries, breadth-first and depth-first searching, and more advanced queries such as kernel density estimation and 2-point correlation functions. By Jake Vanderplas
  • Support for scipy.spatial.cKDTree within neighbors queries has been removed, and the functionality replaced with the new KDTree class.
  • sklearn.neighbors.KernelDensity has been added, which performs efficient kernel density estimation with a variety of kernels.
  • sklearn.decomposition.KernelPCA now always returns output with n_components components, unless the new parameter remove_zero_eig is set to True. This new behavior is consistent with the way kernel PCA was always documented; previously, the removal of components with zero eigenvalues was tacitly performed on all data.
  • gcv_mode="auto" no longer tries to perform SVD on a densified sparse matrix in sklearn.linear_model.RidgeCV.
  • Sparse matrix support in sklearn.decomposition.RandomizedPCA is now deprecated in favor of the new TruncatedSVD.
  • cross_validation.KFold and cross_validation.StratifiedKFold now enforce n_folds >= 2 otherwise a ValueError is raised. By Olivier Grisel.
  • datasets.load_files‘s charset and charset_errors parameters were renamed encoding and decode_errors.
  • Attribute oob_score_ in sklearn.ensemble.GradientBoostingRegressor and sklearn.ensemble.GradientBoostingClassifier is deprecated and has been replaced by oob_improvement_ .
  • Attributes in OrthogonalMatchingPursuit have been deprecated (copy_X, Gram, ...) and precompute_gram renamed precompute for consistency. See #2224.
  • sklearn.preprocessing.StandardScaler now converts integer input to float, and raises a warning. Previously it rounded for dense integer input.
  • sklearn.multiclass.OneVsRestClassifier now has a decision_function method. This will return the distance of each sample from the decision boundary for each class, as long as the underlying estimators implement the decision_function method. By Kyle Kastner.
  • Better input validation, warning on unexpected shapes for y.

People

List of contributors for release 0.14 by number of commits.

  • 277 Gilles Louppe
  • 245 Lars Buitinck
  • 187 Andreas Mueller
  • 124 Arnaud Joly
  • 112 Jaques Grobler
  • 109 Gael Varoquaux
  • 107 Olivier Grisel
  • 102 Noel Dawe
  • 99 Kemal Eren
  • 79 Joel Nothman
  • 75 Jake VanderPlas
  • 73 Nelle Varoquaux
  • 71 Vlad Niculae
  • 65 Peter Prettenhofer
  • 64 Alexandre Gramfort
  • 54 Mathieu Blondel
  • 38 Nicolas Trésegnie
  • 35 eustache
  • 27 Denis Engemann
  • 25 Yann N. Dauphin
  • 19 Justin Vincent
  • 17 Robert Layton
  • 15 Doug Coleman
  • 14 Michael Eickenberg
  • 13 Robert Marchman
  • 11 Fabian Pedregosa
  • 11 Philippe Gervais
  • 10 Jim Holmström
  • 10 Tadej Janež
  • 10 syhw
  • 9 Mikhail Korobov
  • 9 Steven De Gryze
  • 8 sergeyf
  • 7 Ben Root
  • 7 Hrishikesh Huilgolkar
  • 6 Kyle Kastner
  • 6 Martin Luessi
  • 6 Rob Speer
  • 5 Federico Vaggi
  • 5 Raul Garreta
  • 5 Rob Zinkov
  • 4 Ken Geis
  • 3 A. Flaxman
  • 3 Denton Cockburn
  • 3 Dougal Sutherland
  • 3 Ian Ozsvald
  • 3 Johannes Schönberger
  • 3 Robert McGibbon
  • 3 Roman Sinayev
  • 3 Szabo Roland
  • 2 Diego Molla
  • 2 Imran Haque
  • 2 Jochen Wersdörfer
  • 2 Sergey Karayev
  • 2 Yannick Schwartz
  • 2 jamestwebber
  • 1 Abhijeet Kolhe
  • 1 Alexander Fabisch
  • 1 Bastiaan van den Berg
  • 1 Benjamin Peterson
  • 1 Daniel Velkov
  • 1 Fazlul Shahriar
  • 1 Felix Brockherde
  • 1 Félix-Antoine Fortin
  • 1 Harikrishnan S
  • 1 Jack Hale
  • 1 JakeMick
  • 1 James McDermott
  • 1 John Benediktsson
  • 1 John Zwinck
  • 1 Joshua Vredevoogd
  • 1 Justin Pati
  • 1 Kevin Hughes
  • 1 Kyle Kelley
  • 1 Matthias Ekman
  • 1 Miroslav Shubernetskiy
  • 1 Naoki Orii
  • 1 Norbert Crombach
  • 1 Rafael Cunha de Almeida
  • 1 Rolando Espinoza La fuente
  • 1 Seamus Abshere
  • 1 Sergey Feldman
  • 1 Sergio Medina
  • 1 Stefano Lattarini
  • 1 Steve Koch
  • 1 Sturla Molden
  • 1 Thomas Jarosch
  • 1 Yaroslav Halchenko

Version 0.13.1

February 23, 2013

The 0.13.1 release only fixes some bugs and does not add any new functionality.

Changelog

People

List of contributors for release 0.13.1 by number of commits.

Version 0.13

January 21, 2013

New Estimator Classes

Changelog

API changes summary

  • Renamed all occurrences of n_atoms to n_components for consistency. This applies to decomposition.DictionaryLearning, decomposition.MiniBatchDictionaryLearning, decomposition.dict_learning, decomposition.dict_learning_online.
  • Renamed all occurrences of max_iters to max_iter for consistency. This applies to semi_supervised.LabelPropagation and semi_supervised.label_propagation.LabelSpreading.
  • Renamed all occurrences of learn_rate to learning_rate for consistency in ensemble.BaseGradientBoosting and ensemble.GradientBoostingRegressor.
  • The module sklearn.linear_model.sparse is gone. Sparse matrix support was already integrated into the “regular” linear models.
  • sklearn.metrics.mean_square_error, which incorrectly returned the accumulated error, was removed. Use mean_squared_error instead.
  • Passing class_weight parameters to fit methods is no longer supported. Pass them to estimator constructors instead.
  • GMMs no longer have decode and rvs methods. Use the score, predict or sample methods instead.
  • The solver fit option in Ridge regression and classification is now deprecated and will be removed in v0.14. Use the constructor option instead.
  • feature_extraction.text.DictVectorizer now returns sparse matrices in the CSR format, instead of COO.
  • Renamed k in cross_validation.KFold and cross_validation.StratifiedKFold to n_folds, renamed n_bootstraps to n_iter in cross_validation.Bootstrap.
  • Renamed all occurrences of n_iterations to n_iter for consistency. This applies to cross_validation.ShuffleSplit, cross_validation.StratifiedShuffleSplit, utils.randomized_range_finder and utils.randomized_svd.
  • Replaced rho in linear_model.ElasticNet and linear_model.SGDClassifier by l1_ratio. The rho parameter had different meanings; l1_ratio was introduced to avoid confusion. It has the same meaning as previously rho in linear_model.ElasticNet and (1-rho) in linear_model.SGDClassifier.
  • linear_model.LassoLars and linear_model.Lars now store a list of paths in the case of multiple targets, rather than an array of paths.
  • The attribute gmm of hmm.GMMHMM was renamed to gmm_ to adhere more strictly with the API.
  • cluster.spectral_embedding was moved to manifold.spectral_embedding.
  • Renamed eig_tol in manifold.spectral_embedding, cluster.SpectralClustering to eigen_tol, renamed mode to eigen_solver.
  • Renamed mode in manifold.spectral_embedding and cluster.SpectralClustering to eigen_solver.
  • classes_ and n_classes_ attributes of tree.DecisionTreeClassifier and all derived ensemble models are now flat in case of single output problems and nested in case of multi-output problems.
  • The estimators_ attribute of ensemble.gradient_boosting.GradientBoostingRegressor and ensemble.gradient_boosting.GradientBoostingClassifier is now an array of :class:’tree.DecisionTreeRegressor’.
  • Renamed chunk_size to batch_size in decomposition.MiniBatchDictionaryLearning and decomposition.MiniBatchSparsePCA for consistency.
  • svm.SVC and svm.NuSVC now provide a classes_ attribute and support arbitrary dtypes for labels y. Also, the dtype returned by predict now reflects the dtype of y during fit (used to be np.float).
  • Changed default test_size in cross_validation.train_test_split to None, added possibility to infer test_size from train_size in cross_validation.ShuffleSplit and cross_validation.StratifiedShuffleSplit.
  • Renamed function sklearn.metrics.zero_one to sklearn.metrics.zero_one_loss. Be aware that the default behavior in sklearn.metrics.zero_one_loss is different from sklearn.metrics.zero_one: normalize=False is changed to normalize=True.
  • Renamed function metrics.zero_one_score to metrics.accuracy_score.
  • datasets.make_circles now has the same number of inner and outer points.
  • In the Naive Bayes classifiers, the class_prior parameter was moved from fit to __init__.

People

List of contributors for release 0.13 by number of commits.

Version 0.12.1

October 8, 2012

The 0.12.1 release is a bug-fix release with no additional features, but is instead a set of bug fixes

Changelog

Version 0.12

September 4, 2012

Changelog

API changes summary

People

Version 0.11

May 7, 2012

Changelog

Highlights

Other changes

API changes summary

  • covariance.EllipticEnvelop is now deprecated - Please use covariance.EllipticEnvelope instead.

  • NeighborsClassifier and NeighborsRegressor are gone in the module Nearest Neighbors. Use the classes KNeighborsClassifier, RadiusNeighborsClassifier, KNeighborsRegressor and/or RadiusNeighborsRegressor instead.

  • Sparse classes in the Stochastic Gradient Descent module are now deprecated.

  • In mixture.GMM, mixture.DPGMM and mixture.VBGMM, parameters must be passed to an object when initialising it and not through fit. Now fit will only accept the data as an input parameter.

  • methods rvs and decode in GMM module are now deprecated. sample and score or predict should be used instead.

  • attribute _scores and _pvalues in univariate feature selection objects are now deprecated. scores_ or pvalues_ should be used instead.

  • In LogisticRegression, LinearSVC, SVC and NuSVC, the class_weight parameter is now an initialization parameter, not a parameter to fit. This makes grid searches over this parameter possible.

  • LFW data is now always shape (n_samples, n_features) to be consistent with the Olivetti faces dataset. Use images and pairs attribute to access the natural images shapes instead.

  • In svm.LinearSVC, the meaning of the multi_class parameter changed. Options now are 'ovr' and 'crammer_singer', with 'ovr' being the default. This does not change the default behavior but hopefully is less confusing.

  • Class feature_selection.text.Vectorizer is deprecated and replaced by feature_selection.text.TfidfVectorizer.

  • The preprocessor / analyzer nested structure for text feature extraction has been removed. All those features are now directly passed as flat constructor arguments to feature_selection.text.TfidfVectorizer and feature_selection.text.CountVectorizer, in particular the following parameters are now used:

    • analyzer can be 'word' or 'char' to switch the default analysis scheme, or use a specific python callable (as previously).
    • tokenizer and preprocessor have been introduced to make it still possible to customize those steps with the new API.
    • input explicitly control how to interpret the sequence passed to fit and predict: filenames, file objects or direct (byte or Unicode) strings.
    • charset decoding is explicit and strict by default.
    • the vocabulary, fitted or not is now stored in the vocabulary_ attribute to be consistent with the project conventions.
  • Class feature_selection.text.TfidfVectorizer now derives directly from feature_selection.text.CountVectorizer to make grid search trivial.

  • methods rvs in _BaseHMM module are now deprecated. sample should be used instead.

  • Beam pruning option in _BaseHMM module is removed since it is difficult to be Cythonized. If you are interested, you can look in the history codes by git.

  • The SVMlight format loader now supports files with both zero-based and one-based column indices, since both occur “in the wild”.

  • Arguments in class ShuffleSplit are now consistent with StratifiedShuffleSplit. Arguments test_fraction and train_fraction are deprecated and renamed to test_size and train_size and can accept both float and int.

  • Arguments in class Bootstrap are now consistent with StratifiedShuffleSplit. Arguments n_test and n_train are deprecated and renamed to test_size and train_size and can accept both float and int.

  • Argument p added to classes in Nearest Neighbors to specify an arbitrary Minkowski metric for nearest neighbors searches.

People

Version 0.10

January 11, 2012

Changelog

API changes summary

Here are the code migration instructions when upgrading from scikit-learn version 0.9:

  • Some estimators that may overwrite their inputs to save memory previously had overwrite_ parameters; these have been replaced with copy_ parameters with exactly the opposite meaning.

    This particularly affects some of the estimators in linear_model. The default behavior is still to copy everything passed in.

  • The SVMlight dataset loader sklearn.datasets.load_svmlight_file no longer supports loading two files at once; use load_svmlight_files instead. Also, the (unused) buffer_mb parameter is gone.

  • Sparse estimators in the Stochastic Gradient Descent module use dense parameter vector coef_ instead of sparse_coef_. This significantly improves test time performance.

  • The Covariance estimation module now has a robust estimator of covariance, the Minimum Covariance Determinant estimator.

  • Cluster evaluation metrics in metrics.cluster have been refactored but the changes are backwards compatible. They have been moved to the metrics.cluster.supervised, along with metrics.cluster.unsupervised which contains the Silhouette Coefficient.

  • The permutation_test_score function now behaves the same way as cross_val_score (i.e. uses the mean score across the folds.)

  • Cross Validation generators now use integer indices (indices=True) by default instead of boolean masks. This make it more intuitive to use with sparse matrix data.

  • The functions used for sparse coding, sparse_encode and sparse_encode_parallel have been combined into sklearn.decomposition.sparse_encode, and the shapes of the arrays have been transposed for consistency with the matrix factorization setting, as opposed to the regression setting.

  • Fixed an off-by-one error in the SVMlight/LibSVM file format handling; files generated using sklearn.datasets.dump_svmlight_file should be re-generated. (They should continue to work, but accidentally had one extra column of zeros prepended.)

  • BaseDictionaryLearning class replaced by SparseCodingMixin.

  • sklearn.utils.extmath.fast_svd has been renamed sklearn.utils.extmath.randomized_svd and the default oversampling is now fixed to 10 additional random vectors instead of doubling the number of components to extract. The new behavior follows the reference paper.

People

The following people contributed to scikit-learn since last release:

Version 0.9

September 21, 2011

scikit-learn 0.9 was released on September 2011, three months after the 0.8 release and includes the new modules Manifold learning, The Dirichlet Process as well as several new algorithms and documentation improvements.

This release also includes the dictionary-learning work developed by Vlad Niculae as part of the Google Summer of Code program.

banner2 banner1 banner3

Changelog

API changes summary

Here are the code migration instructions when upgrading from scikit-learn version 0.8:

  • The scikits.learn package was renamed sklearn. There is still a scikits.learn package alias for backward compatibility.

    Third-party projects with a dependency on scikit-learn 0.9+ should upgrade their codebase. For instance, under Linux / MacOSX just run (make a backup first!):

    find -name "*.py" | xargs sed -i 's/\bscikits.learn\b/sklearn/g'
    
  • Estimators no longer accept model parameters as fit arguments: instead all parameters must be only be passed as constructor arguments or using the now public set_params method inherited from base.BaseEstimator.

    Some estimators can still accept keyword arguments on the fit but this is restricted to data-dependent values (e.g. a Gram matrix or an affinity matrix that are precomputed from the X data matrix.

  • The cross_val package has been renamed to cross_validation although there is also a cross_val package alias in place for backward compatibility.

    Third-party projects with a dependency on scikit-learn 0.9+ should upgrade their codebase. For instance, under Linux / MacOSX just run (make a backup first!):

    find -name "*.py" | xargs sed -i 's/\bcross_val\b/cross_validation/g'
    
  • The score_func argument of the sklearn.cross_validation.cross_val_score function is now expected to accept y_test and y_predicted as only arguments for classification and regression tasks or X_test for unsupervised estimators.

  • gamma parameter for support vector machine algorithms is set to 1 / n_features by default, instead of 1 / n_samples.

  • The sklearn.hmm has been marked as orphaned: it will be removed from scikit-learn in version 0.11 unless someone steps up to contribute documentation, examples and fix lurking numerical stability issues.

  • sklearn.neighbors has been made into a submodule. The two previously available estimators, NeighborsClassifier and NeighborsRegressor have been marked as deprecated. Their functionality has been divided among five new classes: NearestNeighbors for unsupervised neighbors searches, KNeighborsClassifier & RadiusNeighborsClassifier for supervised classification problems, and KNeighborsRegressor & RadiusNeighborsRegressor for supervised regression problems.

  • sklearn.ball_tree.BallTree has been moved to sklearn.neighbors.BallTree. Using the former will generate a warning.

  • sklearn.linear_model.LARS() and related classes (LassoLARS, LassoLARSCV, etc.) have been renamed to sklearn.linear_model.Lars().

  • All distance metrics and kernels in sklearn.metrics.pairwise now have a Y parameter, which by default is None. If not given, the result is the distance (or kernel similarity) between each sample in Y. If given, the result is the pairwise distance (or kernel similarity) between samples in X to Y.

  • sklearn.metrics.pairwise.l1_distance is now called manhattan_distance, and by default returns the pairwise distance. For the component wise distance, set the parameter sum_over_features to False.

Backward compatibility package aliases and other deprecated classes and functions will be removed in version 0.11.

People

38 people contributed to this release.

Version 0.8

May 11, 2011

scikit-learn 0.8 was released on May 2011, one month after the first “international” scikit-learn coding sprint and is marked by the inclusion of important modules: Hierarchical clustering, Cross decomposition, Non-negative matrix factorization (NMF or NNMF), initial support for Python 3 and by important enhancements and bug fixes.

Changelog

Several new modules where introduced during this release:

Some other modules benefited from significant improvements or cleanups.

People

People that made this release possible preceded by number of commits:

Version 0.7

March 2, 2011

scikit-learn 0.7 was released in March 2011, roughly three months after the 0.6 release. This release is marked by the speed improvements in existing algorithms like k-Nearest Neighbors and K-Means algorithm and by the inclusion of an efficient algorithm for computing the Ridge Generalized Cross Validation solution. Unlike the preceding release, no new modules where added to this release.

Changelog

People

People that made this release possible preceded by number of commits:

Version 0.6

December 21, 2010

scikit-learn 0.6 was released on December 2010. It is marked by the inclusion of several new modules and a general renaming of old ones. It is also marked by the inclusion of new example, including applications to real-world datasets.

Changelog

  • New stochastic gradient descent module by Peter Prettenhofer. The module comes with complete documentation and examples.
  • Improved svm module: memory consumption has been reduced by 50%, heuristic to automatically set class weights, possibility to assign weights to samples (see SVM: Weighted samples for an example).
  • New Gaussian Processes module by Vincent Dubourg. This module also has great documentation and some very neat examples. See example_gaussian_process_plot_gp_regression.py or example_gaussian_process_plot_gp_probabilistic_classification_after_regression.py for a taste of what can be done.
  • It is now possible to use liblinear’s Multi-class SVC (option multi_class in svm.LinearSVC)
  • New features and performance improvements of text feature extraction.
  • Improved sparse matrix support, both in main classes (grid_search.GridSearchCV) as in modules sklearn.svm.sparse and sklearn.linear_model.sparse.
  • Lots of cool new examples and a new section that uses real-world datasets was created. These include: Faces recognition example using eigenfaces and SVMs, Species distribution modeling, Libsvm GUI, Wikipedia principal eigenvector and others.
  • Faster Least Angle Regression algorithm. It is now 2x faster than the R version on worst case and up to 10x times faster on some cases.
  • Faster coordinate descent algorithm. In particular, the full path version of lasso (linear_model.lasso_path) is more than 200x times faster than before.
  • It is now possible to get probability estimates from a linear_model.LogisticRegression model.
  • module renaming: the glm module has been renamed to linear_model, the gmm module has been included into the more general mixture model and the sgd module has been included in linear_model.
  • Lots of bug fixes and documentation improvements.

People

People that made this release possible preceded by number of commits:

Version 0.5

October 11, 2010

Changelog

New classes

  • Support for sparse matrices in some classifiers of modules svm and linear_model (see svm.sparse.SVC, svm.sparse.SVR, svm.sparse.LinearSVC, linear_model.sparse.Lasso, linear_model.sparse.ElasticNet)
  • New pipeline.Pipeline object to compose different estimators.
  • Recursive Feature Elimination routines in module Feature selection.
  • Addition of various classes capable of cross validation in the linear_model module (linear_model.LassoCV, linear_model.ElasticNetCV, etc.).
  • New, more efficient LARS algorithm implementation. The Lasso variant of the algorithm is also implemented. See linear_model.lars_path, linear_model.Lars and linear_model.LassoLars.
  • New Hidden Markov Models module (see classes hmm.GaussianHMM, hmm.MultinomialHMM, hmm.GMMHMM)
  • New module feature_extraction (see class reference)
  • New FastICA algorithm in module sklearn.fastica

Documentation

Fixes

  • API changes: adhere variable names to PEP-8, give more meaningful names.
  • Fixes for svm module to run on a shared memory context (multiprocessing).
  • It is again possible to generate latex (and thus PDF) from the sphinx docs.

Examples

External dependencies

  • Joblib is now a dependency of this package, although it is shipped with (sklearn.externals.joblib).

Removed modules

  • Module ann (Artificial Neural Networks) has been removed from the distribution. Users wanting this sort of algorithms should take a look into pybrain.

Misc

  • New sphinx theme for the web page.

Authors

The following is a list of authors for this release, preceded by number of commits:

  • 262 Fabian Pedregosa
  • 240 Gael Varoquaux
  • 149 Alexandre Gramfort
  • 116 Olivier Grisel
  • 40 Vincent Michel
  • 38 Ron Weiss
  • 23 Matthieu Perrot
  • 10 Bertrand Thirion
  • 7 Yaroslav Halchenko
  • 9 VirgileFritsch
  • 6 Edouard Duchesnay
  • 4 Mathieu Blondel
  • 1 Ariel Rokem
  • 1 Matthieu Brucher

Version 0.4

August 26, 2010

Changelog

Major changes in this release include:

  • Coordinate Descent algorithm (Lasso, ElasticNet) refactoring & speed improvements (roughly 100x times faster).
  • Coordinate Descent Refactoring (and bug fixing) for consistency with R’s package GLMNET.
  • New metrics module.
  • New GMM module contributed by Ron Weiss.
  • Implementation of the LARS algorithm (without Lasso variant for now).
  • feature_selection module redesign.
  • Migration to GIT as version control system.
  • Removal of obsolete attrselect module.
  • Rename of private compiled extensions (added underscore).
  • Removal of legacy unmaintained code.
  • Documentation improvements (both docstring and rst).
  • Improvement of the build system to (optionally) link with MKL. Also, provide a lite BLAS implementation in case no system-wide BLAS is found.
  • Lots of new examples.
  • Many, many bug fixes ...

Authors

The committer list for this release is the following (preceded by number of commits):

  • 143 Fabian Pedregosa
  • 35 Alexandre Gramfort
  • 34 Olivier Grisel
  • 11 Gael Varoquaux
  • 5 Yaroslav Halchenko
  • 2 Vincent Michel
  • 1 Chris Filo Gorgolewski

Earlier versions

Earlier versions included contributions by Fred Mailhot, David Cooke, David Huard, Dave Morrill, Ed Schofield, Travis Oliphant, Pearu Peterson.