版本 1.8#

更新日志图例

  • 重大功能 以前无法实现的大功能。

  • 功能 以前无法实现的功能。

  • 效率提升 现有功能现在可能不需要那么多计算或内存。

  • 增强 一般性的小改进。

  • 修复 以前无法按文档或合理预期工作的问题现在应该可以了。

  • API 变更 未来你需要更改代码才能达到相同的效果;或者未来某个功能将被移除。

版本 1.8.0#

2025年12月

影响多个模块的变更#

  • 效率 提高了依赖加权百分位数估计器和度量函数的 CPU 和内存使用率,并更好地匹配 NumPy 和 Scipy(未加权)的百分位数实现。作者:Lucy Liu #31775

支持 Array API#

已更新其他估计器和函数以包含对所有 Array API 兼容输入的支持。

有关详细信息,请参阅 Array API 支持(实验性)

元数据路由#

有关更多详细信息,请参阅 元数据路由用户指南

  • 修复 修复了当启用元数据路由时,将 sample_weight 传递给 GridSearchCV 中的 Pipeline 会引发错误的问题。作者:Adrin Jalali#31898

支持 Free-threaded CPython 3.14#

scikit-learn 支持 free-threaded CPython,特别是我们的所有支持的平台在 Python 3.14 上都提供了 free-threaded wheel。

Free-threaded(也称为 nogil)CPython 是 CPython 的一个版本,它通过移除全局解释器锁 (GIL) 来实现高效的多线程用例。

如果您想尝试 free-threaded Python,建议使用 Python 3.14,它与 Python 3.13 相比修复了许多问题。请随时在您的用例中尝试 free-threaded 并报告任何问题!

有关 free-threaded CPython 的更多详细信息,请参阅 py-free-threading doc,特别是如何安装 free-threaded CPython生态系统兼容性跟踪

作者:Loïc EstèveOlivier Grisel 以及更广泛的 Scientific Python 和 CPython 生态系统中的许多其他人,例如 Nathan GoldbaumRalf GommersEdgar Andrés Margffoy Tuay#32079

sklearn.base#

sklearn.calibration#

sklearn.cluster#

sklearn.compose#

sklearn.covariance#

sklearn.decomposition#

sklearn.discriminant_analysis#

sklearn.ensemble#

sklearn.feature_selection#

sklearn.gaussian_process#

  • 效率return_covreturn_std 都为 False 时,使 GaussianProcessRegressor.predict 变得更快。作者:Rafael Ayllón Gavilán#31431

sklearn.linear_model#

sklearn.manifold#

sklearn.metrics#

sklearn.model_selection#

  • 增强 model_selection.StratifiedShuffleSplit 在引发 ValueError 时,如果任何类成员少于 2 个,将明确指出是哪些类导致了此问题。这有助于识别导致错误的类。作者:Marc Bresson #32265

    在引发 ValueError 时,model_selection.StratifiedShuffleSplit 将会指定哪些类

  • 修复 修复了 model_selection.StratifiedGroupKFold 中的 shuffle 行为。现在当 shuffle=True 时,跨折的分层也会被保留。作者:Pau Folch#32540

sklearn.multiclass#

  • 修复 修复了 multiclass.OneVsRestClassifier 中的 tie-breaking 行为,使其与 np.argmax 的 tie-breaking 行为保持一致。作者:Lakshmi Krishnan#15504

sklearn.naive_bayes#

  • 修复 naive_bayes.GaussianNB 会根据 X 的 dtype 来保留拟合属性的 dtype。作者:Omar Salman #32497

sklearn.preprocessing#

  • 增强 preprocessing.SplineTransformer 现在可以通过 handle_missing 参数来处理缺失值。作者:Stefanie Senger#28043

  • 增强 preprocessing.PowerTransformer 在逆变换(inverse_transform)时遇到 NaN 值时现在会发出警告,这通常是由极端偏斜的数据引起的。作者:Roberto Mourao #29307

  • 增强 preprocessing.MaxAbsScaler 现在可以通过 clip 参数来裁剪超出范围的持有数据值。作者:Hleb Levitski#31790

  • 修复 修复了 preprocessing.OneHotEncoder 中的一个 bug,该 bug 导致 handle_unknown='warn' 的行为与 'ignore' 类似,而不是 'infrequent_if_exist'。作者:Nithurshen #32592

