Back to Scikit Learn

Version 1.0

doc/whats_new/v1.0.rst

1.8.056.5 KB
Original Source

.. include:: _contributors.rst

.. currentmodule:: sklearn

.. _release_notes_1_0:

=========== Version 1.0

For a short description of the main highlights of the release, please refer to :ref:sphx_glr_auto_examples_release_highlights_plot_release_highlights_1_0_0.py.

.. include:: changelog_legend.inc

.. _changes_1_0_2:

Version 1.0.2

December 2021

  • |Fix| :class:cluster.Birch, :class:feature_selection.RFECV, :class:ensemble.RandomForestRegressor, :class:ensemble.RandomForestClassifier, :class:ensemble.GradientBoostingRegressor, and :class:ensemble.GradientBoostingClassifier do not raise warning when fitted on a pandas DataFrame anymore. :pr:21578 by Thomas Fan_.

Changelog

:mod:sklearn.cluster ......................

  • |Fix| Fixed an infinite loop in :func:cluster.SpectralClustering by moving an iteration counter from try to except. :pr:21271 by :user:Tyler Martin <martintb>.

:mod:sklearn.datasets .......................

  • |Fix| :func:datasets.fetch_openml is now thread safe. Data is first downloaded to a temporary subfolder and then renamed. :pr:21833 by :user:Siavash Rezazadeh <siavrez>.

:mod:sklearn.decomposition ............................

  • |Fix| Fixed the constraint on the objective function of :class:decomposition.DictionaryLearning, :class:decomposition.MiniBatchDictionaryLearning, :class:decomposition.SparsePCA and :class:decomposition.MiniBatchSparsePCA to be convex and match the referenced article. :pr:19210 by :user:Jérémie du Boisberranger <jeremiedbb>.

:mod:sklearn.ensemble .......................

  • |Fix| :class:ensemble.RandomForestClassifier, :class:ensemble.RandomForestRegressor, :class:ensemble.ExtraTreesClassifier, :class:ensemble.ExtraTreesRegressor, and :class:ensemble.RandomTreesEmbedding now raise a ValueError when bootstrap=False and max_samples is not None. :pr:21295 :user:Haoyin Xu <PSSF23>.

  • |Fix| Solve a bug in :class:ensemble.GradientBoostingClassifier where the exponential loss was computing the positive gradient instead of the negative one. :pr:22050 by :user:Guillaume Lemaitre <glemaitre>.

:mod:sklearn.feature_selection ................................

  • |Fix| Fixed :class:feature_selection.SelectFromModel by improving support for base estimators that do not set feature_names_in_. :pr:21991 by Thomas Fan_.

:mod:sklearn.impute .....................

  • |Fix| Fix a bug in :class:linear_model.RidgeClassifierCV where the method predict was performing an argmax on the scores obtained from decision_function instead of returning the multilabel indicator matrix. :pr:19869 by :user:Guillaume Lemaitre <glemaitre>.

:mod:sklearn.linear_model ...........................

  • |Fix| :class:linear_model.LassoLarsIC now correctly computes AIC and BIC. An error is now raised when n_features > n_samples and when the noise variance is not provided. :pr:21481 by :user:Guillaume Lemaitre <glemaitre> and :user:Andrés Babino <ababino>.

:mod:sklearn.manifold .......................

  • |Fix| Fixed an unnecessary error when fitting :class:manifold.Isomap with a precomputed dense distance matrix where the neighbors graph has multiple disconnected components. :pr:21915 by Tom Dupre la Tour_.

:mod:sklearn.metrics ......................

  • |Fix| All :class:sklearn.metrics.DistanceMetric subclasses now correctly support read-only buffer attributes. This fixes a regression introduced in 1.0.0 with respect to 0.24.2. :pr:21694 by :user:Julien Jerphanion <jjerphan>.

  • |Fix| All sklearn.metrics.MinkowskiDistance now accepts a weight parameter that makes it possible to write code that behaves consistently both with scipy 1.8 and earlier versions. In turn this means that all neighbors-based estimators (except those that use algorithm="kd_tree") now accept a weight parameter with metric="minkowski" to yield results that are always consistent with scipy.spatial.distance.cdist. :pr:21741 by :user:Olivier Grisel <ogrisel>.

:mod:sklearn.multiclass .........................

  • |Fix| :meth:multiclass.OneVsRestClassifier.predict_proba does not error when fitted on constant integer targets. :pr:21871 by Thomas Fan_.

:mod:sklearn.neighbors ........................

  • |Fix| :class:neighbors.KDTree and :class:neighbors.BallTree correctly support read-only buffer attributes. :pr:21845 by Thomas Fan_.

:mod:sklearn.preprocessing ............................

  • |Fix| Fixes compatibility bug with NumPy 1.22 in :class:preprocessing.OneHotEncoder. :pr:21517 by Thomas Fan_.

:mod:sklearn.tree ...................

  • |Fix| Prevents :func:tree.plot_tree from drawing out of the boundary of the figure. :pr:21917 by Thomas Fan_.

  • |Fix| Support loading pickles of decision tree models when the pickle has been generated on a platform with a different bitness. A typical example is to train and pickle the model on 64 bit machine and load the model on a 32 bit machine for prediction. :pr:21552 by :user:Loïc Estève <lesteve>.

:mod:sklearn.utils ....................

  • |Fix| :func:utils.estimator_html_repr now escapes all the estimator descriptions in the generated HTML. :pr:21493 by :user:Aurélien Geron <ageron>.

.. _changes_1_0_1:

Version 1.0.1

October 2021

Fixed models

  • |Fix| Non-fit methods in the following classes do not raise a UserWarning when fitted on DataFrames with valid feature names: :class:covariance.EllipticEnvelope, :class:ensemble.IsolationForest, :class:ensemble.AdaBoostClassifier, :class:neighbors.KNeighborsClassifier, :class:neighbors.KNeighborsRegressor, :class:neighbors.RadiusNeighborsClassifier, :class:neighbors.RadiusNeighborsRegressor. :pr:21199 by Thomas Fan_.

:mod:sklearn.calibration ..........................

  • |Fix| Fixed :class:calibration.CalibratedClassifierCV to take into account sample_weight when computing the base estimator prediction when ensemble=False. :pr:20638 by :user:Julien Bohné <JulienB-78>.

  • |Fix| Fixed a bug in :class:calibration.CalibratedClassifierCV with method="sigmoid" that was ignoring the sample_weight when computing the Bayesian priors. :pr:21179 by :user:Guillaume Lemaitre <glemaitre>.

:mod:sklearn.cluster ......................

  • |Fix| Fixed a bug in :class:cluster.KMeans, ensuring reproducibility and equivalence between sparse and dense input. :pr:21195 by :user:Jérémie du Boisberranger <jeremiedbb>.

:mod:sklearn.ensemble .......................

  • |Fix| Fixed a bug that could produce a segfault in rare cases for :class:ensemble.HistGradientBoostingClassifier and :class:ensemble.HistGradientBoostingRegressor. :pr:21130 :user:Christian Lorentzen <lorentzenchr>.

:mod:sklearn.gaussian_process ...............................

  • |Fix| Compute y_std properly with multi-target in :class:sklearn.gaussian_process.GaussianProcessRegressor allowing proper normalization in multi-target scene. :pr:20761 by :user:Patrick de C. T. R. Ferreira <patrickctrf>.

