scikit-learn About us This project was started in 2007 as a Google Summer of Code project by about History

Answer:
.. _about:

========
About us
========

History
=======

This project was started in 2007 as a Google Summer of Code project by
David Cournapeau. Later that year, Matthieu Brucher started working on this project
as part of his thesis.

In 2010 Fabian Pedregosa, Gael Varoquaux, Alexandre Gramfort and Vincent
Michel of INRIA took leadership of the project and made the first public
release, February the 1st 2010. Since then, several releases have appeared
following an approximately 3-month cycle, and a thriving international
community has been leading the development. As a result, INRIA holds the
copyright over the work done by people who were employed by INRIA at the
time of the contribution.

Governance
==========

The decision making process and governance structure of scikit-learn, like roles and responsibilities, is laid out in the :ref:`governance document <governance>`.

.. The "author" anchors below is there to ensure that old html links (in
   the form of "about.html#author" still work)

.. _authors:

The people behind scikit-learn
==============================

Scikit-learn is a community project, developed by a large group of
people, all across the world. A few core contributor teams, listed below, have
central roles, however a more complete list of contributors can be found `on
github
<https://github.com/scikit-learn/scikit-learn/graphs/contributors>`__.

Active Core Contributors
------------------------

Maintainers Team
................

The following people are currently maintainers, in charge of
consolidating scikit-learn's development and maintenance:

.. include:: maintainers.rst

.. note::

  Please do not email the authors directly to ask for assistance or report issues.
  Instead, please see `What's the best way to ask questions about scikit-learn
  <https://scikit-learn.org/stable/faq.html#what-s-the-best-way-to-get-help-on-scikit-learn-usage>`_
  in the FAQ.

.. seealso::

  How you can :ref:`contribute to the project <contributing>`.

Documentation Team
..................

The following people help with documenting the project:

.. include:: documentation_team.rst

Contributor Experience Team
...........................

The following people are active contributors who also help with
:ref:`triaging issues <bug_triaging>`, PRs, and general
maintenance:

.. include:: contributor_experience_team.rst

Communication Team
..................

The following people help with :ref:`communication around scikit-learn
<communication_team>`.

.. include:: communication_team.rst

Emeritus Core Contributors
--------------------------

Emeritus Maintainers Team
.........................

The following people have been active contributors in the past, but are no
longer active in the project:

.. include:: maintainers_emeritus.rst

Emeritus Communication Team
...........................

The following people have been active in the communication team in the
past, but no longer have communication responsibilities:

.. include:: communication_team_emeritus.rst

Emeritus Contributor Experience Team
....................................

The following people have been active in the contributor experience team in the
past:

.. include:: contributor_experience_team_emeritus.rst

.. _citing-scikit-learn:

Citing scikit-learn
===================

If you use scikit-learn in a scientific publication, we would appreciate
citations to the following paper:

`Scikit-learn: Machine Learning in Python
<https://jmlr.csail.mit.edu/papers/v12/pedregosa11a.html>`_, Pedregosa
*et al.*, JMLR 12, pp. 2825-2830, 2011.

Bibtex entry::

  @article{scikit-learn,
    title={Scikit-learn: Machine Learning in {P}ython},
    author={Pedregosa, F. and Varoquaux, G. and Gramfort, A. and Michel, V.
            and Thirion, B. and Grisel, O. and Blondel, M. and Prettenhofer, P.
            and Weiss, R. and Dubourg, V. and Vanderplas, J. and Passos, A. and
            Cournapeau, D. and Brucher, M. and Perrot, M. and Duchesnay, E.},
    journal={Journal of Machine Learning Research},
    volume={12},
    pages={2825--2830},
    year={2011}
  }

If you want to cite scikit-learn for its API or design, you may also want to consider the
following paper:

:arxiv:`API design for machine learning software: experiences from the scikit-learn
project <1309.0238>`, Buitinck *et al.*, 2013.