sklearn.semi_supervised#

  • 修复 semi_supervised.LabelPropagation 中用户编写的核函数结果现在会被归一化,使得所有行和都等于 1,即使核函数给出不对称或非均匀的行和。作者:Dan Schult#31924

sklearn.tree#

  • 效率 带有 criterion="absolute_error"tree.DecisionTreeRegressor 现在运行速度快得多:复杂度为 O(n log n),而之前是 O(n^2),这使得它能够处理数百万甚至数亿个数据点。作者:Arthur Lacote #32100

  • 修复 使 tree.export_text 成为线程安全的。作者:Olivier Grisel#30041

  • 修复 如果提供的特征名称不是字符串,export_graphviz 现在会引发 ValueError。作者:Guilherme Peixoto #31036

  • 修复 带有 criterion="absolute_error"tree.DecisionTreeRegressor 有时会进行次优分割(即未最小化绝对误差的分割)。现在已修复。因此,重新训练树可能会产生略有不同的结果。作者:Arthur Lacote #32100

  • 修复 修复了 决策树 中几乎恒定特征处理不当的回归问题。作者:Sercan Turkmen#32259

  • 修复 修复了 tree.DecisionTree*(以及由此衍生的 ensemble.RandomForest*)中包含近乎恒定特征值和缺失值的节点在训练期间的分割逻辑。先前,如果找到恒定特征,即使可以根据缺失值进行更多分割,树也会过早停止。作者:Arthur Lacote #32274

  • 修复 修复了树(tree.DecisionTreeClassifiertree.DecisionTreeRegressortree.ExtraTreeClassifiertree.ExtraTreeRegressor)的 decision_path 方法中对缺失值的处理。作者:Arthur Lacote#32280

  • 修复 修复了包含缺失值的特征在决策树分割时的逻辑。在某些情况下,最后一个非缺失样本没有被正确分区。作者:Tim HeadArthur Lacote#32351

sklearn.utils#

  • 效率 函数 sklearn.utils.extmath.safe_sparse_dot 通过专用的 Cython 例程得到了改进,用于处理 a @ b 的情况,其中 a 是稀疏的二维数组,b 也是稀疏的二维数组,并且需要一个密集输出(即 dense_output=True)。这改进了 scikit-learn 中处理稀疏数组(或矩阵)的多个算法。作者:Christian Lorentzen#31952

  • 增强 所有 scikit-learn 估计器以及更普遍地继承自 base.BaseEstimator 的估计器的 HTML 表示中的参数表,现在将参数描述显示为工具提示,并且每个参数都有一个指向在线文档的链接。作者:Dea María Léon#31564

  • 增强 当提供的权重既不是标量也不是与输入数据大小相同的 1D 数组类型时,sklearn.utils._check_sample_weight 现在会引发更清晰的错误消息。作者:Kapil Parekh#31873

  • 增强 sklearn.utils.estimator_checks.parametrize_with_checks 现在允许您配置 xfailing 检查的严格模式。意外通过的测试将导致测试失败。默认行为保持不变。作者:Tim Head#31951

  • 增强 修复了 HTML 表示中“?”和“i”符号的对齐问题,并改进了估计器的 HTML 表示的颜色样式。作者:Guillaume Lemaitre#31969

  • 修复 更改了将估计器显示为 HTML 表示时选择颜色的方式。颜色不再适应用户的个性化主题,而是根据 VSCode 和 JupyterLab 中声明的主题颜色方案(浅色或深色)进行选择。如果主题未声明颜色方案,则根据页面的默认文本颜色选择方案,如果失败则回退到媒体查询。作者:Matt J.#32330

  • API 变更 utils.extmath.stable_cumsum 已弃用,将在 v1.10 中移除。请使用具有所需 dtype 的 np.cumulative_sum 代替。作者:Tiziano Zito#32258

代码和文档贡献者

感谢自 1.7 版本以来为项目的维护和改进做出贡献的所有人,包括