:mod:sklearn.feature_extraction .................................

  • |Efficiency| Fixed an efficiency regression introduced in version 1.0.0 in the transform method of :class:feature_extraction.text.CountVectorizer which no longer checks for uppercase characters in the provided vocabulary. :pr:21251 by :user:Jérémie du Boisberranger <jeremiedbb>.

  • |Fix| Fixed a bug in :class:feature_extraction.text.CountVectorizer and :class:feature_extraction.text.TfidfVectorizer by raising an error when 'min_idf' or 'max_idf' are floating-point numbers greater than 1. :pr:20752 by :user:Alek Lefebvre <AlekLefebvre>.

:mod:sklearn.linear_model ...........................

  • |Fix| Improves stability of :class:linear_model.LassoLars for different versions of openblas. :pr:21340 by Thomas Fan_.

  • |Fix| :class:linear_model.LogisticRegression now raises a better error message when the solver does not support sparse matrices with int64 indices. :pr:21093 by Tom Dupre la Tour_.

:mod:sklearn.neighbors ........................

  • |Fix| :class:neighbors.KNeighborsClassifier, :class:neighbors.KNeighborsRegressor, :class:neighbors.RadiusNeighborsClassifier, :class:neighbors.RadiusNeighborsRegressor with metric="precomputed" raises an error for bsr and dok sparse matrices in methods: fit, kneighbors and radius_neighbors, due to handling of explicit zeros in bsr and dok :term:sparse graph formats. :pr:21199 by Thomas Fan_.

:mod:sklearn.pipeline .......................

  • |Fix| :meth:pipeline.Pipeline.get_feature_names_out correctly passes feature names out from one step of a pipeline to the next. :pr:21351 by Thomas Fan_.

:mod:sklearn.svm ..................

  • |Fix| :class:svm.SVC and :class:svm.SVR check for an inconsistency in its internal representation and raise an error instead of segfaulting. This fix also resolves CVE-2020-28975 <https://nvd.nist.gov/vuln/detail/CVE-2020-28975>__. :pr:21336 by Thomas Fan_.

:mod:sklearn.utils ....................

  • |Enhancement| utils.validation._check_sample_weight can perform a non-negativity check on the sample weights. It can be turned on using the only_non_negative bool parameter. Estimators that check for non-negative weights are updated: :func:linear_model.LinearRegression (here the previous error message was misleading), :func:ensemble.AdaBoostClassifier, :func:ensemble.AdaBoostRegressor, :func:neighbors.KernelDensity. :pr:20880 by :user:Guillaume Lemaitre <glemaitre> and :user:András Simon <simonandras>.

  • |Fix| Solve a bug in sklearn.utils.metaestimators.if_delegate_has_method where the underlying check for an attribute did not work with NumPy arrays. :pr:21145 by :user:Zahlii <Zahlii>.

Miscellaneous .............

  • |Fix| Fitting an estimator on a dataset that has no feature names, that was previously fitted on a dataset with feature names no longer keeps the old feature names stored in the feature_names_in_ attribute. :pr:21389 by :user:Jérémie du Boisberranger <jeremiedbb>.

.. _changes_1_0:

Version 1.0.0

September 2021

Minimal dependencies

Version 1.0.0 of scikit-learn requires python 3.7+, numpy 1.14.6+ and scipy 1.1.0+. Optional minimal dependency is matplotlib 2.2.2+.

Enforcing keyword-only arguments

In an effort to promote clear and non-ambiguous use of the library, most constructor and function parameters must now be passed as keyword arguments (i.e. using the param=value syntax) instead of positional. If a keyword-only parameter is used as positional, a TypeError is now raised. :issue:15005 :pr:20002 by Joel Nothman, Adrin Jalali, Thomas Fan, Nicolas Hug, and Tom Dupre la Tour. See SLEP009 <https://scikit-learn-enhancement-proposals.readthedocs.io/en/latest/slep009/proposal.html> for more details.

Changed models

The following estimators and functions, when fit with the same data and parameters, may produce different models from the previous version. This often occurs due to changes in the modelling logic (bug fixes or enhancements), or in random sampling procedures.

  • |Fix| :class:manifold.TSNE now avoids numerical underflow issues during affinity matrix computation.

  • |Fix| :class:manifold.Isomap now connects disconnected components of the neighbors graph along some minimum distance pairs, instead of changing every infinite distances to zero.

  • |Fix| The splitting criterion of :class:tree.DecisionTreeClassifier and :class:tree.DecisionTreeRegressor can be impacted by a fix in the handling of rounding errors. Previously some extra spurious splits could occur.

  • |Fix| :func:model_selection.train_test_split with a stratify parameter and :class:model_selection.StratifiedShuffleSplit may lead to slightly different results.

Details are listed in the changelog below.

(While we are trying to better inform users by providing this information, we cannot assure that this list is complete.)

Changelog

.. Entries should be grouped by module (in alphabetic order) and prefixed with one of the labels: |MajorFeature|, |Feature|, |Efficiency|, |Enhancement|, |Fix| or |API| (see whats_new.rst for descriptions). Entries should be ordered by those labels (e.g. |Fix| after |Efficiency|). Changes not specific to a module should be listed under Multiple Modules or Miscellaneous. Entries should end with: :pr:123456 by :user:Joe Bloggs <joeongithub>. where 123456 is the pull request number, not the issue number.

  • |API| The option for using the squared error via loss and criterion parameters was made more consistent. The preferred way is by setting the value to "squared_error". Old option names are still valid, produce the same models, but are deprecated and will be removed in version 1.2. :pr:19310 by :user:Christian Lorentzen <lorentzenchr>.

    • For :class:ensemble.ExtraTreesRegressor, criterion="mse" is deprecated, use "squared_error" instead which is now the default.

    • For :class:ensemble.GradientBoostingRegressor, loss="ls" is deprecated, use "squared_error" instead which is now the default.

    • For :class:ensemble.RandomForestRegressor, criterion="mse" is deprecated, use "squared_error" instead which is now the default.

    • For :class:ensemble.HistGradientBoostingRegressor, loss="least_squares" is deprecated, use "squared_error" instead which is now the default.

    • For :class:linear_model.RANSACRegressor, loss="squared_loss" is deprecated, use "squared_error" instead.

    • For :class:linear_model.SGDRegressor, loss="squared_loss" is deprecated, use "squared_error" instead which is now the default.

    • For :class:tree.DecisionTreeRegressor, criterion="mse" is deprecated, use "squared_error" instead which is now the default.

    • For :class:tree.ExtraTreeRegressor, criterion="mse" is deprecated, use "squared_error" instead which is now the default.

  • |API| The option for using the absolute error via loss and criterion parameters was made more consistent. The preferred way is by setting the value to "absolute_error". Old option names are still valid, produce the same models, but are deprecated and will be removed in version 1.2. :pr:19733 by :user:Christian Lorentzen <lorentzenchr>.

    • For :class:ensemble.ExtraTreesRegressor, criterion="mae" is deprecated, use "absolute_error" instead.

    • For :class:ensemble.GradientBoostingRegressor, loss="lad" is deprecated, use "absolute_error" instead.

    • For :class:ensemble.RandomForestRegressor, criterion="mae" is deprecated, use "absolute_error" instead.

    • For :class:ensemble.HistGradientBoostingRegressor, loss="least_absolute_deviation" is deprecated, use "absolute_error" instead.

    • For :class:linear_model.RANSACRegressor, loss="absolute_loss" is deprecated, use "absolute_error" instead which is now the default.

    • For :class:tree.DecisionTreeRegressor, criterion="mae" is deprecated, use "absolute_error" instead.

    • For :class:tree.ExtraTreeRegressor, criterion="mae" is deprecated, use "absolute_error" instead.

  • |API| np.matrix usage is deprecated in 1.0 and will raise a TypeError in 1.2. :pr:20165 by Thomas Fan_.

  • |API| :term:get_feature_names_out has been added to the transformer API to get the names of the output features. get_feature_names has in turn been deprecated. :pr:18444 by Thomas Fan_.

  • |API| All estimators store feature_names_in_ when fitted on pandas Dataframes. These feature names are compared to names seen in non-fit methods, e.g. transform and will raise a FutureWarning if they are not consistent, see also :ref:sphx_glr_auto_examples_release_highlights_plot_release_highlights_1_0_0.py. These FutureWarning s will become ValueError s in 1.2. :pr:18010 by Thomas Fan_.

