Release history

Version 0.18

Changelog

New features

Enhancements

Bug fixes

  • StratifiedKFold now raises error if all n_labels for individual classes is less than n_folds. (#6182) by Devashish Deshpande.
  • RandomizedPCA default number of iterated_power is 4 instead of 3. (#5141) by Giorgio Patrini.
  • utils.extmath.randomized_svd performs 4 power iterations by default, instead or 0. In practice this is enough for obtaining a good approximation of the true eigenvalues/vectors in the presence of noise. When n_components is small (< .1 * min(X.shape)) n_iter is set to 7, unless the user specifies a higher number. This improves precision with few components. (#5299) by Giorgio Patrini.
  • 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.
  • Whiten/non-whiten inconsistency between components of decomposition.PCA and decomposition.RandomizedPCA (now factored into PCA, see the New features) is fixed. components_ are stored with no whitening. (#5299) by Giorgio Patrini.
  • Fixed bug in manifold.spectral_embedding where diagonal of unnormalized Laplacian matrix was incorrectly set to 1. (#4995) By Peter Fischer.
  • Fixed incorrect initialization of utils.arpack.eigsh on all occurrences. Affects cluster.SpectralBiclustering, decomposition.KernelPCA, manifold.LocallyLinearEmbedding, and manifold.SpectralEmbedding (#5012). By Peter Fischer.
  • Random forest, extra trees, decision trees and gradient boosting won’t accept anymore min_samples_split=1 as at least 2 samples are required to split a decision tree node. By Arnaud Joly
  • VotingClassifier now raises NotFittedError if predict, transform or predict_proba are called on the non-fitted estimator. by Sebastian Raschka.
  • Fixed bug in model_selection.StratifiedShuffleSplit where train and test sample could overlap in some edge cases, see #6121 for more details. By Loic Esteve.
  • Attribute explained_variance_ratio_ calculated with the SVD solver of :clas:`discriminant_analysis.LinearDiscriminantAnalysis` now returns correct results. By JPFrancoia

API changes summary

  • The cross_validation, grid_search and learning_curve have been deprecated and the classes and functions have been reorganized into the model_selection module. (#4294) by Raghav R V.
  • residual_metric has been deprecated in linear_model.RANSACRegressor. Use loss instead. By Manoj Kumar.
  • Access to public attributes .X_ and .y_ has been deprecated in isotonic.IsotonicRegression. By Jonathan Arfa.
  • The old GMM is deprecated in favor of the new GaussianMixture. The new class compute the Gaussian mixture faster than before and some of computationnal problems have been solved. By Wei Xue and Thierry Guillemot.

Version 0.17.1

Changelog

Bug fixes

Version 0.17

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.

Version 0.16.1

Changelog

Bug fixes

Version 0.16

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.

Version 0.15.2

Bug fixes

Version 0.15.1

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

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 Saeger
  • 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

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

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

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

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

Changelog

API changes summary

People

Version 0.11

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

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

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

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

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

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

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

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.