Bibtex entry::

  @inproceedings{sklearn_api,
    author    = {Lars Buitinck and Gilles Louppe and Mathieu Blondel and
                  Fabian Pedregosa and Andreas Mueller and Olivier Grisel and
                  Vlad Niculae and Peter Prettenhofer and Alexandre Gramfort
                  and Jaques Grobler and Robert Layton and Jake VanderPlas and
                  Arnaud Joly and Brian Holt and Ga{\"{e}}l Varoquaux},
    title     = {{API} design for machine learning software: experiences from the scikit-learn
                  project},
    booktitle = {ECML PKDD Workshop: Languages for Data Mining and Machine Learning},
    year      = {2013},
    pages = {108--122},
  }

Artwork
=======

High quality PNG and SVG logos are available in the `doc/logos/
<https://github.com/scikit-learn/scikit-learn/tree/main/doc/logos>`_
source directory.

.. image:: images/scikit-learn-logo-notext.png
  :align: center

Funding
=======

Scikit-learn is a community driven project, however institutional and private
grants help to assure its sustainability.

The project would like to thank the following funders.

...................................

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `:probabl. <https://probabl.ai>`_ employs Adrin Jalali, Arturo Amor,
    François Goupil, Guillaume Lemaitre, Jérémie du Boisberranger, Loïc Estève,
    Olivier Grisel, and Stefanie Senger.

  .. div:: image-box

    .. image:: images/probabl.png
      :target: https://probabl.ai

..........

.. |chanel| image:: images/chanel.png
  :target: https://www.chanel.com

.. |axa| image:: images/axa.png
  :target: https://www.axa.fr/

.. |bnp| image:: images/bnp.png
  :target: https://www.bnpparibascardif.com/

.. |dataiku| image:: images/dataiku.png
  :target: https://www.dataiku.com/

.. |nvidia| image:: images/nvidia.png
  :target: https://www.nvidia.com

.. |inria| image:: images/inria-logo.jpg
  :target: https://www.inria.fr

.. raw:: html

.. div:: sk-text-image-grid-small

  .. div:: text-box

    The `Members <https://scikit-learn.fondation-inria.fr/en/home/#sponsors>`_ of
    the `Scikit-learn Consortium at Inria Foundation
    <https://scikit-learn.fondation-inria.fr/en/home/>`_ help at maintaining and
    improving the project through their financial support.

  .. div:: image-box

    .. table::
      :class: image-subtable

      +----------+-----------+
      |       |chanel|       |
      +----------+-----------+
      |  |axa|   |    |bnp|  |
      +----------+-----------+
      |       |nvidia|       |
      +----------+-----------+
      |       |dataiku|      |
      +----------+-----------+
      |        |inria|       |
      +----------+-----------+

..........

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `NVidia <https://nvidia.com>`_ funds Tim Head since 2022
    and is part of the scikit-learn consortium at Inria.

  .. div:: image-box

    .. image:: images/nvidia.png
      :target: https://nvidia.com

..........

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `Microsoft <https://microsoft.com/>`_ funds Andreas Müller since 2020.

  .. div:: image-box

    .. image:: images/microsoft.png
      :target: https://microsoft.com

...........

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `Quansight Labs <https://labs.quansight.org>`_ funds Lucy Liu since 2022.

  .. div:: image-box

    .. image:: images/quansight-labs.png
      :target: https://labs.quansight.org

...........

.. |czi| image:: images/czi.png
  :target: https://chanzuckerberg.com

.. |wellcome| image:: images/wellcome-trust.png
  :target: https://wellcome.org/

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `The Chan-Zuckerberg Initiative <https://chanzuckerberg.com/>`_ and
    `Wellcome Trust <https://wellcome.org/>`_ fund scikit-learn through the
    `Essential Open Source Software for Science (EOSS) <https://chanzuckerberg.com/eoss/>`_
    cycle 6.

    It supports Lucy Liu and diversity & inclusion initiatives that will
    be announced in the future.

  .. div:: image-box

    .. table::
      :class: image-subtable

      +----------+----------------+
      |  |czi|   |    |wellcome|  |
      +----------+----------------+

...........

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `Tidelift <https://tidelift.com/>`_ supports the project via their service
    agreement.

  .. div:: image-box

    .. image:: images/Tidelift-logo-on-light.svg
      :target: https://tidelift.com/

...........

Past Sponsors
-------------

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `Quansight Labs <https://labs.quansight.org>`_ funded Meekail Zain in 2022 and 2023,
    and funded Thomas J. Fan from 2021 to 2023.

  .. div:: image-box

    .. image:: images/quansight-labs.png
      :target: https://labs.quansight.org

...........

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `Columbia University <https://columbia.edu/>`_ funded Andreas Müller
    (2016-2020).

  .. div:: image-box

    .. image:: images/columbia.png
      :target: https://columbia.edu

........

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `The University of Sydney <https://sydney.edu.au/>`_ funded Joel Nothman
    (2017-2021).

  .. div:: image-box

    .. image:: images/sydney-primary.jpeg
      :target: https://sydney.edu.au/

...........

.. div:: sk-text-image-grid-small

  .. div:: text-box

    Andreas Müller received a grant to improve scikit-learn from the
    `Alfred P. Sloan Foundation <https://sloan.org>`_ .
    This grant supported the position of Nicolas Hug and Thomas J. Fan.

  .. div:: image-box

    .. image:: images/sloan_banner.png
      :target: https://sloan.org/

.............

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `INRIA <https://www.inria.fr>`_ actively supports this project. It has
    provided funding for Fabian Pedregosa (2010-2012), Jaques Grobler
    (2012-2013) and Olivier Grisel (2013-2017) to work on this project
    full-time. It also hosts coding sprints and other events.

  .. div:: image-box

    .. image:: images/inria-logo.jpg
      :target: https://www.inria.fr

.....................

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `Paris-Saclay Center for Data Science <http://www.datascience-paris-saclay.fr/>`_
    funded one year for a developer to work on the project full-time (2014-2015), 50%
    of the time of Guillaume Lemaitre (2016-2017) and 50% of the time of Joris van den
    Bossche (2017-2018).

  .. div:: image-box

    .. image:: images/cds-logo.png
      :target: http://www.datascience-paris-saclay.fr/

..........................

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `NYU Moore-Sloan Data Science Environment <https://cds.nyu.edu/mooresloan/>`_
    funded Andreas Mueller (2014-2016) to work on this project. The Moore-Sloan
    Data Science Environment also funds several students to work on the project
    part-time.

  .. div:: image-box

    .. image:: images/nyu_short_color.png
      :target: https://cds.nyu.edu/mooresloan/

........................

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `Télécom Paristech <https://www.telecom-paristech.fr/>`_ funded Manoj Kumar
    (2014), Tom Dupré la Tour (2015), Raghav RV (2015-2017), Thierry Guillemot
    (2016-2017) and Albert Thomas (2017) to work on scikit-learn.

  .. div:: image-box

    .. image:: images/telecom.png
      :target: https://www.telecom-paristech.fr/

.....................

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `The Labex DigiCosme <https://digicosme.lri.fr>`_ funded Nicolas Goix
    (2015-2016), Tom Dupré la Tour (2015-2016 and 2017-2018), Mathurin Massias
    (2018-2019) to work part time on scikit-learn during their PhDs. It also
    funded a scikit-learn coding sprint in 2015.

  .. div:: image-box

    .. image:: images/digicosme.png
      :target: https://digicosme.lri.fr

.....................

.. div:: sk-text-image-grid-small

  .. div:: text-box

    `The Chan-Zuckerberg Initiative <https://chanzuckerberg.com/>`_ funded Nicolas
    Hug to work full-time on scikit-learn in 2020.

  .. div:: image-box

    .. image:: images/czi.png
      :target: https://chanzuckerberg.com

......................

The following students were sponsored by `Google
<https://opensource.google/>`_ to work on scikit-learn through
the `Google Summer of Code <https://en.wikipedia.org/wiki/Google_Summer_of_Code>`_
program.

- 2007 - David Cournapeau
- 2011 - `Vlad Niculae`_
- 2012 - `Vlad Niculae`_, Immanuel Bayer
- 2013 - Kemal Eren, Nicolas Trésegnie
- 2014 - Hamzeh Alsalhi, Issam Laradji, Maheshakya Wijewardena, Manoj Kumar
- 2015 - `Raghav RV <https://github.com/raghavrv>`_, Wei Xue
- 2016 - `Nelson Liu <http://nelsonliu.me>`_, `YenChen Lin <https://yenchenlin.me/>`_

.. _Vlad Niculae: https://vene.ro/

...................

The `NeuroDebian <http://neuro.debian.net>`_ project providing `Debian
<https://www.debian.org/>`_ packaging and contributions is supported by
`Dr. James V. Haxby <http://haxbylab.dartmouth.edu/>`_ (`Dartmouth
College <https://pbs.dartmouth.edu/>`_).

...................

The following organizations funded the scikit-learn consortium at Inria in
the past:

.. |msn| image:: images/microsoft.png
  :target: https://www.microsoft.com/

.. |bcg| image:: images/bcg.png
  :target: https://www.bcg.com/beyond-consulting/bcg-gamma/default.aspx

.. |fujitsu| image:: images/fujitsu.png
  :target: https://www.fujitsu.com/global/

.. |aphp| image:: images/logo_APHP_text.png
  :target: https://aphp.fr/

.. |hf| image:: images/huggingface_logo-noborder.png
  :target: https://huggingface.co

.. raw:: html

.. grid:: 2 2 4 4
  :class-row: image-subgrid
  :gutter: 1

  .. grid-item::
    :class: sd-text-center
    :child-align: center

    |msn|

  .. grid-item::
    :class: sd-text-center
    :child-align: center

    |bcg|

  .. grid-item::
    :class: sd-text-center
    :child-align: center

    |fujitsu|

  .. grid-item::
    :class: sd-text-center
    :child-align: center

    |aphp|

  .. grid-item::
    :class: sd-text-center
    :child-align: center

    |hf|

Coding Sprints
==============

The scikit-learn project has a long history of `open source coding sprints
<https://blog.scikit-learn.org/events/sprints-value/>`_ with over 50 sprint
events from 2010 to present day. There are scores of sponsors who contributed
to costs which include venue, food, travel, developer time and more. See
`scikit-learn sprints <https://blog.scikit-learn.org/sprints/>`_ for a full
list of events.

Donating to the project
=======================

If you are interested in donating to the project or to one of our code-sprints,
please donate via the `NumFOCUS Donations Page
<https://numfocus.org/donate-to-scikit-learn>`_.

.. raw:: html

      Help us, donate!

All donations will be handled by `NumFOCUS <https://numfocus.org/>`_, a non-profit
organization which is managed by a board of `Scipy community members
<https://numfocus.org/board.html>`_. NumFOCUS's mission is to foster scientific
computing software, in particular in Python. As a fiscal home of scikit-learn, it
ensures that money is available when needed to keep the project funded and available
while in compliance with tax regulations.

The received donations for the scikit-learn project mostly will go towards covering
travel-expenses for code sprints, as well as towards the organization budget of the
project [#f1]_.

.. rubric:: Notes

.. [#f1] Regarding the organization budget, in particular, we might use some of
  the donated funds to pay for other project expenses such as DNS,
  hosting or continuous integration services.

Infrastructure support
======================

We would also like to thank `Microsoft Azure <https://azure.microsoft.com/en-us/>`_,
`Cirrus Cl <https://cirrus-ci.org>`_, `CircleCl <https://circleci.com/>`_ for free CPU
time on their Continuous Integration servers, and `Anaconda Inc. <https://www.anaconda.com>`_
for the storage they provide for our staging and nightly builds.

about            About us           History          This project was started in 2007 as a Google Summer of Code project by David Cournapeau  Later that year  Matthieu Brucher started working on this project  as part of his thesis   In 2010 Fabian Pedregosa  Gael Varoquaux  Alexandre Gramfort and Vincent Michel of INRIA took leadership of the project and made the first public release  February the 1st 2010  Since then  several releases have appeared following an approximately 3 month cycle  and a thriving international community has been leading the development  As a result  INRIA holds the copyright over the work done by people who were employed by INRIA at the time of the contribution   Governance             The decision making process and governance structure of scikit learn  like roles and responsibilities  is laid out in the  ref  governance document  governance        The  author  anchors below is there to ensure that old html links  in    the form of  about html author  still work       authors   The people behind scikit learn                                 Scikit learn is a community project  developed by a large group of people  all across the world  A few core contributor teams  listed below  have central roles  however a more complete list of contributors can be found  on github  https   github com scikit learn scikit learn graphs contributors       Active Core Contributors                           Maintainers Team                   The following people are currently maintainers  in charge of consolidating scikit learn s development and maintenance      include   maintainers rst     note      Please do not email the authors directly to ask for assistance or report issues    Instead  please see  What s the best way to ask questions about scikit learn    https   scikit learn org stable faq html what s the best way to get help on scikit learn usage      in the FAQ      seealso      How you can  ref  contribute to the project  contributing     Documentation Team                     The following people help with documenting the project      include   documentation team rst  Contributor Experience Team                              The following people are active contributors who also help with  ref  triaging issues  bug triaging    PRs  and general maintenance      include   contributor experience team rst  Communication Team                     The following people help with  ref  communication around scikit learn  communication team        include   communication team rst  Emeritus Core Contributors                             Emeritus Maintainers Team                            The following people have been active contributors in the past  but are no longer active in the project      include   maintainers emeritus rst  Emeritus Communication Team                              The following people have been active in the communication team in the past  but no longer have communication responsibilities      include   communication team emeritus rst  Emeritus Contributor Experience Team                                       The following people have been active in the contributor experience team in the past      include   contributor experience team emeritus rst      citing scikit learn   Citing scikit learn                      If you use scikit learn in a scientific publication  we would appreciate citations to the following paper    Scikit learn  Machine Learning in Python  https   jmlr csail mit edu papers v12 pedregosa11a html     Pedregosa  et al    JMLR 12  pp  2825 2830  2011   Bibtex entry       article scikit learn      title  Scikit learn  Machine Learning in  P ython       author  Pedregosa  F  and Varoquaux  G  and Gramfort  A  and Michel  V              and Thirion  B  and Grisel  O  and Blondel  M  and Prettenhofer  P              and Weiss  R  and Dubourg  V  and Vanderplas  J  and Passos  A  and             Cournapeau  D  and Brucher  M  and Perrot  M  and Duchesnay  E        journal  Journal of Machine Learning Research       volume  12       pages  2825  2830       year  2011       If you want to cite scikit learn for its API or design  you may also want to consider the following paper    arxiv  API design for machine learning software  experiences from the scikit learn project  1309 0238    Buitinck  et al    2013   Bibtex entry       inproceedings sklearn api      author       Lars Buitinck and Gilles Louppe and Mathieu Blondel and                   Fabian Pedregosa and Andreas Mueller and Olivier Grisel and                   Vlad Niculae and Peter Prettenhofer and Alexandre Gramfort                   and Jaques Grobler and Robert Layton and Jake VanderPlas and                   Arnaud Joly and Brian Holt and Ga    e  l Varoquaux       title         API  design for machine learning software  experiences from the scikit learn                   project       booktitle    ECML PKDD Workshop  Languages for Data Mining and Machine Learning       year         2013       pages    108  122        Artwork          High quality PNG and SVG logos are available in the  doc logos   https   github com scikit learn scikit learn tree main doc logos    source directory      image   images scikit learn logo notext png    align  center  Funding          Scikit learn is a community driven project  however institutional and private grants help to assure its sustainability   The project would like to thank the following funders                                           div   sk text image grid small       div   text box        probabl   https   probabl ai    employs Adrin Jalali  Arturo Amor      Fran ois Goupil  Guillaume Lemaitre  J r mie du Boisberranger  Lo c Est ve      Olivier Grisel  and Stefanie Senger        div   image box         image   images probabl png        target  https   probabl ai                  chanel  image   images chanel png    target  https   www chanel com      axa  image   images axa png    target  https   www axa fr       bnp  image   images bnp png    target  https   www bnpparibascardif com       dataiku  image   images dataiku png    target  https   www dataiku com       nvidia  image   images nvidia png    target  https   www nvidia com      inria  image   images inria logo jpg    target  https   www inria fr     raw   html     style      table image subtable tr         border color  transparent             table image subtable td         width  50         vertical align  middle        text align  center             table image subtable td img         max height  40px  important        max width  90   important            style      div   sk text image grid small       div   text box      The  Members  https   scikit learn fondation inria fr en home  sponsors    of     the  Scikit learn Consortium at Inria Foundation      https   scikit learn fondation inria fr en home     help at maintaining and     improving the project through their financial support        div   image box         table          class  image subtable                                                chanel                                                   axa          bnp                                                   nvidia                                                        dataiku                                                        inria                                                         div   sk text image grid small       div   text box       NVidia  https   nvidia com    funds Tim Head since 2022     and is part of the scikit learn consortium at Inria        div   image box         image   images nvidia png        target  https   nvidia com                 div   sk text image grid small       div   text box       Microsoft  https   microsoft com     funds Andreas M ller since 2020        div   image box         image   images microsoft png        target  https   microsoft com                  div   sk text image grid small       div   text box       Quansight Labs  https   labs quansight org    funds Lucy Liu since 2022        div   image box         image   images quansight labs png        target  https   labs quansight org                   czi  image   images czi png    target  https   chanzuckerberg com      wellcome  image   images wellcome trust png    target  https   wellcome org      div   sk text image grid small       div   text box       The Chan Zuckerberg Initiative  https   chanzuckerberg com     and      Wellcome Trust  https   wellcome org     fund scikit learn through the      Essential Open Source Software for Science  EOSS   https   chanzuckerberg com eoss         cycle 6       It supports Lucy Liu and diversity   inclusion initiatives that will     be announced in the future        div   image box         table          class  image subtable                                                czi          wellcome                                                          div   sk text image grid small       div   text box       Tidelift  https   tidelift com     supports the project via their service     agreement        div   image box         image   images Tidelift logo on light svg        target  https   tidelift com                 Past Sponsors                   div   sk text image grid small       div   text box       Quansight Labs  https   labs quansight org    funded Meekail Zain in 2022 and 2023      and funded Thomas J  Fan from 2021 to 2023        div   image box         image   images quansight labs png        target  https   labs quansight org                  div   sk text image grid small       div   text box       Columbia University  https   columbia edu     funded Andreas M ller      2016 2020         div   image box         image   images columbia png        target  https   columbia edu               div   sk text image grid small       div   text box       The University of Sydney  https   sydney edu au     funded Joel Nothman      2017 2021         div   image box         image   images sydney primary jpeg        target  https   sydney edu au                   div   sk text image grid small       div   text box      Andreas M ller received a grant to improve scikit learn from the      Alfred P  Sloan Foundation  https   sloan org          This grant supported the position of Nicolas Hug and Thomas J  Fan        div   image box         image   images sloan banner png        target  https   sloan org                     div   sk text image grid small       div   text box       INRIA  https   www inria fr    actively supports this project  It has     provided funding for Fabian Pedregosa  2010 2012   Jaques Grobler      2012 2013  and Olivier Grisel  2013 2017  to work on this project     full time  It also hosts coding sprints and other events        div   image box         image   images inria logo jpg        target  https   www inria fr                            div   sk text image grid small       div   text box       Paris Saclay Center for Data Science  http   www datascience paris saclay fr         funded one year for a developer to work on the project full time  2014 2015   50      of the time of Guillaume Lemaitre  2016 2017  and 50  of the time of Joris van den     Bossche  2017 2018         div   image box         image   images cds logo png        target  http   www datascience paris saclay fr                                  div   sk text image grid small       div   text box       NYU Moore Sloan Data Science Environment  https   cds nyu edu mooresloan         funded Andreas Mueller  2014 2016  to work on this project  The Moore Sloan     Data Science Environment also funds several students to work on the project     part time        div   image box         image   images nyu short color png        target  https   cds nyu edu mooresloan                                div   sk text image grid small       div   text box       T l com Paristech  https   www telecom paristech fr     funded Manoj Kumar      2014   Tom Dupr  la Tour  2015   Raghav RV  2015 2017   Thierry Guillemot      2016 2017  and Albert Thomas  2017  to work on scikit learn        div   image box         image   images telecom png        target  https   www telecom paristech fr                             div   sk text image grid small       div   text box       The Labex DigiCosme  https   digicosme lri fr    funded Nicolas Goix      2015 2016   Tom Dupr  la Tour  2015 2016 and 2017 2018   Mathurin Massias      2018 2019  to work part time on scikit learn during their PhDs  It also     funded a scikit learn coding sprint in 2015        div   image box         image   images digicosme png        target  https   digicosme lri fr                            div   sk text image grid small       div   text box       The Chan Zuckerberg Initiative  https   chanzuckerberg com     funded Nicolas     Hug to work full time on scikit learn in 2020        div   image box         image   images czi png        target  https   chanzuckerberg com                          The following students were sponsored by  Google  https   opensource google     to work on scikit learn through the  Google Summer of Code  https   en wikipedia org wiki Google Summer of Code    program     2007   David Cournapeau   2011    Vlad Niculae     2012    Vlad Niculae    Immanuel Bayer   2013   Kemal Eren  Nicolas Tr segnie   2014   Hamzeh Alsalhi  Issam Laradji  Maheshakya Wijewardena  Manoj Kumar   2015    Raghav RV  https   github com raghavrv     Wei Xue   2016    Nelson Liu  http   nelsonliu me      YenChen Lin  https   yenchenlin me          Vlad Niculae  https   vene ro                        The  NeuroDebian  http   neuro debian net    project providing  Debian  https   www debian org     packaging and contributions is supported by  Dr  James V  Haxby  http   haxbylab dartmouth edu       Dartmouth College  https   pbs dartmouth edu                             The following organizations funded the scikit learn consortium at Inria in the past       msn  image   images microsoft png    target  https   www microsoft com       bcg  image   images bcg png    target  https   www bcg com beyond consulting bcg gamma default aspx      fujitsu  image   images fujitsu png    target  https   www fujitsu com global       aphp  image   images logo APHP text png    target  https   aphp fr       hf  image   images huggingface logo noborder png    target  https   huggingface co     raw   html     style      div image subgrid img         max height  50px        max width  90             style      grid   2 2 4 4    class row  image subgrid    gutter  1       grid item        class  sd text center      child align  center       msn        grid item        class  sd text center      child align  center       bcg        grid item        class  sd text center      child align  center       fujitsu        grid item        class  sd text center      child align  center       aphp        grid item        class  sd text center      child align  center       hf   Coding Sprints                 The scikit learn project has a long history of  open source coding sprints  https   blog scikit learn org events sprints value     with over 50 sprint events from 2010 to present day  There are scores of sponsors who contributed to costs which include venue  food  travel  developer time and more  See  scikit learn sprints  https   blog scikit learn org sprints     for a full list of events   Donating to the project                          If you are interested in donating to the project or to one of our code sprints  please donate via the  NumFOCUS Donations Page  https   numfocus org donate to scikit learn         raw   html     p class  text center        a class  btn sk btn orange mb 1  href  https   numfocus org donate to scikit learn         Help us   strong donate   strong        a      p   All donations will be handled by  NumFOCUS  https   numfocus org      a non profit organization which is managed by a board of  Scipy community members  https   numfocus org board html     NumFOCUS s mission is to foster scientific computing software  in particular in Python  As a fiscal home of scikit learn  it ensures that money is available when needed to keep the project funded and available while in compliance with tax regulations   The received donations for the scikit learn project mostly will go towards covering travel expenses for code sprints  as well as towards the organization budget of the project   f1        rubric   Notes       f1  Regarding the organization budget  in particular  we might use some of   the donated funds to pay for other project expenses such as DNS    hosting or continuous integration services    Infrastructure support                         We would also like to thank  Microsoft Azure  https   azure microsoft com en us       Cirrus Cl  https   cirrus ci org      CircleCl  https   circleci com     for free CPU time on their Continuous Integration servers  and  Anaconda Inc   https   www anaconda com    for the storage they provide for our staging and nightly builds


scikit-learn sklearn contributors rst releasenotes15 Version 1 5

Answer:
.. include:: _contributors.rst

.. currentmodule:: sklearn

.. _release_notes_1_5:

===========
Version 1.5
===========

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_5_0.py`.

.. include:: changelog_legend.inc

.. _changes_1_5_2:

Version 1.5.2
=============

**September 2024**

Changes impacting many modules
------------------------------

- |Fix| Fixed performance regression in a few Cython modules in
  `sklearn._loss`, `sklearn.manifold`, `sklearn.metrics` and `sklearn.utils`,
  which were built without OpenMP support.
  :pr:`29694` by :user:`Loïc Estèvce <lesteve>`.

Changelog
---------

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

- |Fix| Raise error when :class:`~sklearn.model_selection.LeaveOneOut` used in
  `cv`, matching what would happen if `KFold(n_splits=n_samples)` was used.
  :pr:`29545` by :user:`Lucy Liu <lucyleeow>`

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

- |Fix| Fixed :class:`compose.TransformedTargetRegressor` not to raise `UserWarning` if
  transform output is set to `pandas` or `polars`, since it isn't a transformer.
  :pr:`29401` by :user:`Stefanie Senger <StefanieSenger>`.

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

- |Fix| Increase rank defficiency threshold in the whitening step of
  :class:`decomposition.FastICA` with `whiten_solver="eigh"` to improve the
  platform-agnosticity of the estimator.
  :pr:`29612` by :user:`Olivier Grisel <ogrisel>`.

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

- |Fix| Fix a regression in :func:`metrics.accuracy_score` and in
  :func:`metrics.zero_one_loss` causing an error for Array API dispatch with multilabel
  inputs.
  :pr:`29336` by :user:`Edoardo Abati <EdAbati>`.

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

- |Fix| Fixed a regression in :class:`svm.SVC` and :class:`svm.SVR` such that we accept
  `C=float("inf")`.
  :pr:`29780` by :user:`Guillaume Lemaitre <glemaitre>`.

.. _changes_1_5_1:

Version 1.5.1
=============

**July 2024**

Changes impacting many modules
------------------------------

- |Fix| Fixed a regression in the validation of the input data of all estimators where
  an unexpected error was raised when passing a DataFrame backed by a read-only buffer.
  :pr:`29018` by :user:`Jérémie du Boisberranger <jeremiedbb>`.

- |Fix| Fixed a regression causing a dead-lock at import time in some settings.
  :pr:`29235` by :user:`Jérémie du Boisberranger <jeremiedbb>`.

Changelog
---------

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

- |Efficiency| Fix a performance regression in :class:`compose.ColumnTransformer`
  where the full input data was copied for each transformer when `n_jobs > 1`.
  :pr:`29330` by :user:`Jérémie du Boisberranger <jeremiedbb>`.

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

- |Fix| Fix a regression in :func:`metrics.r2_score`. Passing torch CPU tensors
  with array API dispatched disabled would complain about non-CPU devices
  instead of implicitly converting those inputs as regular NumPy arrays.
  :pr:`29119` by :user:`Olivier Grisel`.

- |Fix| Fix a regression in
  :func:`metrics.zero_one_loss` causing an error for Array API dispatch with multilabel
  inputs.
  :pr:`29269` by :user:`Yaroslav Korobko <Tialo>`.

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

- |Fix| Fix a regression in :class:`model_selection.GridSearchCV` for parameter
  grids that have heterogeneous parameter values.
  :pr:`29078` by :user:`Loïc Estève <lesteve>`.

- |Fix| Fix a regression in :class:`model_selection.GridSearchCV` for parameter
  grids that have estimators as parameter values.
  :pr:`29179` by :user:`Marco Gorelli<MarcoGorelli>`.

- |Fix| Fix a regression in :class:`model_selection.GridSearchCV` for parameter
  grids that have arrays of different sizes as parameter values.
  :pr:`29314` by :user:`Marco Gorelli<MarcoGorelli>`.

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

- |Fix| Fix an issue in :func:`tree.export_graphviz` and :func:`tree.plot_tree`
  that could potentially result in exception or wrong results on 32bit OSes.
  :pr:`29327` by :user:`Loïc Estève<lesteve>`.

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

- |API| :func:`utils.validation.check_array` has a new parameter, `force_writeable`, to
  control the writeability of the output array. If set to `True`, the output array will
  be guaranteed to be writeable and a copy will be made if the input array is read-only.
  If set to `False`, no guarantee is made about the writeability of the output array.
  :pr:`29018` by :user:`Jérémie du Boisberranger <jeremiedbb>`.

.. _changes_1_5:

Version 1.5.0
=============

**May 2024**

Security
--------

- |Fix| :class:`feature_extraction.text.CountVectorizer` and
  :class:`feature_extraction.text.TfidfVectorizer` no longer store discarded
  tokens from the training set in their `stop_words_` attribute. This attribute
  would hold too frequent (above `max_df`) but also too rare tokens (below
  `min_df`). This fixes a potential security issue (data leak) if the discarded
  rare tokens hold sensitive information from the training set without the
  model developer's knowledge.

  Note: users of those classes are encouraged to either retrain their pipelines
  with the new scikit-learn version or to manually clear the `stop_words_`
  attribute from previously trained instances of those transformers. This
  attribute was designed only for model inspection purposes and has no impact
  on the behavior of the transformers.
  :pr:`28823` by :user:`Olivier Grisel <ogrisel>`.

Changed models
--------------

- |Efficiency| The subsampling in :class:`preprocessing.QuantileTransformer` is now
  more efficient for dense arrays but the fitted quantiles and the results of
  `transform` may be slightly different than before (keeping the same statistical
  properties).
  :pr:`27344` by :user:`Xuefeng Xu <xuefeng-xu>`.

- |Enhancement| :class:`decomposition.PCA`, :class:`decomposition.SparsePCA`
  and :class:`decomposition.TruncatedSVD` now set the sign of the `components_`
  attribute based on the component values instead of using the transformed data
  as reference. This change is needed to be able to offer consistent component
  signs across all `PCA` solvers, including the new
  `svd_solver="covariance_eigh"` option introduced in this release.

Changes impacting many modules
------------------------------

- |Fix| Raise `ValueError` with an informative error message when passing 1D
  sparse arrays to methods that expect 2D sparse inputs.
  :pr:`28988` by :user:`Olivier Grisel <ogrisel>`.

- |API| The name of the input of the `inverse_transform` method of estimators has been
  standardized to `X`. As a consequence, `Xt` is deprecated and will be removed in
  version 1.7 in the following estimators: :class:`cluster.FeatureAgglomeration`,
  :class:`decomposition.MiniBatchNMF`, :class:`decomposition.NMF`,
  :class:`model_selection.GridSearchCV`, :class:`model_selection.RandomizedSearchCV`,
  :class:`pipeline.Pipeline` and :class:`preprocessing.KBinsDiscretizer`.
  :pr:`28756` by :user:`Will Dean <wd60622>`.

Support for Array API
---------------------

Additional estimators and functions have been updated to include support for all
`Array API <https://data-apis.org/array-api/latest/>`_ compliant inputs.

See :ref:`array_api` for more details.

**Functions:**

- :func:`sklearn.metrics.r2_score` now supports Array API compliant inputs.
  :pr:`27904` by :user:`Eric Lindgren <elindgren>`, :user:`Franck Charras <fcharras>`,
  :user:`Olivier Grisel <ogrisel>` and :user:`Tim Head <betatim>`.

**Classes:**

- :class:`linear_model.Ridge` now supports the Array API for the `svd` solver.
  See :ref:`array_api` for more details.
  :pr:`27800` by :user:`Franck Charras <fcharras>`, :user:`Olivier Grisel <ogrisel>`
  and :user:`Tim Head <betatim>`.

Support for building with Meson
-------------------------------

From scikit-learn 1.5 onwards, Meson is the main supported way to build
scikit-learn, see :ref:`Building from source <install_bleeding_edge>` for more
details.

Unless we discover a major blocker, setuptools support will be dropped in
scikit-learn 1.6. The 1.5.x releases will support building scikit-learn with
setuptools.

Meson support for building scikit-learn was added in :pr:`28040` by
:user:`Loïc Estève <lesteve>`

Metadata Routing
----------------

The following models now support metadata routing in one or more or their
methods. Refer to the :ref:`Metadata Routing User Guide <metadata_routing>` for
more details.

- |Feature| :class:`impute.IterativeImputer` now supports metadata routing in
  its `fit` method. :pr:`28187` by :user:`Stefanie Senger <StefanieSenger>`.

- |Feature| :class:`ensemble.BaggingClassifier` and :class:`ensemble.BaggingRegressor`
  now support metadata routing. The fit methods now
  accept ``**fit_params`` which are passed to the underlying estimators
  via their `fit` methods.
  :pr:`28432` by :user:`Adam Li <adam2392>` and
  :user:`Benjamin Bossan <BenjaminBossan>`.

- |Feature| :class:`linear_model.RidgeCV` and
  :class:`linear_model.RidgeClassifierCV` now support metadata routing in
  their `fit` method and route metadata to the underlying
  :class:`model_selection.GridSearchCV` object or the underlying scorer.
  :pr:`27560` by :user:`Omar Salman <OmarManzoor>`.

- |Feature| :class:`GraphicalLassoCV` now supports metadata routing in it's
  `fit` method and routes metadata to the CV splitter.
  :pr:`27566` by :user:`Omar Salman <OmarManzoor>`.

- |Feature| :class:`linear_model.RANSACRegressor` now supports metadata routing
  in its ``fit``, ``score`` and ``predict`` methods and route metadata to its
  underlying estimator's' ``fit``, ``score`` and ``predict`` methods.
  :pr:`28261` by :user:`Stefanie Senger <StefanieSenger>`.

- |Feature| :class:`ensemble.VotingClassifier` and
  :class:`ensemble.VotingRegressor` now support metadata routing and pass
  ``**fit_params`` to the underlying estimators via their `fit` methods.
  :pr:`27584` by :user:`Stefanie Senger <StefanieSenger>`.

- |Feature| :class:`pipeline.FeatureUnion` now supports metadata routing in its
  ``fit`` and ``fit_transform`` methods and route metadata to the underlying
  transformers' ``fit`` and ``fit_transform``.
  :pr:`28205` by :user:`Stefanie Senger <StefanieSenger>`.

- |Fix| Fix an issue when resolving default routing requests set via class
  attributes.
  :pr:`28435` by `Adrin Jalali`_.

- |Fix| Fix an issue when `set_{method}_request` methods are used as unbound
  methods, which can happen if one tries to decorate them.
  :pr:`28651` by `Adrin Jalali`_.

- |FIX| Prevent a `RecursionError` when estimators with the default `scoring`
  param (`None`) route metadata.
  :pr:`28712` by :user:`Stefanie Senger <StefanieSenger>`.

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 123455 is the *pull request* number, not the issue number.

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

- |Fix| Fixed a regression in :class:`calibration.CalibratedClassifierCV` where
  an error was wrongly raised with string targets.
  :pr:`28843` by :user:`Jérémie du Boisberranger <jeremiedbb>`.

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

- |Fix| The :class:`cluster.MeanShift` class now properly converges for constant data.
  :pr:`28951` by :user:`Akihiro Kuno <akikuno>`.

- |FIX| Create copy of precomputed sparse matrix within the `fit` method of
  :class:`~cluster.OPTICS` to avoid in-place modification of the sparse matrix.
  :pr:`28491` by :user:`Thanh Lam Dang <lamdang2k>`.

- |Fix| :class:`cluster.HDBSCAN` now supports all metrics supported by
  :func:`sklearn.metrics.pairwise_distances` when `algorithm="brute"` or `"auto"`.
  :pr:`28664` by :user:`Manideep Yenugula <myenugula>`.

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

- |Feature| A fitted :class:`compose.ColumnTransformer` now implements `__getitem__`
  which returns the fitted transformers by name. :pr:`27990` by `Thomas Fan`_.

- |Enhancement| :class:`compose.TransformedTargetRegressor` now raises an error in `fit`
  if only `inverse_func` is provided without `func` (that would default to identity)
  being explicitly set as well.
  :pr:`28483` by :user:`Stefanie Senger <StefanieSenger>`.

- |Enhancement| :class:`compose.ColumnTransformer` can now expose the "remainder"
  columns in the fitted `transformers_` attribute as column names or boolean
  masks, rather than column indices.
  :pr:`27657` by :user:`Jérôme Dockès <jeromedockes>`.

- |Fix| Fixed an bug in :class:`compose.ColumnTransformer` with `n_jobs > 1`, where the
  intermediate selected columns were passed to the transformers as read-only arrays.
  :pr:`28822` by :user:`Jérémie du Boisberranger <jeremiedbb>`.

:mod:`sklearn.cross_decomposition`
..................................

- |Fix| The `coef_` fitted attribute of :class:`cross_decomposition.PLSRegression`
  now takes into account both the scale of `X` and `Y` when `scale=True`. Note that
  the previous predicted values were not affected by this bug.
  :pr:`28612` by :user:`Guillaume Lemaitre <glemaitre>`.

- |API| Deprecates `Y` in favor of `y` in the methods fit, transform and
  inverse_transform of:
  :class:`cross_decomposition.PLSRegression`.
  :class:`cross_decomposition.PLSCanonical`,
  :class:`cross_decomposition.CCA`,
  and :class:`cross_decomposition.PLSSVD`.
  `Y` will be removed in version 1.7.
  :pr:`28604` by :user:`David Leon <davidleon123>`.

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

- |Enhancement| Adds optional arguments `n_retries` and `delay` to functions
  :func:`datasets.fetch_20newsgroups`,
  :func:`datasets.fetch_20newsgroups_vectorized`,
  :func:`datasets.fetch_california_housing`,
  :func:`datasets.fetch_covtype`,
  :func:`datasets.fetch_kddcup99`,
  :func:`datasets.fetch_lfw_pairs`,
  :func:`datasets.fetch_lfw_people`,
  :func:`datasets.fetch_olivetti_faces`,
  :func:`datasets.fetch_rcv1`,
  and :func:`datasets.fetch_species_distributions`.
  By default, the functions will retry up to 3 times in case of network failures.
  :pr:`28160` by :user:`Zhehao Liu <MaxwellLZH>` and
  :user:`Filip Karlo Došilović <fkdosilovic>`.

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

- |Efficiency| :class:`decomposition.PCA` with `svd_solver="full"` now assigns
  a contiguous `components_` attribute instead of an non-contiguous slice of
  the singular vectors. When `n_components << n_features`, this can save some
  memory and, more importantly, help speed-up subsequent calls to the `transform`
  method by more than an order of magnitude by leveraging cache locality of
  BLAS GEMM on contiguous arrays.
  :pr:`27491` by :user:`Olivier Grisel <ogrisel>`.

- |Enhancement| :class:`~decomposition.PCA` now automatically selects the ARPACK solver
  for sparse inputs when `svd_solver="auto"` instead of raising an error.
  :pr:`28498` by :user:`Thanh Lam Dang <lamdang2k>`.

- |Enhancement| :class:`decomposition.PCA` now supports a new solver option
  named `svd_solver="covariance_eigh"` which offers an order of magnitude
  speed-up and reduced memory usage for datasets with a large number of data
  points and a small number of features (say, `n_samples >> 1000 >
  n_features`). The `svd_solver="auto"` option has been updated to use the new
  solver automatically for such datasets. This solver also accepts sparse input
  data.
  :pr:`27491` by :user:`Olivier Grisel <ogrisel>`.

- |Fix| :class:`decomposition.PCA` fit with `svd_solver="arpack"`,
  `whiten=True` and a value for `n_components` that is larger than the rank of
  the training set, no longer returns infinite values when transforming
  hold-out data.
  :pr:`27491` by :user:`Olivier Grisel <ogrisel>`.

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

- |Enhancement| :class:`dummy.DummyClassifier` and :class:`dummy.DummyRegressor` now
  have the `n_features_in_` and `feature_names_in_` attributes after `fit`.
  :pr:`27937` by :user:`Marco vd Boom <tvdboom>`.

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

- |Efficiency| Improves runtime of `predict` of
  :class:`ensemble.HistGradientBoostingClassifier` by avoiding to call `predict_proba`.
  :pr:`27844` by :user:`Christian Lorentzen <lorentzenchr>`.

- |Efficiency| :class:`ensemble.HistGradientBoostingClassifier` and
  :class:`ensemble.HistGradientBoostingRegressor` are now a tiny bit faster by
  pre-sorting the data before finding the thresholds for binning.
  :pr:`28102` by :user:`Christian Lorentzen <lorentzenchr>`.

- |Fix| Fixes a bug in :class:`ensemble.HistGradientBoostingClassifier` and
  :class:`ensemble.HistGradientBoostingRegressor` when `monotonic_cst` is specified
  for non-categorical features.
  :pr:`28925` by :user:`Xiao Yuan <yuanx749>`.

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

- |Efficiency| :class:`feature_extraction.text.TfidfTransformer` is now faster
  and more memory-efficient by using a NumPy vector instead of a sparse matrix
  for storing the inverse document frequency.
  :pr:`18843` by :user:`Paolo Montesel <thebabush>`.

- |Enhancement| :class:`feature_extraction.text.TfidfTransformer` now preserves
  the data type of the input matrix if it is `np.float64` or `np.float32`.
  :pr:`28136` by :user:`Guillaume Lemaitre <glemaitre>`.

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

- |Enhancement| :func:`feature_selection.mutual_info_regression` and
  :func:`feature_selection.mutual_info_classif` now support `n_jobs` parameter.
  :pr:`28085` by :user:`Neto Menoci <netomenoci>` and
  :user:`Florin Andrei <FlorinAndrei>`.

- |Enhancement| The `cv_results_` attribute of :class:`feature_selection.RFECV` has
  a new key, `n_features`, containing an array with the number of features selected
  at each step.
  :pr:`28670` by :user:`Miguel Silva <miguelcsilva>`.

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

- |Enhancement| :class:`impute.SimpleImputer` now supports custom strategies
  by passing a function in place of a strategy name.
  :pr:`28053` by :user:`Mark Elliot <mark-thm>`.

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

- |Fix| :meth:`inspection.DecisionBoundaryDisplay.from_estimator` no longer
  warns about missing feature names when provided a `polars.DataFrame`.
  :pr:`28718` by :user:`Patrick Wang <patrickkwang>`.

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

- |Enhancement| Solver `"newton-cg"` in :class:`linear_model.LogisticRegression` and
  :class:`linear_model.LogisticRegressionCV` now emits information when `verbose` is
  set to positive values.
  :pr:`27526` by :user:`Christian Lorentzen <lorentzenchr>`.

- |Fix| :class:`linear_model.ElasticNet`, :class:`linear_model.ElasticNetCV`,
  :class:`linear_model.Lasso` and :class:`linear_model.LassoCV` now explicitly don't
  accept large sparse data formats.
  :pr:`27576` by :user:`Stefanie Senger <StefanieSenger>`.

- |Fix| :class:`linear_model.RidgeCV` and :class:`RidgeClassifierCV` correctly pass
  `sample_weight` to the underlying scorer when `cv` is None.
  :pr:`27560` by :user:`Omar Salman <OmarManzoor>`.

- |Fix| `n_nonzero_coefs_` attribute in :class:`linear_model.OrthogonalMatchingPursuit`
  will now always be `None` when `tol` is set, as `n_nonzero_coefs` is ignored in
  this case. :pr:`28557` by :user:`Lucy Liu <lucyleeow>`.

- |API| :class:`linear_model.RidgeCV` and :class:`linear_model.RidgeClassifierCV`
  will now allow `alpha=0` when `cv != None`, which is consistent with
  :class:`linear_model.Ridge` and :class:`linear_model.RidgeClassifier`.
  :pr:`28425` by :user:`Lucy Liu <lucyleeow>`.

- |API| Passing `average=0` to disable averaging is deprecated in
  :class:`linear_model.PassiveAggressiveClassifier`,
  :class:`linear_model.PassiveAggressiveRegressor`,
  :class:`linear_model.SGDClassifier`, :class:`linear_model.SGDRegressor` and
  :class:`linear_model.SGDOneClassSVM`. Pass `average=False` instead.
  :pr:`28582` by :user:`Jérémie du Boisberranger <jeremiedbb>`.

- |API| Parameter `multi_class` was deprecated in
  :class:`linear_model.LogisticRegression` and
  :class:`linear_model.LogisticRegressionCV`. `multi_class` will be removed in 1.7,
  and internally, for 3 and more classes, it will always use multinomial.
  If you still want to use the one-vs-rest scheme, you can use
  `OneVsRestClassifier(LogisticRegression(..))`.
  :pr:`28703` by :user:`Christian Lorentzen <lorentzenchr>`.

- |API| `store_cv_values` and `cv_values_` are deprecated in favor of
  `store_cv_results` and `cv_results_` in `~linear_model.RidgeCV` and
  `~linear_model.RidgeClassifierCV`.
  :pr:`28915` by :user:`Lucy Liu <lucyleeow>`.

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

- |API| Deprecates `n_iter` in favor of `max_iter` in :class:`manifold.TSNE`.
  `n_iter` will be removed in version 1.7. This makes :class:`manifold.TSNE`
  consistent with the rest of the estimators. :pr:`28471` by
  :user:`Lucy Liu <lucyleeow>`

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

- |Feature| :func:`metrics.pairwise_distances` accepts calculating pairwise distances
  for non-numeric arrays as well. This is supported through custom metrics only.
  :pr:`27456` by :user:`Venkatachalam N <venkyyuvy>`, :user:`Kshitij Mathur <Kshitij68>`
  and :user:`Julian Libiseller-Egger <julibeg>`.

- |Feature| :func:`sklearn.metrics.check_scoring` now returns a multi-metric scorer
  when `scoring` as a `dict`, `set`, `tuple`, or `list`. :pr:`28360` by `Thomas Fan`_.

- |Feature| :func:`metrics.d2_log_loss_score` has been added which
  calculates the D^2 score for the log loss.
  :pr:`28351` by :user:`Omar Salman <OmarManzoor>`.

- |Efficiency| Improve efficiency of functions :func:`~metrics.brier_score_loss`,
  :func:`~calibration.calibration_curve`, :func:`~metrics.det_curve`,
  :func:`~metrics.precision_recall_curve`,
  :func:`~metrics.roc_curve` when `pos_label` argument is specified.
  Also improve efficiency of methods `from_estimator`
  and `from_predictions` in :class:`~metrics.RocCurveDisplay`,
  :class:`~metrics.PrecisionRecallDisplay`, :class:`~metrics.DetCurveDisplay`,
  :class:`~calibration.CalibrationDisplay`.
  :pr:`28051` by :user:`Pierre de Fréminville <pidefrem>`.

- |Fix|:class:`metrics.classification_report` now shows only accuracy and not
  micro-average when input is a subset of labels.
  :pr:`28399` by :user:`Vineet Joshi <vjoshi253>`.

- |Fix| Fix OpenBLAS 0.3.26 dead-lock on Windows in pairwise distances
  computation. This is likely to affect neighbor-based algorithms.
  :pr:`28692` by :user:`Loïc Estève <lesteve>`.

- |API| :func:`metrics.precision_recall_curve` deprecated the keyword argument
  `probas_pred` in favor of `y_score`. `probas_pred` will be removed in version 1.7.
  :pr:`28092` by :user:`Adam Li <adam2392>`.

- |API| :func:`metrics.brier_score_loss` deprecated the keyword argument `y_prob`
  in favor of `y_proba`. `y_prob` will be removed in version 1.7.
  :pr:`28092` by :user:`Adam Li <adam2392>`.

- |API| For classifiers and classification metrics, labels encoded as bytes
  is deprecated and will raise an error in v1.7.
  :pr:`18555` by :user:`Kaushik Amar Das <cozek>`.

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

- |Fix| The `converged_` attribute of :class:`mixture.GaussianMixture` and
  :class:`mixture.BayesianGaussianMixture` now reflects the convergence status of
  the best fit whereas it was previously `True` if any of the fits converged.
  :pr:`26837` by :user:`Krsto Proroković <krstopro>`.

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

- |MajorFeature| :class:`model_selection.TunedThresholdClassifierCV` finds
  the decision threshold of a binary classifier that maximizes a
  classification metric through cross-validation.
  :class:`model_selection.FixedThresholdClassifier` is an alternative when one wants
  to use a fixed decision threshold without any tuning scheme.
  :pr:`26120` by :user:`Guillaume Lemaitre <glemaitre>`.

- |Enhancement| :term:`CV splitters <CV splitter>` that ignores the group parameter now
  raises a warning when groups are passed in to :term:`split`. :pr:`28210` by
  `Thomas Fan`_.

- |Enhancement| The HTML diagram representation of
  :class:`~model_selection.GridSearchCV`,
  :class:`~model_selection.RandomizedSearchCV`,
  :class:`~model_selection.HalvingGridSearchCV`, and
  :class:`~model_selection.HalvingRandomSearchCV` will show the best estimator when
  `refit=True`. :pr:`28722` by :user:`Yao Xiao <Charlie-XIAO>` and `Thomas Fan`_.

- |Fix| the ``cv_results_`` attribute (of :class:`model_selection.GridSearchCV`) now
  returns masked arrays of the appropriate NumPy dtype, as opposed to always returning
  dtype ``object``. :pr:`28352` by :user:`Marco Gorelli<MarcoGorelli>`.

- |Fix| :func:`model_selection.train_test_split` works with Array API inputs.
  Previously indexing was not handled correctly leading to exceptions when using strict
  implementations of the Array API like CuPY.
  :pr:`28407` by :user:`Tim Head <betatim>`.

:mod:`sklearn.multioutput`
..........................

- |Enhancement| `chain_method` parameter added to :class:`multioutput.ClassifierChain`.
  :pr:`27700` by :user:`Lucy Liu <lucyleeow>`.

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

- |Fix| Fixes :class:`neighbors.NeighborhoodComponentsAnalysis` such that
  `get_feature_names_out` returns the correct number of feature names.
  :pr:`28306` by :user:`Brendan Lu <brendanlu>`.

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

- |Feature| :class:`pipeline.FeatureUnion` can now use the
  `verbose_feature_names_out` attribute. If `True`, `get_feature_names_out`
  will prefix all feature names with the name of the transformer
  that generated that feature. If `False`, `get_feature_names_out` will not
  prefix any feature names and will error if feature names are not unique.
  :pr:`25991` by :user:`Jiawei Zhang <jiawei-zhang-a>`.

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

- |Enhancement| :class:`preprocessing.QuantileTransformer` and
  :func:`preprocessing.quantile_transform` now supports disabling
  subsampling explicitly.
  :pr:`27636` by :user:`Ralph Urlus <rurlus>`.

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

- |Enhancement| Plotting trees in matplotlib via :func:`tree.plot_tree` now
  show a "True/False" label to indicate the directionality the samples traverse
  given the split condition.
  :pr:`28552` by :user:`Adam Li <adam2392>`.

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

- |Fix| :func:`~utils._safe_indexing` now works correctly for polars DataFrame when
  `axis=0` and supports indexing polars Series.
  :pr:`28521` by :user:`Yao Xiao <Charlie-XIAO>`.

- |API| :data:`utils.IS_PYPY` is deprecated and will be removed in version 1.7.
  :pr:`28768` by :user:`Jérémie du Boisberranger <jeremiedbb>`.

- |API| :func:`utils.tosequence` is deprecated and will be removed in version 1.7.
  :pr:`28763` by :user:`Jérémie du Boisberranger <jeremiedbb>`.

- |API| :class:`utils.parallel_backend` and :func:`utils.register_parallel_backend` are
  deprecated and will be removed in version 1.7. Use `joblib.parallel_backend` and
  `joblib.register_parallel_backend` instead.
  :pr:`28847` by :user:`Jérémie du Boisberranger <jeremiedbb>`.

- |API| Raise informative warning message in :func:`~utils.multiclass.type_of_target`
  when represented as bytes. For classifiers and classification metrics, labels encoded
  as bytes is deprecated and will raise an error in v1.7.
  :pr:`18555` by :user:`Kaushik Amar Das <cozek>`.

- |API| :func:`utils.estimator_checks.check_estimator_sparse_data` was split into two
  functions: :func:`utils.estimator_checks.check_estimator_sparse_matrix` and
  :func:`utils.estimator_checks.check_estimator_sparse_array`.
  :pr:`27576` by :user:`Stefanie Senger <StefanieSenger>`.

.. rubric:: Code and documentation contributors

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

101AlexMartin, Abdulaziz Aloqeely, Adam J. Stewart, Adam Li, Adarsh Wase,
Adeyemi Biola, Aditi Juneja, Adrin Jalali, Advik Sinha, Aisha, Akash
Srivastava, Akihiro Kuno, Alan Guedes, Alberto Torres, Alexis IMBERT, alexqiao,
Ana Paula Gomes, Anderson Nelson, Andrei Dzis, Arif Qodari, Arnaud Capitaine,
Arturo Amor, Aswathavicky, Audrey Flanders, awwwyan, baggiponte, Bharat
Raghunathan, bme-git, brdav, Brendan Lu, Brigitta Sipőcz, Bruno, Cailean
Carter, Cemlyn, Christian Lorentzen, Christian Veenhuis, Cindy Liang, Claudio
Salvatore Arcidiacono, Connor Boyle, Conrad Stevens, crispinlogan, David
Matthew Cherney, Davide Chicco, davidleon123, dependabot[bot], DerWeh, dinga92,
Dipan Banik, Drew Craeton, Duarte São José, DUONG, Eddie Bergman, Edoardo
Abati, Egehan Gunduz, Emad Izadifar, EmilyXinyi, Erich Schubert, Evelyn, Filip
Karlo Došilović, Franck Charras, Gael Varoquaux, Gönül Aycı, Guillaume
Lemaitre, Gyeongjae Choi, Harmanan Kohli, Hong Xiang Yue, Ian Faust, Ilya
Komarov, itsaphel, Ivan Wiryadi, Jack Bowyer, Javier Marin Tur, Jérémie du
Boisberranger, Jérôme Dockès, Jiawei Zhang, João Morais, Joe Cainey, Joel
Nothman, Johanna Bayer, John Cant, John Enblom, John Hopfensperger, jpcars,
jpienaar-tuks, Julian Chan, Julian Libiseller-Egger, Julien Jerphanion,
KanchiMoe, Kaushik Amar Das, keyber, Koustav Ghosh, kraktus, Krsto Proroković,
Lars, ldwy4, LeoGrin, lihaitao, Linus Sommer, Loic Esteve, Lucy Liu, Lukas
Geiger, m-maggi, manasimj, Manuel Labbé, Manuel Morales, Marco Edward Gorelli,
Marco Wolsza, Maren Westermann, Marija Vlajic, Mark Elliot, Martin Helm,
Mateusz Sokół, mathurinm, Mavs, Michael Dawson, Michael Higgins, Michael Mayer,
miguelcsilva, Miki Watanabe, Mohammed Hamdy, myenugula, Nathan Goldbaum, Naziya
Mahimkar, nbrown-ScottLogic, Neto, Nithish Bolleddula, notPlancha, Olivier
Grisel, Omar Salman, ParsifalXu, Patrick Wang, Pierre de Fréminville, Piotr,
Priyank Shroff, Priyansh Gupta, Priyash Shah, Puneeth K, Rahil Parikh, raisadz,
Raj Pulapakura, Ralf Gommers, Ralph Urlus, Randolf Scholz, renaissance0ne,
Reshama Shaikh, Richard Barnes, Robert Pollak, Roberto Rosati, Rodrigo Romero,
rwelsch427, Saad Mahmood, Salim Dohri, Sandip Dutta, SarahRemus,
scikit-learn-bot, Shaharyar Choudhry, Shubham, sperret6, Stefanie Senger,
Steffen Schneider, Suha Siddiqui, Thanh Lam DANG, thebabush, Thomas, Thomas J.
Fan, Thomas Lazarus, Tialo, Tim Head, Tuhin Sharma, Tushar Parimi,
VarunChaduvula, Vineet Joshi, virchan, Waël Boukhobza, Weyb, Will Dean, Xavier
Beltran, Xiao Yuan, Xuefeng Xu, Yao Xiao, yareyaredesuyo, Ziad Amerr, Štěpán
Sršeň

include    contributors rst     currentmodule   sklearn      release notes 1 5               Version 1 5              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 5 0 py       include   changelog legend inc      changes 1 5 2   Version 1 5 2                  September 2024    Changes impacting many modules                                    Fix  Fixed performance regression in a few Cython modules in    sklearn  loss    sklearn manifold    sklearn metrics  and  sklearn utils     which were built without OpenMP support     pr  29694  by  user  Lo c Est vce  lesteve     Changelog             mod  sklearn calibration                                 Fix  Raise error when  class   sklearn model selection LeaveOneOut  used in    cv   matching what would happen if  KFold n splits n samples   was used     pr  29545  by  user  Lucy Liu  lucyleeow     mod  sklearn compose                             Fix  Fixed  class  compose TransformedTargetRegressor  not to raise  UserWarning  if   transform output is set to  pandas  or  polars   since it isn t a transformer     pr  29401  by  user  Stefanie Senger  StefanieSenger      mod  sklearn decomposition                                   Fix  Increase rank defficiency threshold in the whitening step of    class  decomposition FastICA  with  whiten solver  eigh   to improve the   platform agnosticity of the estimator     pr  29612  by  user  Olivier Grisel  ogrisel      mod  sklearn metrics                             Fix  Fix a regression in  func  metrics accuracy score  and in    func  metrics zero one loss  causing an error for Array API dispatch with multilabel   inputs     pr  29336  by  user  Edoardo Abati  EdAbati      mod  sklearn svm                         Fix  Fixed a regression in  class  svm SVC  and  class  svm SVR  such that we accept    C float  inf        pr  29780  by  user  Guillaume Lemaitre  glemaitre         changes 1 5 1   Version 1 5 1                  July 2024    Changes impacting many modules                                    Fix  Fixed a regression in the validation of the input data of all estimators where   an unexpected error was raised when passing a DataFrame backed by a read only buffer     pr  29018  by  user  J r mie du Boisberranger  jeremiedbb        Fix  Fixed a regression causing a dead lock at import time in some settings     pr  29235  by  user  J r mie du Boisberranger  jeremiedbb     Changelog             mod  sklearn compose                             Efficiency  Fix a performance regression in  class  compose ColumnTransformer    where the full input data was copied for each transformer when  n jobs   1      pr  29330  by  user  J r mie du Boisberranger  jeremiedbb      mod  sklearn metrics                             Fix  Fix a regression in  func  metrics r2 score   Passing torch CPU tensors   with array API dispatched disabled would complain about non CPU devices   instead of implicitly converting those inputs as regular NumPy arrays     pr  29119  by  user  Olivier Grisel       Fix  Fix a regression in    func  metrics zero one loss  causing an error for Array API dispatch with multilabel   inputs     pr  29269  by  user  Yaroslav Korobko  Tialo      mod  sklearn model selection                                     Fix  Fix a regression in  class  model selection GridSearchCV  for parameter   grids that have heterogeneous parameter values     pr  29078  by  user  Lo c Est ve  lesteve        Fix  Fix a regression in  class  model selection GridSearchCV  for parameter   grids that have estimators as parameter values     pr  29179  by  user  Marco Gorelli MarcoGorelli        Fix  Fix a regression in  class  model selection GridSearchCV  for parameter   grids that have arrays of different sizes as parameter values     pr  29314  by  user  Marco Gorelli MarcoGorelli      mod  sklearn tree                          Fix  Fix an issue in  func  tree export graphviz  and  func  tree plot tree    that could potentially result in exception or wrong results on 32bit OSes     pr  29327  by  user  Lo c Est ve lesteve      mod  sklearn utils                           API   func  utils validation check array  has a new parameter   force writeable   to   control the writeability of the output array  If set to  True   the output array will   be guaranteed to be writeable and a copy will be made if the input array is read only    If set to  False   no guarantee is made about the writeability of the output array     pr  29018  by  user  J r mie du Boisberranger  jeremiedbb         changes 1 5   Version 1 5 0                  May 2024    Security              Fix   class  feature extraction text CountVectorizer  and    class  feature extraction text TfidfVectorizer  no longer store discarded   tokens from the training set in their  stop words   attribute  This attribute   would hold too frequent  above  max df   but also too rare tokens  below    min df    This fixes a potential security issue  data leak  if the discarded   rare tokens hold sensitive information from the training set without the   model developer s knowledge     Note  users of those classes are encouraged to either retrain their pipelines   with the new scikit learn version or to manually clear the  stop words     attribute from previously trained instances of those transformers  This   attribute was designed only for model inspection purposes and has no impact   on the behavior of the transformers     pr  28823  by  user  Olivier Grisel  ogrisel     Changed models                    Efficiency  The subsampling in  class  preprocessing QuantileTransformer  is now   more efficient for dense arrays but the fitted quantiles and the results of    transform  may be slightly different than before  keeping the same statistical   properties      pr  27344  by  user  Xuefeng Xu  xuefeng xu        Enhancement   class  decomposition PCA    class  decomposition SparsePCA    and  class  decomposition TruncatedSVD  now set the sign of the  components     attribute based on the component values instead of using the transformed data   as reference  This change is needed to be able to offer consistent component   signs across all  PCA  solvers  including the new    svd solver  covariance eigh   option introduced in this release   Changes impacting many modules                                    Fix  Raise  ValueError  with an informative error message when passing 1D   sparse arrays to methods that expect 2D sparse inputs     pr  28988  by  user  Olivier Grisel  ogrisel        API  The name of the input of the  inverse transform  method of estimators has been   standardized to  X   As a consequence   Xt  is deprecated and will be removed in   version 1 7 in the following estimators   class  cluster FeatureAgglomeration      class  decomposition MiniBatchNMF    class  decomposition NMF      class  model selection GridSearchCV    class  model selection RandomizedSearchCV      class  pipeline Pipeline  and  class  preprocessing KBinsDiscretizer      pr  28756  by  user  Will Dean  wd60622     Support for Array API                        Additional estimators and functions have been updated to include support for all  Array API  https   data apis org array api latest     compliant inputs   See  ref  array api  for more details     Functions        func  sklearn metrics r2 score  now supports Array API compliant inputs     pr  27904  by  user  Eric Lindgren  elindgren     user  Franck Charras  fcharras       user  Olivier Grisel  ogrisel   and  user  Tim Head  betatim       Classes        class  linear model Ridge  now supports the Array API for the  svd  solver    See  ref  array api  for more details     pr  27800  by  user  Franck Charras  fcharras     user  Olivier Grisel  ogrisel     and  user  Tim Head  betatim     Support for building with Meson                                  From scikit learn 1 5 onwards  Meson is the main supported way to build scikit learn  see  ref  Building from source  install bleeding edge   for more details   Unless we discover a major blocker  setuptools support will be dropped in scikit learn 1 6  The 1 5 x releases will support building scikit learn with setuptools   Meson support for building scikit learn was added in  pr  28040  by  user  Lo c Est ve  lesteve    Metadata Routing                   The following models now support metadata routing in one or more or their methods  Refer to the  ref  Metadata Routing User Guide  metadata routing   for more details      Feature   class  impute IterativeImputer  now supports metadata routing in   its  fit  method   pr  28187  by  user  Stefanie Senger  StefanieSenger        Feature   class  ensemble BaggingClassifier  and  class  ensemble BaggingRegressor    now support metadata routing  The fit methods now   accept     fit params   which are passed to the underlying estimators   via their  fit  methods     pr  28432  by  user  Adam Li  adam2392   and    user  Benjamin Bossan  BenjaminBossan        Feature   class  linear model RidgeCV  and    class  linear model RidgeClassifierCV  now support metadata routing in   their  fit  method and route metadata to the underlying    class  model selection GridSearchCV  object or the underlying scorer     pr  27560  by  user  Omar Salman  OmarManzoor        Feature   class  GraphicalLassoCV  now supports metadata routing in it s    fit  method and routes metadata to the CV splitter     pr  27566  by  user  Omar Salman  OmarManzoor        Feature   class  linear model RANSACRegressor  now supports metadata routing   in its   fit      score   and   predict   methods and route metadata to its   underlying estimator s    fit      score   and   predict   methods     pr  28261  by  user  Stefanie Senger  StefanieSenger        Feature   class  ensemble VotingClassifier  and    class  ensemble VotingRegressor  now support metadata routing and pass       fit params   to the underlying estimators via their  fit  methods     pr  27584  by  user  Stefanie Senger  StefanieSenger        Feature   class  pipeline FeatureUnion  now supports metadata routing in its     fit   and   fit transform   methods and route metadata to the underlying   transformers    fit   and   fit transform       pr  28205  by  user  Stefanie Senger  StefanieSenger        Fix  Fix an issue when resolving default routing requests set via class   attributes     pr  28435  by  Adrin Jalali        Fix  Fix an issue when  set  method  request  methods are used as unbound   methods  which can happen if one tries to decorate them     pr  28651  by  Adrin Jalali        FIX  Prevent a  RecursionError  when estimators with the default  scoring    param   None   route metadata     pr  28712  by  user  Stefanie Senger  StefanieSenger     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 123455 is the  pull request  number  not the issue number    mod  sklearn calibration                                 Fix  Fixed a regression in  class  calibration CalibratedClassifierCV  where   an error was wrongly raised with string targets     pr  28843  by  user  J r mie du Boisberranger  jeremiedbb      mod  sklearn cluster                             Fix  The  class  cluster MeanShift  class now properly converges for constant data     pr  28951  by  user  Akihiro Kuno  akikuno        FIX  Create copy of precomputed sparse matrix within the  fit  method of    class   cluster OPTICS  to avoid in place modification of the sparse matrix     pr  28491  by  user  Thanh Lam Dang  lamdang2k        Fix   class  cluster HDBSCAN  now supports all metrics supported by    func  sklearn metrics pairwise distances  when  algorithm  brute   or   auto       pr  28664  by  user  Manideep Yenugula  myenugula      mod  sklearn compose                             Feature  A fitted  class  compose ColumnTransformer  now implements    getitem      which returns the fitted transformers by name   pr  27990  by  Thomas Fan        Enhancement   class  compose TransformedTargetRegressor  now raises an error in  fit    if only  inverse func  is provided without  func   that would default to identity    being explicitly set as well     pr  28483  by  user  Stefanie Senger  StefanieSenger        Enhancement   class  compose ColumnTransformer  can now expose the  remainder    columns in the fitted  transformers   attribute as column names or boolean   masks  rather than column indices     pr  27657  by  user  J r me Dock s  jeromedockes        Fix  Fixed an bug in  class  compose ColumnTransformer  with  n jobs   1   where the   intermediate selected columns were passed to the transformers as read only arrays     pr  28822  by  user  J r mie du Boisberranger  jeremiedbb      mod  sklearn cross decomposition                                         Fix  The  coef   fitted attribute of  class  cross decomposition PLSRegression    now takes into account both the scale of  X  and  Y  when  scale True   Note that   the previous predicted values were not affected by this bug     pr  28612  by  user  Guillaume Lemaitre  glemaitre        API  Deprecates  Y  in favor of  y  in the methods fit  transform and   inverse transform of     class  cross decomposition PLSRegression      class  cross decomposition PLSCanonical      class  cross decomposition CCA     and  class  cross decomposition PLSSVD      Y  will be removed in version 1 7     pr  28604  by  user  David Leon  davidleon123      mod  sklearn datasets                              Enhancement  Adds optional arguments  n retries  and  delay  to functions    func  datasets fetch 20newsgroups      func  datasets fetch 20newsgroups vectorized      func  datasets fetch california housing      func  datasets fetch covtype      func  datasets fetch kddcup99      func  datasets fetch lfw pairs      func  datasets fetch lfw people      func  datasets fetch olivetti faces      func  datasets fetch rcv1     and  func  datasets fetch species distributions     By default  the functions will retry up to 3 times in case of network failures     pr  28160  by  user  Zhehao Liu  MaxwellLZH   and    user  Filip Karlo Do ilovi   fkdosilovic      mod  sklearn decomposition                                   Efficiency   class  decomposition PCA  with  svd solver  full   now assigns   a contiguous  components   attribute instead of an non contiguous slice of   the singular vectors  When  n components    n features   this can save some   memory and  more importantly  help speed up subsequent calls to the  transform    method by more than an order of magnitude by leveraging cache locality of   BLAS GEMM on contiguous arrays     pr  27491  by  user  Olivier Grisel  ogrisel        Enhancement   class   decomposition PCA  now automatically selects the ARPACK solver   for sparse inputs when  svd solver  auto   instead of raising an error     pr  28498  by  user  Thanh Lam Dang  lamdang2k        Enhancement   class  decomposition PCA  now supports a new solver option   named  svd solver  covariance eigh   which offers an order of magnitude   speed up and reduced memory usage for datasets with a large number of data   points and a small number of features  say   n samples    1000     n features    The  svd solver  auto   option has been updated to use the new   solver automatically for such datasets  This solver also accepts sparse input   data     pr  27491  by  user  Olivier Grisel  ogrisel        Fix   class  decomposition PCA  fit with  svd solver  arpack       whiten True  and a value for  n components  that is larger than the rank of   the training set  no longer returns infinite values when transforming   hold out data     pr  27491  by  user  Olivier Grisel  ogrisel      mod  sklearn dummy                           Enhancement   class  dummy DummyClassifier  and  class  dummy DummyRegressor  now   have the  n features in   and  feature names in   attributes after  fit      pr  27937  by  user  Marco vd Boom  tvdboom      mod  sklearn ensemble                              Efficiency  Improves runtime of  predict  of    class  ensemble HistGradientBoostingClassifier  by avoiding to call  predict proba      pr  27844  by  user  Christian Lorentzen  lorentzenchr        Efficiency   class  ensemble HistGradientBoostingClassifier  and    class  ensemble HistGradientBoostingRegressor  are now a tiny bit faster by   pre sorting the data before finding the thresholds for binning     pr  28102  by  user  Christian Lorentzen  lorentzenchr        Fix  Fixes a bug in  class  ensemble HistGradientBoostingClassifier  and    class  ensemble HistGradientBoostingRegressor  when  monotonic cst  is specified   for non categorical features     pr  28925  by  user  Xiao Yuan  yuanx749      mod  sklearn feature extraction                                        Efficiency   class  feature extraction text TfidfTransformer  is now faster   and more memory efficient by using a NumPy vector instead of a sparse matrix   for storing the inverse document frequency     pr  18843  by  user  Paolo Montesel  thebabush        Enhancement   class  feature extraction text TfidfTransformer  now preserves   the data type of the input matrix if it is  np float64  or  np float32      pr  28136  by  user  Guillaume Lemaitre  glemaitre      mod  sklearn feature selection                                       Enhancement   func  feature selection mutual info regression  and    func  feature selection mutual info classif  now support  n jobs  parameter     pr  28085  by  user  Neto Menoci  netomenoci   and    user  Florin Andrei  FlorinAndrei        Enhancement  The  cv results   attribute of  class  feature selection RFECV  has   a new key   n features   containing an array with the number of features selected   at each step     pr  28670  by  user  Miguel Silva  miguelcsilva      mod  sklearn impute                            Enhancement   class  impute SimpleImputer  now supports custom strategies   by passing a function in place of a strategy name     pr  28053  by  user  Mark Elliot  mark thm      mod  sklearn inspection                                Fix   meth  inspection DecisionBoundaryDisplay from estimator  no longer   warns about missing feature names when provided a  polars DataFrame      pr  28718  by  user  Patrick Wang  patrickkwang      mod  sklearn linear model                                  Enhancement  Solver   newton cg   in  class  linear model LogisticRegression  and    class  linear model LogisticRegressionCV  now emits information when  verbose  is   set to positive values     pr  27526  by  user  Christian Lorentzen  lorentzenchr        Fix   class  linear model ElasticNet    class  linear model ElasticNetCV      class  linear model Lasso  and  class  linear model LassoCV  now explicitly don t   accept large sparse data formats     pr  27576  by  user  Stefanie Senger  StefanieSenger        Fix   class  linear model RidgeCV  and  class  RidgeClassifierCV  correctly pass    sample weight  to the underlying scorer when  cv  is None     pr  27560  by  user  Omar Salman  OmarManzoor        Fix   n nonzero coefs   attribute in  class  linear model OrthogonalMatchingPursuit    will now always be  None  when  tol  is set  as  n nonzero coefs  is ignored in   this case   pr  28557  by  user  Lucy Liu  lucyleeow        API   class  linear model RidgeCV  and  class  linear model RidgeClassifierCV    will now allow  alpha 0  when  cv    None   which is consistent with    class  linear model Ridge  and  class  linear model RidgeClassifier      pr  28425  by  user  Lucy Liu  lucyleeow        API  Passing  average 0  to disable averaging is deprecated in    class  linear model PassiveAggressiveClassifier      class  linear model PassiveAggressiveRegressor      class  linear model SGDClassifier    class  linear model SGDRegressor  and    class  linear model SGDOneClassSVM   Pass  average False  instead     pr  28582  by  user  J r mie du Boisberranger  jeremiedbb        API  Parameter  multi class  was deprecated in    class  linear model LogisticRegression  and    class  linear model LogisticRegressionCV    multi class  will be removed in 1 7    and internally  for 3 and more classes  it will always use multinomial    If you still want to use the one vs rest scheme  you can use    OneVsRestClassifier LogisticRegression           pr  28703  by  user  Christian Lorentzen  lorentzenchr        API   store cv values  and  cv values   are deprecated in favor of    store cv results  and  cv results   in   linear model RidgeCV  and     linear model RidgeClassifierCV      pr  28915  by  user  Lucy Liu  lucyleeow      mod  sklearn manifold                              API  Deprecates  n iter  in favor of  max iter  in  class  manifold TSNE      n iter  will be removed in version 1 7  This makes  class  manifold TSNE    consistent with the rest of the estimators   pr  28471  by    user  Lucy Liu  lucyleeow     mod  sklearn metrics                             Feature   func  metrics pairwise distances  accepts calculating pairwise distances   for non numeric arrays as well  This is supported through custom metrics only     pr  27456  by  user  Venkatachalam N  venkyyuvy     user  Kshitij Mathur  Kshitij68     and  user  Julian Libiseller Egger  julibeg        Feature   func  sklearn metrics check scoring  now returns a multi metric scorer   when  scoring  as a  dict    set    tuple   or  list    pr  28360  by  Thomas Fan        Feature   func  metrics d2 log loss score  has been added which   calculates the D 2 score for the log loss     pr  28351  by  user  Omar Salman  OmarManzoor        Efficiency  Improve efficiency of functions  func   metrics brier score loss      func   calibration calibration curve    func   metrics det curve      func   metrics precision recall curve      func   metrics roc curve  when  pos label  argument is specified    Also improve efficiency of methods  from estimator    and  from predictions  in  class   metrics RocCurveDisplay      class   metrics PrecisionRecallDisplay    class   metrics DetCurveDisplay      class   calibration CalibrationDisplay      pr  28051  by  user  Pierre de Fr minville  pidefrem        Fix  class  metrics classification report  now shows only accuracy and not   micro average when input is a subset of labels     pr  28399  by  user  Vineet Joshi  vjoshi253        Fix  Fix OpenBLAS 0 3 26 dead lock on Windows in pairwise distances   computation  This is likely to affect neighbor based algorithms     pr  28692  by  user  Lo c Est ve  lesteve        API   func  metrics precision recall curve  deprecated the keyword argument    probas pred  in favor of  y score    probas pred  will be removed in version 1 7     pr  28092  by  user  Adam Li  adam2392        API   func  metrics brier score loss  deprecated the keyword argument  y prob    in favor of  y proba    y prob  will be removed in version 1 7     pr  28092  by  user  Adam Li  adam2392        API  For classifiers and classification metrics  labels encoded as bytes   is deprecated and will raise an error in v1 7     pr  18555  by  user  Kaushik Amar Das  cozek      mod  sklearn mixture                             Fix  The  converged   attribute of  class  mixture GaussianMixture  and    class  mixture BayesianGaussianMixture  now reflects the convergence status of   the best fit whereas it was previously  True  if any of the fits converged     pr  26837  by  user  Krsto Prorokovi   krstopro      mod  sklearn model selection                                     MajorFeature   class  model selection TunedThresholdClassifierCV  finds   the decision threshold of a binary classifier that maximizes a   classification metric through cross validation     class  model selection FixedThresholdClassifier  is an alternative when one wants   to use a fixed decision threshold without any tuning scheme     pr  26120  by  user  Guillaume Lemaitre  glemaitre        Enhancement   term  CV splitters  CV splitter   that ignores the group parameter now   raises a warning when groups are passed in to  term  split    pr  28210  by    Thomas Fan        Enhancement  The HTML diagram representation of    class   model selection GridSearchCV      class   model selection RandomizedSearchCV      class   model selection HalvingGridSearchCV   and    class   model selection HalvingRandomSearchCV  will show the best estimator when    refit True    pr  28722  by  user  Yao Xiao  Charlie XIAO   and  Thomas Fan        Fix  the   cv results    attribute  of  class  model selection GridSearchCV   now   returns masked arrays of the appropriate NumPy dtype  as opposed to always returning   dtype   object     pr  28352  by  user  Marco Gorelli MarcoGorelli        Fix   func  model selection train test split  works with Array API inputs    Previously indexing was not handled correctly leading to exceptions when using strict   implementations of the Array API like CuPY     pr  28407  by  user  Tim Head  betatim      mod  sklearn multioutput                                 Enhancement   chain method  parameter added to  class  multioutput ClassifierChain      pr  27700  by  user  Lucy Liu  lucyleeow      mod  sklearn neighbors                               Fix  Fixes  class  neighbors NeighborhoodComponentsAnalysis  such that    get feature names out  returns the correct number of feature names     pr  28306  by  user  Brendan Lu  brendanlu      mod  sklearn pipeline                              Feature   class  pipeline FeatureUnion  can now use the    verbose feature names out  attribute  If  True    get feature names out    will prefix all feature names with the name of the transformer   that generated that feature  If  False    get feature names out  will not   prefix any feature names and will error if feature names are not unique     pr  25991  by  user  Jiawei Zhang  jiawei zhang a      mod  sklearn preprocessing                                   Enhancement   class  preprocessing QuantileTransformer  and    func  preprocessing quantile transform  now supports disabling   subsampling explicitly     pr  27636  by  user  Ralph Urlus  rurlus      mod  sklearn tree                          Enhancement  Plotting trees in matplotlib via  func  tree plot tree  now   show a  True False  label to indicate the directionality the samples traverse   given the split condition     pr  28552  by  user  Adam Li  adam2392      mod  sklearn utils                           Fix   func   utils  safe indexing  now works correctly for polars DataFrame when    axis 0  and supports indexing polars Series     pr  28521  by  user  Yao Xiao  Charlie XIAO        API   data  utils IS PYPY  is deprecated and will be removed in version 1 7     pr  28768  by  user  J r mie du Boisberranger  jeremiedbb        API   func  utils tosequence  is deprecated and will be removed in version 1 7     pr  28763  by  user  J r mie du Boisberranger  jeremiedbb        API   class  utils parallel backend  and  func  utils register parallel backend  are   deprecated and will be removed in version 1 7  Use  joblib parallel backend  and    joblib register parallel backend  instead     pr  28847  by  user  J r mie du Boisberranger  jeremiedbb        API  Raise informative warning message in  func   utils multiclass type of target    when represented as bytes  For classifiers and classification metrics  labels encoded   as bytes is deprecated and will raise an error in v1 7     pr  18555  by  user  Kaushik Amar Das  cozek        API   func  utils estimator checks check estimator sparse data  was split into two   functions   func  utils estimator checks check estimator sparse matrix  and    func  utils estimator checks check estimator sparse array      pr  27576  by  user  Stefanie Senger  StefanieSenger        rubric   Code and documentation contributors  Thanks to everyone who has contributed to the maintenance and improvement of the project since version 1 4  including   101AlexMartin  Abdulaziz Aloqeely  Adam J  Stewart  Adam Li  Adarsh Wase  Adeyemi Biola  Aditi Juneja  Adrin Jalali  Advik Sinha  Aisha  Akash Srivastava  Akihiro Kuno  Alan Guedes  Alberto Torres  Alexis IMBERT  alexqiao  Ana Paula Gomes  Anderson Nelson  Andrei Dzis  Arif Qodari  Arnaud Capitaine  Arturo Amor  Aswathavicky  Audrey Flanders  awwwyan  baggiponte  Bharat Raghunathan  bme git  brdav  Brendan Lu  Brigitta Sip cz  Bruno  Cailean Carter  Cemlyn  Christian Lorentzen  Christian Veenhuis  Cindy Liang  Claudio Salvatore Arcidiacono  Connor Boyle  Conrad Stevens  crispinlogan  David Matthew Cherney  Davide Chicco  davidleon123  dependabot bot   DerWeh  dinga92  Dipan Banik  Drew Craeton  Duarte S o Jos   DUONG  Eddie Bergman  Edoardo Abati  Egehan Gunduz  Emad Izadifar  EmilyXinyi  Erich Schubert  Evelyn  Filip Karlo Do ilovi   Franck Charras  Gael Varoquaux  G n l Ayc   Guillaume Lemaitre  Gyeongjae Choi  Harmanan Kohli  Hong Xiang Yue  Ian Faust  Ilya Komarov  itsaphel  Ivan Wiryadi  Jack Bowyer  Javier Marin Tur  J r mie du Boisberranger  J r me Dock s  Jiawei Zhang  Jo o Morais  Joe Cainey  Joel Nothman  Johanna Bayer  John Cant  John Enblom  John Hopfensperger  jpcars  jpienaar tuks  Julian Chan  Julian Libiseller Egger  Julien Jerphanion  KanchiMoe  Kaushik Amar Das  keyber  Koustav Ghosh  kraktus  Krsto Prorokovi   Lars  ldwy4  LeoGrin  lihaitao  Linus Sommer  Loic Esteve  Lucy Liu  Lukas Geiger  m maggi  manasimj  Manuel Labb   Manuel Morales  Marco Edward Gorelli  Marco Wolsza  Maren Westermann  Marija Vlajic  Mark Elliot  Martin Helm  Mateusz Sok    mathurinm  Mavs  Michael Dawson  Michael Higgins  Michael Mayer  miguelcsilva  Miki Watanabe  Mohammed Hamdy  myenugula  Nathan Goldbaum  Naziya Mahimkar  nbrown ScottLogic  Neto  Nithish Bolleddula  notPlancha  Olivier Grisel  Omar Salman  ParsifalXu  Patrick Wang  Pierre de Fr minville  Piotr  Priyank Shroff  Priyansh Gupta  Priyash Shah  Puneeth K  Rahil Parikh  raisadz  Raj Pulapakura  Ralf Gommers  Ralph Urlus  Randolf Scholz  renaissance0ne  Reshama Shaikh  Richard Barnes  Robert Pollak  Roberto Rosati  Rodrigo Romero  rwelsch427  Saad Mahmood  Salim Dohri  Sandip Dutta  SarahRemus  scikit learn bot  Shaharyar Choudhry  Shubham  sperret6  Stefanie Senger  Steffen Schneider  Suha Siddiqui  Thanh Lam DANG  thebabush  Thomas  Thomas J  Fan  Thomas Lazarus  Tialo  Tim Head  Tuhin Sharma  Tushar Parimi  VarunChaduvula  Vineet Joshi  virchan  Wa l Boukhobza  Weyb  Will Dean  Xavier Beltran  Xiao Yuan  Xuefeng Xu  Yao Xiao  yareyaredesuyo  Ziad Amerr   t p n Sr e