:mod:sklearn.base ...................

  • |Fix| :func:config_context is now threadsafe. :pr:18736 by Thomas Fan_.

:mod:sklearn.calibration ..........................

  • |Feature| :func:calibration.CalibrationDisplay added to plot calibration curves. :pr:17443 by :user:Lucy Liu <lucyleeow>.

  • |Fix| The predict and predict_proba methods of :class:calibration.CalibratedClassifierCV can now properly be used on prefitted pipelines. :pr:19641 by :user:Alek Lefebvre <AlekLefebvre>.

  • |Fix| Fixed an error when using a :class:ensemble.VotingClassifier as base_estimator in :class:calibration.CalibratedClassifierCV. :pr:20087 by :user:Clément Fauchereau <clement-f>.

:mod:sklearn.cluster ......................

  • |Efficiency| The "k-means++" initialization of :class:cluster.KMeans and :class:cluster.MiniBatchKMeans is now faster, especially in multicore settings. :pr:19002 by :user:Jon Crall <Erotemic> and :user:Jérémie du Boisberranger <jeremiedbb>.

  • |Efficiency| :class:cluster.KMeans with algorithm='elkan' is now faster in multicore settings. :pr:19052 by :user:Yusuke Nagasaka <YusukeNagasaka>.

  • |Efficiency| :class:cluster.MiniBatchKMeans is now faster in multicore settings. :pr:17622 by :user:Jérémie du Boisberranger <jeremiedbb>.

  • |Efficiency| :class:cluster.OPTICS can now cache the output of the computation of the tree, using the memory parameter. :pr:19024 by :user:Frankie Robertson <frankier>.

  • |Enhancement| The predict and fit_predict methods of :class:cluster.AffinityPropagation now accept sparse data type for input data. :pr:20117 by :user:Venkatachalam Natchiappan <venkyyuvy>

  • |Fix| Fixed a bug in :class:cluster.MiniBatchKMeans where the sample weights were partially ignored when the input is sparse. :pr:17622 by :user:Jérémie du Boisberranger <jeremiedbb>.

  • |Fix| Improved convergence detection based on center change in :class:cluster.MiniBatchKMeans which was almost never achievable. :pr:17622 by :user:Jérémie du Boisberranger <jeremiedbb>.

  • |FIX| :class:cluster.AgglomerativeClustering now supports readonly memory-mapped datasets. :pr:19883 by :user:Julien Jerphanion <jjerphan>.

  • |Fix| :class:cluster.AgglomerativeClustering correctly connects components when connectivity and affinity are both precomputed and the number of connected components is greater than 1. :pr:20597 by Thomas Fan_.

  • |Fix| :class:cluster.FeatureAgglomeration does not accept a **params kwarg in the fit function anymore, resulting in a more concise error message. :pr:20899 by :user:Adam Li <adam2392>.

  • |Fix| Fixed a bug in :class:cluster.KMeans, ensuring reproducibility and equivalence between sparse and dense input. :pr:20200 by :user:Jérémie du Boisberranger <jeremiedbb>.

  • |API| :class:cluster.Birch attributes, fit_ and partial_fit_, are deprecated and will be removed in 1.2. :pr:19297 by Thomas Fan_.

  • |API| the default value for the batch_size parameter of :class:cluster.MiniBatchKMeans was changed from 100 to 1024 due to efficiency reasons. The n_iter_ attribute of :class:cluster.MiniBatchKMeans now reports the number of started epochs and the n_steps_ attribute reports the number of mini batches processed. :pr:17622 by :user:Jérémie du Boisberranger <jeremiedbb>.

  • |API| :func:cluster.spectral_clustering raises an improved error when passed a np.matrix. :pr:20560 by Thomas Fan_.

:mod:sklearn.compose ......................

  • |Enhancement| :class:compose.ColumnTransformer now records the output of each transformer in output_indices_. :pr:18393 by :user:Luca Bittarello <lbittarello>.

  • |Enhancement| :class:compose.ColumnTransformer now allows DataFrame input to have its columns appear in a changed order in transform. Further, columns that are dropped will not be required in transform, and additional columns will be ignored if remainder='drop'. :pr:19263 by Thomas Fan_.

  • |Enhancement| Adds **predict_params keyword argument to :meth:compose.TransformedTargetRegressor.predict that passes keyword argument to the regressor. :pr:19244 by :user:Ricardo <ricardojnf>.

  • |FIX| compose.ColumnTransformer.get_feature_names supports non-string feature names returned by any of its transformers. However, note that get_feature_names is deprecated, use get_feature_names_out instead. :pr:18459 by :user:Albert Villanova del Moral <albertvillanova> and :user:Alonso Silva Allende <alonsosilvaallende>.

  • |Fix| :class:compose.TransformedTargetRegressor now takes nD targets with an adequate transformer. :pr:18898 by :user:Oras Phongpanagnam <panangam>.

  • |API| Adds verbose_feature_names_out to :class:compose.ColumnTransformer. This flag controls the prefixing of feature names out in :term:get_feature_names_out. :pr:18444 and :pr:21080 by Thomas Fan_.

:mod:sklearn.covariance .........................

  • |Fix| Adds arrays check to :func:covariance.ledoit_wolf and :func:covariance.ledoit_wolf_shrinkage. :pr:20416 by :user:Hugo Defois <defoishugo>.

  • |API| Deprecates the following keys in cv_results_: 'mean_score', 'std_score', and 'split(k)_score' in favor of 'mean_test_score' 'std_test_score', and 'split(k)_test_score'. :pr:20583 by Thomas Fan_.

:mod:sklearn.datasets .......................

  • |Enhancement| :func:datasets.fetch_openml now supports categories with missing values when returning a pandas dataframe. :pr:19365 by Thomas Fan_ and :user:Amanda Dsouza <amy12xx> and :user:EL-ATEIF Sara <elateifsara>.

  • |Enhancement| :func:datasets.fetch_kddcup99 raises a better message when the cached file is invalid. :pr:19669 Thomas Fan_.

  • |Enhancement| Replace usages of __file__ related to resource file I/O with importlib.resources to avoid the assumption that these resource files (e.g. iris.csv) already exist on a filesystem, and by extension to enable compatibility with tools such as PyOxidizer. :pr:20297 by :user:Jack Liu <jackzyliu>.

  • |Fix| Shorten data file names in the openml tests to better support installing on Windows and its default 260 character limit on file names. :pr:20209 by Thomas Fan_.

  • |Fix| :func:datasets.fetch_kddcup99 returns dataframes when return_X_y=True and as_frame=True. :pr:19011 by Thomas Fan_.

  • |API| Deprecates datasets.load_boston in 1.0 and it will be removed in 1.2. Alternative code snippets to load similar datasets are provided. Please report to the docstring of the function for details. :pr:20729 by Guillaume Lemaitre_.

