.. include:: _contributors.rst .. currentmodule:: sklearn .. _changes_0_14: Version 0.14 =============== **August 7, 2013** Changelog --------- - Missing values with sparse and dense matrices can be imputed with the transformer :class:`preprocessing.Imputer` by `Nicolas Trésegnie`_. - The core implementation of decisions trees has been rewritten from scratch, allowing for faster tree induction and lower memory consumption in all tree-based estimators. By `Gilles Louppe`_. - Added :class:`ensemble.AdaBoostClassifier` and :class:`ensemble.AdaBoostRegressor`, by `Noel Dawe`_ and `Gilles Louppe`_. See the :ref:`AdaBoost ` section of the user guide for details and examples. - Added :class:`grid_search.RandomizedSearchCV` and :class:`grid_search.ParameterSampler` for randomized hyperparameter optimization. By `Andreas Müller`_. - Added :ref:`biclustering ` algorithms (:class:`sklearn.cluster.bicluster.SpectralCoclustering` and :class:`sklearn.cluster.bicluster.SpectralBiclustering`), data generation methods (:func:`sklearn.datasets.make_biclusters` and :func:`sklearn.datasets.make_checkerboard`), and scoring metrics (:func:`sklearn.metrics.consensus_score`). By `Kemal Eren`_. - Added :ref:`Restricted Boltzmann Machines` (:class:`neural_network.BernoulliRBM`). By `Yann Dauphin`_. - Python 3 support by :user:`Justin Vincent `, `Lars Buitinck`_, :user:`Subhodeep Moitra ` and `Olivier Grisel`_. All tests now pass under Python 3.3. - Ability to pass one penalty (alpha value) per target in :class:`linear_model.Ridge`, by @eickenberg and `Mathieu Blondel`_. - Fixed :mod:`sklearn.linear_model.stochastic_gradient.py` L2 regularization issue (minor practical significance). By :user:`Norbert Crombach ` and `Mathieu Blondel`_ . - Added an interactive version of `Andreas Müller`_'s `Machine Learning Cheat Sheet (for scikit-learn) `_ to the documentation. See :ref:`Choosing the right estimator `. By `Jaques Grobler`_. - :class:`grid_search.GridSearchCV` and :func:`cross_validation.cross_val_score` now support the use of advanced scoring function such as area under the ROC curve and f-beta scores. See :ref:`scoring_parameter` for details. By `Andreas Müller`_ and `Lars Buitinck`_. Passing a function from :mod:`sklearn.metrics` as ``score_func`` is deprecated. - Multi-label classification output is now supported by :func:`metrics.accuracy_score`, :func:`metrics.zero_one_loss`, :func:`metrics.f1_score`, :func:`metrics.fbeta_score`, :func:`metrics.classification_report`, :func:`metrics.precision_score` and :func:`metrics.recall_score` by `Arnaud Joly`_. - Two new metrics :func:`metrics.hamming_loss` and :func:`metrics.jaccard_similarity_score` are added with multi-label support by `Arnaud Joly`_. - Speed and memory usage improvements in :class:`feature_extraction.text.CountVectorizer` and :class:`feature_extraction.text.TfidfVectorizer`, by Jochen Wersdörfer and Roman Sinayev. - The ``min_df`` parameter in :class:`feature_extraction.text.CountVectorizer` and :class:`feature_extraction.text.TfidfVectorizer`, which used to be 2, has been reset to 1 to avoid unpleasant surprises (empty vocabularies) for novice users who try it out on tiny document collections. A value of at least 2 is still recommended for practical use. - :class:`svm.LinearSVC`, :class:`linear_model.SGDClassifier` and :class:`linear_model.SGDRegressor` now have a ``sparsify`` method that converts their ``coef_`` into a sparse matrix, meaning stored models trained using these estimators can be made much more compact. - :class:`linear_model.SGDClassifier` now produces multiclass probability estimates when trained under log loss or modified Huber loss. - Hyperlinks to documentation in example code on the website by :user:`Martin Luessi `. - Fixed bug in :class:`preprocessing.MinMaxScaler` causing incorrect scaling of the features for non-default ``feature_range`` settings. By `Andreas Müller`_. - ``max_features`` in :class:`tree.DecisionTreeClassifier`, :class:`tree.DecisionTreeRegressor` and all derived ensemble estimators now supports percentage values. By `Gilles Louppe`_. - Performance improvements in :class:`isotonic.IsotonicRegression` by `Nelle Varoquaux`_. - :func:`metrics.accuracy_score` has an option normalize to return the fraction or the number of correctly classified sample by `Arnaud Joly`_. - Added :func:`metrics.log_loss` that computes log loss, aka cross-entropy loss. By Jochen Wersdörfer and `Lars Buitinck`_. - A bug that caused :class:`ensemble.AdaBoostClassifier`'s to output incorrect probabilities has been fixed. - Feature selectors now share a mixin providing consistent ``transform``, ``inverse_transform`` and ``get_support`` methods. By `Joel Nothman`_. - A fitted :class:`grid_search.GridSearchCV` or :class:`grid_search.RandomizedSearchCV` can now generally be pickled. By `Joel Nothman`_. - Refactored and vectorized implementation of :func:`metrics.roc_curve` and :func:`metrics.precision_recall_curve`. By `Joel Nothman`_. - The new estimator :class:`sklearn.decomposition.TruncatedSVD` performs dimensionality reduction using SVD on sparse matrices, and can be used for latent semantic analysis (LSA). By `Lars Buitinck`_. - Added self-contained example of out-of-core learning on text data :ref:`sphx_glr_auto_examples_applications_plot_out_of_core_classification.py`. By :user:`Eustache Diemert `. - The default number of components for :class:`sklearn.decomposition.RandomizedPCA` is now correctly documented to be ``n_features``. This was the default behavior, so programs using it will continue to work as they did. - :class:`sklearn.cluster.KMeans` now fits several orders of magnitude faster on sparse data (the speedup depends on the sparsity). By `Lars Buitinck`_. - Reduce memory footprint of FastICA by `Denis Engemann`_ and `Alexandre Gramfort`_. - Verbose output in :mod:`sklearn.ensemble.gradient_boosting` now uses a column format and prints progress in decreasing frequency. It also shows the remaining time. By `Peter Prettenhofer`_. - :mod:`sklearn.ensemble.gradient_boosting` provides out-of-bag improvement :attr:`~sklearn.ensemble.GradientBoostingRegressor.oob_improvement_` rather than the OOB score for model selection. An example that shows how to use OOB estimates to select the number of trees was added. By `Peter Prettenhofer`_. - Most metrics now support string labels for multiclass classification by `Arnaud Joly`_ and `Lars Buitinck`_. - New OrthogonalMatchingPursuitCV class by `Alexandre Gramfort`_ and `Vlad Niculae`_. - Fixed a bug in :class:`sklearn.covariance.GraphLassoCV`: the 'alphas' parameter now works as expected when given a list of values. By Philippe Gervais. - Fixed an important bug in :class:`sklearn.covariance.GraphLassoCV` that prevented all folds provided by a CV object to be used (only the first 3 were used). When providing a CV object, execution time may thus increase significantly compared to the previous version (bug results are correct now). By Philippe Gervais. - :class:`cross_validation.cross_val_score` and the :mod:`grid_search` module is now tested with multi-output data by `Arnaud Joly`_. - :func:`datasets.make_multilabel_classification` can now return the output in label indicator multilabel format by `Arnaud Joly`_. - K-nearest neighbors, :class:`neighbors.KNeighborsRegressor` and :class:`neighbors.RadiusNeighborsRegressor`, and radius neighbors, :class:`neighbors.RadiusNeighborsRegressor` and :class:`neighbors.RadiusNeighborsClassifier` support multioutput data by `Arnaud Joly`_. - Random state in LibSVM-based estimators (:class:`svm.SVC`, :class:`NuSVC`, :class:`OneClassSVM`, :class:`svm.SVR`, :class:`svm.NuSVR`) can now be controlled. This is useful to ensure consistency in the probability estimates for the classifiers trained with ``probability=True``. By `Vlad Niculae`_. - Out-of-core learning support for discrete naive Bayes classifiers :class:`sklearn.naive_bayes.MultinomialNB` and :class:`sklearn.naive_bayes.BernoulliNB` by adding the ``partial_fit`` method by `Olivier Grisel`_. - New website design and navigation by `Gilles Louppe`_, `Nelle Varoquaux`_, Vincent Michel and `Andreas Müller`_. - Improved documentation on :ref:`multi-class, multi-label and multi-output classification ` by `Yannick Schwartz`_ and `Arnaud Joly`_. - Better input and error handling in the :mod:`metrics` module by `Arnaud Joly`_ and `Joel Nothman`_. - Speed optimization of the :mod:`hmm` module by :user:`Mikhail Korobov ` - Significant speed improvements for :class:`sklearn.cluster.DBSCAN` by `cleverless `_ API changes summary ------------------- - The :func:`auc_score` was renamed :func:`roc_auc_score`. - Testing scikit-learn with ``sklearn.test()`` is deprecated. Use ``nosetests sklearn`` from the command line. - Feature importances in :class:`tree.DecisionTreeClassifier`, :class:`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`_. - :class:`linear_model.lasso_path` and :class:`linear_model.enet_path` can return its results in the same format as that of :class:`linear_model.lars_path`. This is done by setting the ``return_models`` parameter to ``False``. By `Jaques Grobler`_ and `Alexandre Gramfort`_ - :class:`grid_search.IterGrid` was renamed to :class:`grid_search.ParameterGrid`. - Fixed bug in :class:`KFold` causing imperfect class balance in some cases. By `Alexandre Gramfort`_ and Tadej Janež. - :class:`sklearn.neighbors.BallTree` has been refactored, and a :class:`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 :class:`KDTree` class. - :class:`sklearn.neighbors.KernelDensity` has been added, which performs efficient kernel density estimation with a variety of kernels. - :class:`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 :class:`sklearn.linear_model.RidgeCV`. - Sparse matrix support in :class:`sklearn.decomposition.RandomizedPCA` is now deprecated in favor of the new ``TruncatedSVD``. - :class:`cross_validation.KFold` and :class:`cross_validation.StratifiedKFold` now enforce `n_folds >= 2` otherwise a ``ValueError`` is raised. By `Olivier Grisel`_. - :func:`datasets.load_files`'s ``charset`` and ``charset_errors`` parameters were renamed ``encoding`` and ``decode_errors``. - Attribute ``oob_score_`` in :class:`sklearn.ensemble.GradientBoostingRegressor` and :class:`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. - :class:`sklearn.preprocessing.StandardScaler` now converts integer input to float, and raises a warning. Previously it rounded for dense integer input. - :class:`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