$id, 4hm3d, Acciaro Gennaro Daniele, achyuthan.s, Adam J. Stewart, Adriano Leão, Adrien Linares, Adrin Jalali, Aitsaid Azzedine Idir, Alexander Fabisch, Alexandre Abraham, Andrés H. Zapke, Anne Beyer, Anthony Gitter, AnthonyPrudent, antoinebaker, Arpan Mukherjee, Arthur, Arthur Lacote, Arturo Amor, ayoub.agouzoul, Ayrat, Ayush, Ayush Tanwar, Basile Jezequel, Bhavya Patwa, BRYANT MUSI BABILA, Casey Heath, Chems Ben, Christian Lorentzen, Christian Veenhuis, Christine P. Chai, cstec, C. Titus Brown, Daniel Herrera-Esposito, Dan Schult, dbXD320, Dea María Léon, Deepyaman Datta, dependabot[bot], Dhyey Findoriya, Dimitri Papadopoulos Orfanos, Dipak Dhangar, Dmitry Kobak, elenafillo, Elham Babaei, EmilyXinyi, Emily (Xinyi) Chen, Eugen-Bleck, Evgeni Burovski, fabarca, Fabrizio Damicelli, Faizan-Ul Huda, François Goupil, François Paugam, Gaetan, GaetandeCast, Gesa Loof, Gonçalo Guiomar, Gordon Grey, Gowtham Kumar K., Guilherme Peixoto, Guillaume Lemaitre, hakan çanakçı, Harshil Sanghvi, Henri Bonamy, Hleb Levitski, HulusiOzy, hvtruong, Ian Faust, Imad Saddik, Jérémie du Boisberranger, Jérôme Dockès, John Hendricks, Joris Van den Bossche, Josef Affourtit, Josh, jshn9515, Junaid, KALLA GANASEKHAR, Kapil Parekh, Kenneth Enevoldsen, Kian Eliasi, kostayScr, Krishnan Vignesh, kryggird, Kyle S, Lakshmi Krishnan, Leomax, Loic Esteve, Luca Bittarello, Lucas Colley, Lucy Liu, Luigi Giugliano, Luis, Mahdi Abid, Mahi Dhiman, Maitrey Talware, Mamduh Zabidi, Manikandan Gobalakrishnan, Marc Bresson, Marco Edward Gorelli, Marek Pokropiński, Maren Westermann, Marie Sacksick, Marija Vlajic, Matt J., Mayank Raj, Michael Burkhart, Michael Šimáček, Miguel Fernandes, Miro Hrončok, Mohamed DHIFALLAH, Muhammad Waseem, MUHAMMED SINAN D, Natalia Mokeeva, Nicholas Farr, Nicolas Bolle, Nicolas Hug, nithish-74, Nithurshen, Nitin Pratap Singh, NotAceNinja, Olivier Grisel, omahs, Omar Salman, Patrick Walsh, Peter Holzer, pfolch, ph-ll-pp, Prashant Bansal, Quan H. Nguyen, Radovenchyk, Rafael Ayllón Gavilán, Raghvender, Ranjodh Singh, Ravichandranayakar, Remi Gau, Reshama Shaikh, Richard Harris, RishiP2006, Ritvi Alagusankar, Roberto Mourao, Robert Pollak, Roshangoli, roychan, R Sagar Shresti, Sarthak Puri, saskra, scikit-learn-bot, Scott Huberty, Sercan Turkmen, Sergio P, Shashank S, Shaurya Bisht, Shivam, Shruti Nath, SIKAI ZHANG, sisird864, SiyuJin-1, S. M. Mohiuddin Khan Shiam, Somdutta Banerjee, sotagg, Sota Goto, Spencer Bradkin, Stefan, Stefanie Senger, Steffen Rehberg, Steven Hur, Success Moses, Sylvain Combettes, ThibaultDECO, Thomas J. Fan, Thomas Li, Thomas S., Tim Head, Tingwei Zhu, Tiziano Zito, TJ Norred, Username46786, Utsab Dahal, Vasanth K, Veghit, VirenPassi, Virgil Chan, Vivaan Nanavati, Xiao Yuan, xuzhang0327, Yaroslav Halchenko, Yaswanth Kumar, Zijun yi, zodchi94, Zubair Shakoor