:mod:sklearn.decomposition ............................

  • |Enhancement| added a new approximate solver (randomized SVD, available with eigen_solver='randomized') to :class:decomposition.KernelPCA. This significantly accelerates computation when the number of samples is much larger than the desired number of components. :pr:12069 by :user:Sylvain Marié <smarie>.

  • |Fix| Fixes incorrect multiple data-conversion warnings when clustering boolean data. :pr:19046 by :user:Surya Prakash <jdsurya>.

  • |Fix| Fixed :func:decomposition.dict_learning, used by :class:decomposition.DictionaryLearning, to ensure determinism of the output. Achieved by flipping signs of the SVD output which is used to initialize the code. :pr:18433 by :user:Bruno Charron <brcharron>.

  • |Fix| Fixed a bug in :class:decomposition.MiniBatchDictionaryLearning, :class:decomposition.MiniBatchSparsePCA and :func:decomposition.dict_learning_online where the update of the dictionary was incorrect. :pr:19198 by :user:Jérémie du Boisberranger <jeremiedbb>.

  • |Fix| Fixed a bug in :class:decomposition.DictionaryLearning, :class:decomposition.SparsePCA, :class:decomposition.MiniBatchDictionaryLearning, :class:decomposition.MiniBatchSparsePCA, :func:decomposition.dict_learning and :func:decomposition.dict_learning_online where the restart of unused atoms during the dictionary update was not working as expected. :pr:19198 by :user:Jérémie du Boisberranger <jeremiedbb>.

  • |API| In :class:decomposition.DictionaryLearning, :class:decomposition.MiniBatchDictionaryLearning, :func:decomposition.dict_learning and :func:decomposition.dict_learning_online, transform_alpha will be equal to alpha instead of 1.0 by default starting from version 1.2 :pr:19159 by :user:Benoît Malézieux <bmalezieux>.

  • |API| Rename variable names in :class:decomposition.KernelPCA to improve readability. lambdas_ and alphas_ are renamed to eigenvalues_ and eigenvectors_, respectively. lambdas_ and alphas_ are deprecated and will be removed in 1.2. :pr:19908 by :user:Kei Ishikawa <kstoneriv3>.

  • |API| The alpha and regularization parameters of :class:decomposition.NMF and :func:decomposition.non_negative_factorization are deprecated and will be removed in 1.2. Use the new parameters alpha_W and alpha_H instead. :pr:20512 by :user:Jérémie du Boisberranger <jeremiedbb>.

:mod:sklearn.dummy ....................

  • |API| Attribute n_features_in_ in :class:dummy.DummyRegressor and :class:dummy.DummyRegressor is deprecated and will be removed in 1.2. :pr:20960 by Thomas Fan_.

:mod:sklearn.ensemble .......................

  • |Enhancement| :class:~sklearn.ensemble.HistGradientBoostingClassifier and :class:~sklearn.ensemble.HistGradientBoostingRegressor take cgroups quotas into account when deciding the number of threads used by OpenMP. This avoids performance problems caused by over-subscription when using those classes in a docker container for instance. :pr:20477 by Thomas Fan_.

  • |Enhancement| :class:~sklearn.ensemble.HistGradientBoostingClassifier and :class:~sklearn.ensemble.HistGradientBoostingRegressor are no longer experimental. They are now considered stable and are subject to the same deprecation cycles as all other estimators. :pr:19799 by Nicolas Hug_.

  • |Enhancement| Improve the HTML rendering of the :class:ensemble.StackingClassifier and :class:ensemble.StackingRegressor. :pr:19564 by Thomas Fan_.

  • |Enhancement| Added Poisson criterion to :class:ensemble.RandomForestRegressor. :pr:19836 by :user:Brian Sun <bsun94>.

  • |Fix| Do not allow to compute out-of-bag (OOB) score in :class:ensemble.RandomForestClassifier and :class:ensemble.ExtraTreesClassifier with multiclass-multioutput target since scikit-learn does not provide any metric supporting this type of target. Additional private refactoring was performed. :pr:19162 by :user:Guillaume Lemaitre <glemaitre>.

  • |Fix| Improve numerical precision for weights boosting in :class:ensemble.AdaBoostClassifier and :class:ensemble.AdaBoostRegressor to avoid underflows. :pr:10096 by :user:Fenil Suchak <fenilsuchak>.

  • |Fix| Fixed the range of the argument max_samples to be (0.0, 1.0] in :class:ensemble.RandomForestClassifier, :class:ensemble.RandomForestRegressor, where max_samples=1.0 is interpreted as using all n_samples for bootstrapping. :pr:20159 by :user:murata-yu.

  • |Fix| Fixed a bug in :class:ensemble.AdaBoostClassifier and :class:ensemble.AdaBoostRegressor where the sample_weight parameter got overwritten during fit. :pr:20534 by :user:Guillaume Lemaitre <glemaitre>.

  • |API| Removes tol=None option in :class:ensemble.HistGradientBoostingClassifier and :class:ensemble.HistGradientBoostingRegressor. Please use tol=0 for the same behavior. :pr:19296 by Thomas Fan_.

:mod:sklearn.feature_extraction .................................

  • |Fix| Fixed a bug in :class:feature_extraction.text.HashingVectorizer where some input strings would result in negative indices in the transformed data. :pr:19035 by :user:Liu Yu <ly648499246>.

  • |Fix| Fixed a bug in :class:feature_extraction.DictVectorizer by raising an error with unsupported value type. :pr:19520 by :user:Jeff Zhao <kamiyaa>.

  • |Fix| Fixed a bug in :func:feature_extraction.image.img_to_graph and :func:feature_extraction.image.grid_to_graph where singleton connected components were not handled properly, resulting in a wrong vertex indexing. :pr:18964 by Bertrand Thirion_.

  • |Fix| Raise a warning in :class:feature_extraction.text.CountVectorizer with lowercase=True when there are vocabulary entries with uppercase characters to avoid silent misses in the resulting feature vectors. :pr:19401 by :user:Zito Relova <zitorelova>

:mod:sklearn.feature_selection ................................

  • |Feature| :func:feature_selection.r_regression computes Pearson's R correlation coefficients between the features and the target. :pr:17169 by :user:Dmytro Lituiev <DSLituiev> and :user:Julien Jerphanion <jjerphan>.

  • |Enhancement| :func:feature_selection.RFE.fit accepts additional estimator parameters that are passed directly to the estimator's fit method. :pr:20380 by :user:Iván Pulido <ijpulidos>, :user:Felipe Bidu <fbidu>, :user:Gil Rutter <g-rutter>, and :user:Adrin Jalali <adrinjalali>.

  • |FIX| Fix a bug in :func:isotonic.isotonic_regression where the sample_weight passed by a user were overwritten during fit. :pr:20515 by :user:Carsten Allefeld <allefeld>.

  • |Fix| Change :func:feature_selection.SequentialFeatureSelector to allow for unsupervised modelling so that the fit signature need not do any y validation and allow for y=None. :pr:19568 by :user:Shyam Desai <ShyamDesai>.

  • |API| Raises an error in :class:feature_selection.VarianceThreshold when the variance threshold is negative. :pr:20207 by :user:Tomohiro Endo <europeanplaice>

  • |API| Deprecates grid_scores_ in favor of split scores in cv_results_ in :class:feature_selection.RFECV. grid_scores_ will be removed in version 1.2. :pr:20161 by :user:Shuhei Kayawari <wowry> and :user:arka204.

:mod:sklearn.inspection .........................

  • |Enhancement| Add max_samples parameter in :func:inspection.permutation_importance. It enables to draw a subset of the samples to compute the permutation importance. This is useful to keep the method tractable when evaluating feature importance on large datasets. :pr:20431 by :user:Oliver Pfaffel <o1iv3r>.

  • |Enhancement| Add kwargs to format ICE and PD lines separately in partial dependence plots inspection.plot_partial_dependence and :meth:inspection.PartialDependenceDisplay.plot. :pr:19428 by :user:Mehdi Hamoumi <mhham>.

  • |Fix| Allow multiple scorers input to :func:inspection.permutation_importance. :pr:19411 by :user:Simona Maggio <simonamaggio>.

  • |API| :class:inspection.PartialDependenceDisplay exposes a class method: :func:~inspection.PartialDependenceDisplay.from_estimator. inspection.plot_partial_dependence is deprecated in favor of the class method and will be removed in 1.2. :pr:20959 by Thomas Fan_.

:mod:sklearn.kernel_approximation ...................................

  • |Fix| Fix a bug in :class:kernel_approximation.Nystroem where the attribute component_indices_ did not correspond to the subset of sample indices used to generate the approximated kernel. :pr:20554 by :user:Xiangyin Kong <kxytim>.

:mod:sklearn.linear_model ...........................

  • |MajorFeature| Added :class:linear_model.QuantileRegressor which implements linear quantile regression with L1 penalty. :pr:9978 by :user:David Dale <avidale> and :user:Christian Lorentzen <lorentzenchr>.

  • |Feature| The new :class:linear_model.SGDOneClassSVM provides an SGD implementation of the linear One-Class SVM. Combined with kernel approximation techniques, this implementation approximates the solution of a kernelized One Class SVM while benefiting from a linear complexity in the number of samples. :pr:10027 by :user:Albert Thomas <albertcthomas>.

  • |Feature| Added sample_weight parameter to :class:linear_model.LassoCV and :class:linear_model.ElasticNetCV. :pr:16449 by :user:Christian Lorentzen <lorentzenchr>.

  • |Feature| Added new solver lbfgs (available with solver="lbfgs") and positive argument to :class:linear_model.Ridge. When positive is set to True, forces the coefficients to be positive (only supported by lbfgs). :pr:20231 by :user:Toshihiro Nakae <tnakae>.

  • |Efficiency| The implementation of :class:linear_model.LogisticRegression has been optimised for dense matrices when using solver='newton-cg' and multi_class!='multinomial'. :pr:19571 by :user:Julien Jerphanion <jjerphan>.

  • |Enhancement| fit method preserves dtype for numpy.float32 in :class:linear_model.Lars, :class:linear_model.LassoLars, :class:linear_model.LassoLars, :class:linear_model.LarsCV and :class:linear_model.LassoLarsCV. :pr:20155 by :user:Takeshi Oura <takoika>.

  • |Enhancement| Validate user-supplied gram matrix passed to linear models via the precompute argument. :pr:19004 by :user:Adam Midvidy <amidvidy>.

  • |Fix| :meth:linear_model.ElasticNet.fit no longer modifies sample_weight in place. :pr:19055 by Thomas Fan_.

  • |Fix| :class:linear_model.Lasso and :class:linear_model.ElasticNet no longer have a dual_gap_ not corresponding to their objective. :pr:19172 by :user:Mathurin Massias <mathurinm>

  • |Fix| sample_weight are now fully taken into account in linear models when normalize=True for both feature centering and feature scaling. :pr:19426 by :user:Alexandre Gramfort <agramfort> and :user:Maria Telenczuk <maikia>.

  • |Fix| Points with residuals equal to residual_threshold are now considered as inliers for :class:linear_model.RANSACRegressor. This allows fitting a model perfectly on some datasets when residual_threshold=0. :pr:19499 by :user:Gregory Strubel <gregorystrubel>.

  • |Fix| Sample weight invariance for :class:linear_model.Ridge was fixed in :pr:19616 by :user:Oliver Grisel <ogrisel> and :user:Christian Lorentzen <lorentzenchr>.

  • |Fix| The dictionary params in :func:linear_model.enet_path and :func:linear_model.lasso_path should only contain parameter of the coordinate descent solver. Otherwise, an error will be raised. :pr:19391 by :user:Shao Yang Hong <hongshaoyang>.

  • |API| Raise a warning in :class:linear_model.RANSACRegressor that from version 1.2, min_samples need to be set explicitly for models other than :class:linear_model.LinearRegression. :pr:19390 by :user:Shao Yang Hong <hongshaoyang>.

  • |API|: The parameter normalize of :class:linear_model.LinearRegression is deprecated and will be removed in 1.2. Motivation for this deprecation: normalize parameter did not take any effect if fit_intercept was set to False and therefore was deemed confusing. The behavior of the deprecated LinearModel(normalize=True) can be reproduced with a :class:~sklearn.pipeline.Pipeline with LinearModel (where LinearModel is :class:~linear_model.LinearRegression, :class:~linear_model.Ridge, :class:~linear_model.RidgeClassifier, :class:~linear_model.RidgeCV or :class:~linear_model.RidgeClassifierCV) as follows: make_pipeline(StandardScaler(with_mean=False), LinearModel()). The normalize parameter in :class:~linear_model.LinearRegression was deprecated in :pr:17743 by :user:Maria Telenczuk <maikia> and :user:Alexandre Gramfort <agramfort>. Same for :class:~linear_model.Ridge, :class:~linear_model.RidgeClassifier, :class:~linear_model.RidgeCV, and :class:~linear_model.RidgeClassifierCV, in: :pr:17772 by :user:Maria Telenczuk <maikia> and :user:Alexandre Gramfort <agramfort>. Same for :class:~linear_model.BayesianRidge, :class:~linear_model.ARDRegression in: :pr:17746 by :user:Maria Telenczuk <maikia>. Same for :class:~linear_model.Lasso, :class:~linear_model.LassoCV, :class:~linear_model.ElasticNet, :class:~linear_model.ElasticNetCV, :class:~linear_model.MultiTaskLasso, :class:~linear_model.MultiTaskLassoCV, :class:~linear_model.MultiTaskElasticNet, :class:~linear_model.MultiTaskElasticNetCV, in: :pr:17785 by :user:Maria Telenczuk <maikia> and :user:Alexandre Gramfort <agramfort>.

  • |API| The normalize parameter of :class:~linear_model.OrthogonalMatchingPursuit and :class:~linear_model.OrthogonalMatchingPursuitCV will default to False in 1.2 and will be removed in 1.4. :pr:17750 by :user:Maria Telenczuk <maikia> and :user:Alexandre Gramfort <agramfort>. Same for :class:~linear_model.Lars :class:~linear_model.LarsCV :class:~linear_model.LassoLars :class:~linear_model.LassoLarsCV :class:~linear_model.LassoLarsIC, in :pr:17769 by :user:Maria Telenczuk <maikia> and :user:Alexandre Gramfort <agramfort>.

  • |API| Keyword validation has moved from __init__ and set_params to fit for the following estimators conforming to scikit-learn's conventions: :class:~linear_model.SGDClassifier, :class:~linear_model.SGDRegressor, :class:~linear_model.SGDOneClassSVM, :class:~linear_model.PassiveAggressiveClassifier, and :class:~linear_model.PassiveAggressiveRegressor. :pr:20683 by Guillaume Lemaitre_.

:mod:sklearn.manifold .......................

  • |Enhancement| Implement 'auto' heuristic for the learning_rate in :class:manifold.TSNE. It will become default in 1.2. The default initialization will change to pca in 1.2. PCA initialization will be scaled to have standard deviation 1e-4 in 1.2. :pr:19491 by :user:Dmitry Kobak <dkobak>.

  • |Fix| Change numerical precision to prevent underflow issues during affinity matrix computation for :class:manifold.TSNE. :pr:19472 by :user:Dmitry Kobak <dkobak>.

  • |Fix| :class:manifold.Isomap now uses scipy.sparse.csgraph.shortest_path to compute the graph shortest path. It also connects disconnected components of the neighbors graph along some minimum distance pairs, instead of changing every infinite distances to zero. :pr:20531 by Roman Yurchak_ and Tom Dupre la Tour_.

  • |Fix| Decrease the numerical default tolerance in the lobpcg call in :func:manifold.spectral_embedding to prevent numerical instability. :pr:21194 by :user:Andrew Knyazev <lobpcg>.

:mod:sklearn.metrics ......................

  • |Feature| :func:metrics.mean_pinball_loss exposes the pinball loss for quantile regression. :pr:19415 by :user:Xavier Dupré <sdpython> and :user:Oliver Grisel <ogrisel>.

  • |Feature| :func:metrics.d2_tweedie_score calculates the D^2 regression score for Tweedie deviances with power parameter power. This is a generalization of the r2_score and can be interpreted as percentage of Tweedie deviance explained. :pr:17036 by :user:Christian Lorentzen <lorentzenchr>.

  • |Feature| :func:metrics.mean_squared_log_error now supports squared=False. :pr:20326 by :user:Uttam kumar <helper-uttam>.

  • |Efficiency| Improved speed of :func:metrics.confusion_matrix when labels are integral. :pr:9843 by :user:Jon Crall <Erotemic>.

  • |Enhancement| A fix to raise an error in :func:metrics.hinge_loss when pred_decision is 1d whereas it is a multiclass classification or when pred_decision parameter is not consistent with the labels parameter. :pr:19643 by :user:Pierre Attard <PierreAttard>.

  • |Fix| :meth:metrics.ConfusionMatrixDisplay.plot uses the correct max for colormap. :pr:19784 by Thomas Fan_.

  • |Fix| Samples with zero sample_weight values do not affect the results from :func:metrics.det_curve, :func:metrics.precision_recall_curve and :func:metrics.roc_curve. :pr:18328 by :user:Albert Villanova del Moral <albertvillanova> and :user:Alonso Silva Allende <alonsosilvaallende>.

  • |Fix| avoid overflow in :func:metrics.adjusted_rand_score with large amount of data. :pr:20312 by :user:Divyanshu Deoli <divyanshudeoli>.

  • |API| :class:metrics.ConfusionMatrixDisplay exposes two class methods :func:~metrics.ConfusionMatrixDisplay.from_estimator and :func:~metrics.ConfusionMatrixDisplay.from_predictions allowing to create a confusion matrix plot using an estimator or the predictions. metrics.plot_confusion_matrix is deprecated in favor of these two class methods and will be removed in 1.2. :pr:18543 by Guillaume Lemaitre_.

  • |API| :class:metrics.PrecisionRecallDisplay exposes two class methods :func:~metrics.PrecisionRecallDisplay.from_estimator and :func:~metrics.PrecisionRecallDisplay.from_predictions allowing to create a precision-recall curve using an estimator or the predictions. metrics.plot_precision_recall_curve is deprecated in favor of these two class methods and will be removed in 1.2. :pr:20552 by Guillaume Lemaitre_.

  • |API| :class:metrics.DetCurveDisplay exposes two class methods :func:~metrics.DetCurveDisplay.from_estimator and :func:~metrics.DetCurveDisplay.from_predictions allowing to create a confusion matrix plot using an estimator or the predictions. metrics.plot_det_curve is deprecated in favor of these two class methods and will be removed in 1.2. :pr:19278 by Guillaume Lemaitre_.

:mod:sklearn.mixture ......................

  • |Fix| Ensure that the best parameters are set appropriately in the case of divergency for :class:mixture.GaussianMixture and :class:mixture.BayesianGaussianMixture. :pr:20030 by :user:Tingshan Liu <tliu68> and :user:Benjamin Pedigo <bdpedigo>.

:mod:sklearn.model_selection ..............................

  • |Feature| added :class:model_selection.StratifiedGroupKFold, that combines :class:model_selection.StratifiedKFold and :class:model_selection.GroupKFold, providing an ability to split data preserving the distribution of classes in each split while keeping each group within a single split. :pr:18649 by :user:Leandro Hermida <hermidalc> and :user:Rodion Martynov <marrodion>.

  • |Enhancement| warn only once in the main process for per-split fit failures in cross-validation. :pr:20619 by :user:Loïc Estève <lesteve>

  • |Enhancement| The model_selection.BaseShuffleSplit base class is now public. :pr:20056 by :user:pabloduque0.

  • |Fix| Avoid premature overflow in :func:model_selection.train_test_split. :pr:20904 by :user:Tomasz Jakubek <t-jakubek>.

:mod:sklearn.naive_bayes ..........................

  • |Fix| The fit and partial_fit methods of the discrete naive Bayes classifiers (:class:naive_bayes.BernoulliNB, :class:naive_bayes.CategoricalNB, :class:naive_bayes.ComplementNB, and :class:naive_bayes.MultinomialNB) now correctly handle the degenerate case of a single class in the training set. :pr:18925 by :user:David Poznik <dpoznik>.

  • |API| The attribute sigma_ is now deprecated in :class:naive_bayes.GaussianNB and will be removed in 1.2. Use var_ instead. :pr:18842 by :user:Hong Shao Yang <hongshaoyang>.

:mod:sklearn.neighbors ........................

  • |Enhancement| The creation of :class:neighbors.KDTree and :class:neighbors.BallTree has been improved for their worst-cases time complexity from :math:\mathcal{O}(n^2) to :math:\mathcal{O}(n). :pr:19473 by :user:jiefangxuanyan <jiefangxuanyan> and :user:Julien Jerphanion <jjerphan>.

  • |FIX| neighbors.DistanceMetric subclasses now support readonly memory-mapped datasets. :pr:19883 by :user:Julien Jerphanion <jjerphan>.

  • |FIX| :class:neighbors.NearestNeighbors, :class:neighbors.KNeighborsClassifier, :class:neighbors.RadiusNeighborsClassifier, :class:neighbors.KNeighborsRegressor and :class:neighbors.RadiusNeighborsRegressor do not validate weights in __init__ and validate weights in fit instead. :pr:20072 by :user:Juan Carlos Alfaro Jiménez <alfaro96>.

  • |API| The parameter kwargs of :class:neighbors.RadiusNeighborsClassifier is deprecated and will be removed in 1.2. :pr:20842 by :user:Juan Martín Loyola <jmloyola>.

:mod:sklearn.neural_network .............................

  • |Fix| :class:neural_network.MLPClassifier and :class:neural_network.MLPRegressor now correctly support continued training when loading from a pickled file. :pr:19631 by Thomas Fan_.

:mod:sklearn.pipeline .......................

  • |API| The predict_proba and predict_log_proba methods of the :class:pipeline.Pipeline now support passing prediction kwargs to the final estimator. :pr:19790 by :user:Christopher Flynn <crflynn>.

:mod:sklearn.preprocessing ............................

  • |Feature| The new :class:preprocessing.SplineTransformer is a feature preprocessing tool for the generation of B-splines, parametrized by the polynomial degree of the splines, number of knots n_knots and knot positioning strategy knots. :pr:18368 by :user:Christian Lorentzen <lorentzenchr>. :class:preprocessing.SplineTransformer also supports periodic splines via the extrapolation argument. :pr:19483 by :user:Malte Londschien <mlondschien>. :class:preprocessing.SplineTransformer supports sample weights for knot position strategy "quantile". :pr:20526 by :user:Malte Londschien <mlondschien>.

  • |Feature| :class:preprocessing.OrdinalEncoder supports passing through missing values by default. :pr:19069 by Thomas Fan_.

  • |Feature| :class:preprocessing.OneHotEncoder now supports handle_unknown='ignore' and dropping categories. :pr:19041 by Thomas Fan_.

  • |Feature| :class:preprocessing.PolynomialFeatures now supports passing a tuple to degree, i.e. degree=(min_degree, max_degree). :pr:20250 by :user:Christian Lorentzen <lorentzenchr>.

  • |Efficiency| :class:preprocessing.StandardScaler is faster and more memory efficient. :pr:20652 by Thomas Fan_.

  • |Efficiency| Changed algorithm argument for :class:cluster.KMeans in :class:preprocessing.KBinsDiscretizer from auto to full. :pr:19934 by :user:Hleb Levitski <glevv>.

  • |Efficiency| The implementation of fit for :class:preprocessing.PolynomialFeatures transformer is now faster. This is especially noticeable on large sparse input. :pr:19734 by :user:Fred Robinson <frrad>.

  • |Fix| The :func:preprocessing.StandardScaler.inverse_transform method now raises error when the input data is 1D. :pr:19752 by :user:Zhehao Liu <Max1993Liu>.

  • |Fix| :func:preprocessing.scale, :class:preprocessing.StandardScaler and similar scalers detect near-constant features to avoid scaling them to very large values. This problem happens in particular when using a scaler on sparse data with a constant column with sample weights, in which case centering is typically disabled. :pr:19527 by :user:Oliver Grisel <ogrisel> and :user:Maria Telenczuk <maikia> and :pr:19788 by :user:Jérémie du Boisberranger <jeremiedbb>.

  • |Fix| :meth:preprocessing.StandardScaler.inverse_transform now correctly handles integer dtypes. :pr:19356 by :user:makoeppel.

  • |Fix| :meth:preprocessing.OrdinalEncoder.inverse_transform is not supporting sparse matrix and raises the appropriate error message. :pr:19879 by :user:Guillaume Lemaitre <glemaitre>.

  • |Fix| The fit method of :class:preprocessing.OrdinalEncoder will not raise error when handle_unknown='ignore' and unknown categories are given to fit. :pr:19906 by :user:Zhehao Liu <MaxwellLZH>.

  • |Fix| Fix a regression in :class:preprocessing.OrdinalEncoder where large Python numeric would raise an error due to overflow when casted to C type (np.float64 or np.int64). :pr:20727 by Guillaume Lemaitre_.

  • |Fix| :class:preprocessing.FunctionTransformer does not set n_features_in_ based on the input to inverse_transform. :pr:20961 by Thomas Fan_.

  • |API| The n_input_features_ attribute of :class:preprocessing.PolynomialFeatures is deprecated in favor of n_features_in_ and will be removed in 1.2. :pr:20240 by :user:Jérémie du Boisberranger <jeremiedbb>.

:mod:sklearn.svm ...................

  • |API| The parameter **params of :func:svm.OneClassSVM.fit is deprecated and will be removed in 1.2. :pr:20843 by :user:Juan Martín Loyola <jmloyola>.

:mod:sklearn.tree ...................

  • |Enhancement| Add fontname argument in :func:tree.export_graphviz for non-English characters. :pr:18959 by :user:Zero <Zeroto521> and :user:wstates <wstates>.

  • |Fix| Improves compatibility of :func:tree.plot_tree with high DPI screens. :pr:20023 by Thomas Fan_.

  • |Fix| Fixed a bug in :class:tree.DecisionTreeClassifier, :class:tree.DecisionTreeRegressor where a node could be split whereas it should not have been due to incorrect handling of rounding errors. :pr:19336 by :user:Jérémie du Boisberranger <jeremiedbb>.

  • |API| The n_features_ attribute of :class:tree.DecisionTreeClassifier, :class:tree.DecisionTreeRegressor, :class:tree.ExtraTreeClassifier and :class:tree.ExtraTreeRegressor is deprecated in favor of n_features_in_ and will be removed in 1.2. :pr:20272 by :user:Jérémie du Boisberranger <jeremiedbb>.

:mod:sklearn.utils ....................

  • |Enhancement| Deprecated the default value of the random_state=0 in :func:~sklearn.utils.extmath.randomized_svd. Starting in 1.2, the default value of random_state will be set to None. :pr:19459 by :user:Cindy Bezuidenhout <cinbez> and :user:Clifford Akai-Nettey<cliffordEmmanuel>.

  • |Enhancement| Added helper decorator :func:utils.metaestimators.available_if to provide flexibility in metaestimators making methods available or unavailable on the basis of state, in a more readable way. :pr:19948 by Joel Nothman_.

  • |Enhancement| :func:utils.validation.check_is_fitted now uses __sklearn_is_fitted__ if available, instead of checking for attributes ending with an underscore. This also makes :class:pipeline.Pipeline and :class:preprocessing.FunctionTransformer pass check_is_fitted(estimator). :pr:20657 by Adrin Jalali_.

  • |Fix| Fixed a bug in :func:utils.sparsefuncs.mean_variance_axis where the precision of the computed variance was very poor when the real variance is exactly zero. :pr:19766 by :user:Jérémie du Boisberranger <jeremiedbb>.

  • |Fix| The docstrings of properties that are decorated with :func:utils.deprecated are now properly wrapped. :pr:20385 by Thomas Fan_.

  • |Fix| utils.stats._weighted_percentile now correctly ignores zero-weighted observations smaller than the smallest observation with positive weight for percentile=0. Affected classes are :class:dummy.DummyRegressor for quantile=0 and ensemble.HuberLossFunction and ensemble.HuberLossFunction for alpha=0. :pr:20528 by :user:Malte Londschien <mlondschien>.

  • |Fix| :func:utils._safe_indexing explicitly takes a dataframe copy when integer indices are provided avoiding to raise a warning from Pandas. This warning was previously raised in resampling utilities and functions using those utilities (e.g. :func:model_selection.train_test_split, :func:model_selection.cross_validate, :func:model_selection.cross_val_score, :func:model_selection.cross_val_predict). :pr:20673 by :user:Joris Van den Bossche <jorisvandenbossche>.

  • |Fix| Fix a regression in utils.is_scalar_nan where large Python numbers would raise an error due to overflow in C types (np.float64 or np.int64). :pr:20727 by Guillaume Lemaitre_.

  • |Fix| Support for np.matrix is deprecated in :func:~sklearn.utils.check_array in 1.0 and will raise a TypeError in 1.2. :pr:20165 by Thomas Fan_.

  • |API| utils._testing.assert_warns and utils._testing.assert_warns_message are deprecated in 1.0 and will be removed in 1.2. Used pytest.warns context manager instead. Note that these functions were not documented and part from the public API. :pr:20521 by :user:Olivier Grisel <ogrisel>.

  • |API| Fixed several bugs in utils.graph.graph_shortest_path, which is now deprecated. Use scipy.sparse.csgraph.shortest_path instead. :pr:20531 by Tom Dupre la Tour_.

.. rubric:: Code and documentation contributors

Thanks to everyone who has contributed to the maintenance and improvement of the project since version 0.24, including:

Abdulelah S. Al Mesfer, Abhinav Gupta, Adam J. Stewart, Adam Li, Adam Midvidy, Adrian Garcia Badaracco, Adrian Sadłocha, Adrin Jalali, Agamemnon Krasoulis, Alberto Rubiales, Albert Thomas, Albert Villanova del Moral, Alek Lefebvre, Alessia Marcolini, Alexandr Fonari, Alihan Zihna, Aline Ribeiro de Almeida, Amanda, Amanda Dsouza, Amol Deshmukh, Ana Pessoa, Anavelyz, Andreas Mueller, Andrew Delong, Ashish, Ashvith Shetty, Atsushi Nukariya, Aurélien Geron, Avi Gupta, Ayush Singh, baam, BaptBillard, Benjamin Pedigo, Bertrand Thirion, Bharat Raghunathan, bmalezieux, Brian Rice, Brian Sun, Bruno Charron, Bryan Chen, bumblebee, caherrera-meli, Carsten Allefeld, CeeThinwa, Chiara Marmo, chrissobel, Christian Lorentzen, Christopher Yeh, Chuliang Xiao, Clément Fauchereau, cliffordEmmanuel, Conner Shen, Connor Tann, David Dale, David Katz, David Poznik, Dimitri Papadopoulos Orfanos, Divyanshu Deoli, dmallia17, Dmitry Kobak, DS_anas, Eduardo Jardim, EdwinWenink, EL-ATEIF Sara, Eleni Markou, EricEllwanger, Eric Fiegel, Erich Schubert, Ezri-Mudde, Fatos Morina, Felipe Rodrigues, Felix Hafner, Fenil Suchak, flyingdutchman23, Flynn, Fortune Uwha, Francois Berenger, Frankie Robertson, Frans Larsson, Frederick Robinson, frellwan, Gabriel S Vicente, Gael Varoquaux, genvalen, Geoffrey Thomas, geroldcsendes, Hleb Levitski, Glen, Glòria Macià Muñoz, gregorystrubel, groceryheist, Guillaume Lemaitre, guiweber, Haidar Almubarak, Hans Moritz Günther, Haoyin Xu, Harris Mirza, Harry Wei, Harutaka Kawamura, Hassan Alsawadi, Helder Geovane Gomes de Lima, Hugo DEFOIS, Igor Ilic, Ikko Ashimine, Isaack Mungui, Ishaan Bhat, Ishan Mishra, Iván Pulido, iwhalvic, J Alexander, Jack Liu, James Alan Preiss, James Budarz, James Lamb, Jannik, Jeff Zhao, Jennifer Maldonado, Jérémie du Boisberranger, Jesse Lima, Jianzhu Guo, jnboehm, Joel Nothman, JohanWork, John Paton, Jonathan Schneider, Jon Crall, Jon Haitz Legarreta Gorroño, Joris Van den Bossche, José Manuel Nápoles Duarte, Juan Carlos Alfaro Jiménez, Juan Martin Loyola, Julien Jerphanion, Julio Batista Silva, julyrashchenko, JVM, Kadatatlu Kishore, Karen Palacio, Kei Ishikawa, kmatt10, kobaski, Kot271828, Kunj, KurumeYuta, kxytim, lacrosse91, LalliAcqua, Laveen Bagai, Leonardo Rocco, Leonardo Uieda, Leopoldo Corona, Loic Esteve, LSturtew, Luca Bittarello, Luccas Quadros, Lucy Jiménez, Lucy Liu, ly648499246, Mabu Manaileng, Manimaran, makoeppel, Marco Gorelli, Maren Westermann, Mariangela, Maria Telenczuk, marielaraj, Martin Hirzel, Mateo Noreña, Mathieu Blondel, Mathis Batoul, mathurinm, Matthew Calcote, Maxime Prieur, Maxwell, Mehdi Hamoumi, Mehmet Ali Özer, Miao Cai, Michal Karbownik, michalkrawczyk, Mitzi, mlondschien, Mohamed Haseeb, Mohamed Khoualed, Muhammad Jarir Kanji, murata-yu, Nadim Kawwa, Nanshan Li, naozin555, Nate Parsons, Neal Fultz, Nic Annau, Nicolas Hug, Nicolas Miller, Nico Stefani, Nigel Bosch, Nikita Titov, Nodar Okroshiashvili, Norbert Preining, novaya, Ogbonna Chibuike Stephen, OGordon100, Oliver Pfaffel, Olivier Grisel, Oras Phongpanangam, Pablo Duque, Pablo Ibieta-Jimenez, Patric Lacouth, Paulo S. Costa, Paweł Olszewski, Peter Dye, PierreAttard, Pierre-Yves Le Borgne, PranayAnchuri, Prince Canuma, putschblos, qdeffense, RamyaNP, ranjanikrishnan, Ray Bell, Rene Jean Corneille, Reshama Shaikh, ricardojnf, RichardScottOZ, Rodion Martynov, Rohan Paul, Roman Lutz, Roman Yurchak, Samuel Brice, Sandy Khosasi, Sean Benhur J, Sebastian Flores, Sebastian Pölsterl, Shao Yang Hong, shinehide, shinnar, shivamgargsya, Shooter23, Shuhei Kayawari, Shyam Desai, simonamaggio, Sina Tootoonian, solosilence, Steven Kolawole, Steve Stagg, Surya Prakash, swpease, Sylvain Marié, Takeshi Oura, Terence Honles, TFiFiE, Thomas A Caswell, Thomas J. Fan, Tim Gates, TimotheeMathieu, Timothy Wolodzko, Tim Vink, t-jakubek, t-kusanagi, tliu68, Tobias Uhmann, tom1092, Tomás Moreyra, Tomás Ronald Hughes, Tom Dupré la Tour, Tommaso Di Noto, Tomohiro Endo, TONY GEORGE, Toshihiro NAKAE, tsuga, Uttam kumar, vadim-ushtanit, Vangelis Gkiastas, Venkatachalam N, Vilém Zouhar, Vinicius Rios Fuck, Vlasovets, waijean, Whidou, xavier dupré, xiaoyuchai, Yasmeen Alsaedy, yoch, Yosuke KOBAYASHI, Yu Feng, YusukeNagasaka, yzhenman, Zero, ZeyuSun, ZhaoweiWang, Zito, Zito Relova