版本 1.5#

有关本次发布主要亮点简要描述,请参阅 scikit-learn 1.5 版本发布亮点

Legend for changelogs

  • Major Feature something big that you couldn’t do before.

  • Feature something that you couldn’t do before.

  • Efficiency an existing feature now may not require as much computation or memory.

  • Enhancement a miscellaneous minor improvement.

  • Fix something that previously didn’t work as documented – or according to reasonable expectations – should now work.

  • API Change you will need to change your code to have the same effect in the future; or a feature will be removed in the future.

版本 1.5.1#

2024年7月

影响多个模块的变更#

  • Fix 修复了所有估计器输入数据验证中的一个回归问题,当传递由只读缓冲区支持的DataFrame时,会引发意外错误。 #29018Jérémie du Boisberranger 贡献。

  • Fix 修复了在某些设置下导入时导致死锁的一个回归问题。 #29235Jérémie du Boisberranger 贡献。

变更日志#

sklearn.compose#

sklearn.metrics#

sklearn.model_selection#

sklearn.tree#

sklearn.utils#

  • API Change utils.validation.check_array 新增了一个参数 force_writeable ,用于控制输出数组的可写性。如果设置为 True ,输出数组将被保证为可写的,如果输入数组是只读的,则会进行复制。如果设置为 False ,则不对输出数组的可写性做出保证。 #29018Jérémie du Boisberranger 提交。

版本 1.5.0#

2024年5月

安全性#

  • Fix feature_extraction.text.CountVectorizerfeature_extraction.text.TfidfVectorizer 不再在其 stop_words_ 属性中存储训练集中丢弃的标记。该属性会包含过于频繁(超过 max_df )但同时也过于稀有(低于 min_df )的标记。这修复了一个潜在的安全问题(数据泄露),如果丢弃的稀有标记包含训练集中的敏感信息,而模型开发者并不知情。

    注意:鼓励这些类的用户使用新版本的 scikit-learn 重新训练他们的管道,或者手动清除之前训练的这些转换器实例中的 stop_words_ 属性。该属性仅设计用于模型检查目的,对转换器的行为没有影响。

#28823Olivier Grisel 提交。

更改的模型#

  • Efficiency preprocessing.QuantileTransformer 中的子采样现在对密集数组更有效,但拟合的分位数和 transform 的结果可能与之前略有不同(保持相同的统计特性)。 #27344Xuefeng Xu 提交。

  • Enhancement decomposition.PCAdecomposition.SparsePCAdecomposition.TruncatedSVD 现在根据组件值而不是使用转换后的数据作为参考来设置 components_ 属性的符号。这一更改是为了能够在所有 PCA 求解器中提供一致的组件符号,包括在此版本中引入的新选项 svd_solver="covariance_eigh"

影响许多模块的更改#

对数组 API 的支持#

已更新额外的估计器和函数,以包括对所有 Array API 兼容输入的支持。

详情请参阅 数组 API 支持(实验性)

函数:

#27904Eric Lindgren , Franck Charras , Olivier GriselTim Head 贡献。

类:

使用 Meson 构建的支持#

从 scikit-learn 1.5 开始,Meson 是构建 scikit-learn 的主要支持方式, 更多详情请参见 从源代码构建

除非我们发现重大障碍,否则将在 scikit-learn 1.6 中放弃对 setuptools 的支持。 1.5.x 版本将支持使用 setuptools 构建 scikit-learn。

Meson 支持构建 scikit-learn 是在 #28040 中由 Loïc Estève 添加的。

元数据路由#

以下模型现在在其一个或多个方法中支持元数据路由。 更多详情请参见 元数据路由用户指南

变更日志#

sklearn.calibration#

sklearn.cluster#

sklearn.compose#

sklearn.cross_decomposition#

现在在 scale=True 时同时考虑了 XY 的尺度。请注意,先前预测的值并未受到此错误的影响。 #28612Guillaume Lemaitre 提交。

sklearn.datasets#

sklearn.decomposition#

  • Efficiency 使用 svd_solver="full"decomposition.PCA 现在分配了一个连续的 components_ 属性,而不是非连续的奇异向量切片。当 n_components << n_features 时,这可以节省一些内存,更重要的是,通过利用连续数组的 BLAS GEMM 缓存局部性,可以加快后续 transform 方法的调用速度一个数量级以上。 #27491Olivier Grisel 提交。

  • Enhancement PCA 现在在 svd_solver="auto" 时自动选择 ARPACK 求解器以处理稀疏输入,而不是引发错误。 #28498Thanh Lam Dang 贡献。

  • Enhancement decomposition.PCA 现在支持一个新的求解器选项 svd_solver="covariance_eigh" , 对于数据点数量多而特征数量少的(例如 n_samples >> 1000 > n_features )数据集, 该选项提供了数量级的速度提升和内存使用减少。 svd_solver="auto" 选项已更新, 对于此类数据集会自动使用新求解器。此求解器还接受稀疏输入数据。 #27491Olivier Grisel 贡献。

  • Fix decomposition.PCAsvd_solver="arpack"whiten=Truen_components 值大于训练集秩的情况下,对保留数据进行转换时不再返回无限值。 #27491Olivier Grisel 贡献。

sklearn.dummy#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.impute#

sklearn.inspection#

sklearn.linear_model#

sklearn.manifold#

  • API Changemanifold.TSNE 中弃用 n_iter ,取而代之的是 max_iter

n_iter 将在版本 1.7 中移除。这使得 manifold.TSNE 与其他估计器保持一致。#28471Lucy Liu 提交。

sklearn.metrics#

sklearn.mixture#

sklearn.model_selection#

sklearn.multioutput#

sklearn.neighbors#

sklearn.pipeline#

  • Feature pipeline.FeatureUnion 现在可以使用 verbose_feature_names_out 属性。如果为 Trueget_feature_names_out 将在所有特征名称前加上生成该特征的转换器的名称。如果为 Falseget_feature_names_out 将不会为任何特征名称添加前缀,并且在特征名称不唯一时会报错。 #25991Jiawei Zhang 贡献。

sklearn.preprocessing#

sklearn.tree#

  • Enhancement 通过 tree.plot_tree 在 matplotlib 中绘制树时,现在会显示 “True/False” 标签, 以指示样本在给定分割条件下遍历的方向。 #28552Adam Li 贡献。

sklearn.utils#

  • Fix _safe_indexing 现在可以正确处理 axis=0 时的 polars DataFrame, 并支持对 polars Series 进行索引。 #28521Yao Xiao 贡献。

  • API Change utils.IS_PYPY 已被弃用,并将在版本 1.7 中移除。

#28768Jérémie du Boisberranger 提交。

代码和文档贡献者

感谢自版本 1.4 以来为项目的维护和改进做出贡献的每一个人,包括:

101AlexMartin, Abdulaziz Aloqeely, Adam J. Stewart, Adam Li, Adarsh Wase, Adrin Jalali, Advik Sinha, Akash Srivastava, Akihiro Kuno, Alan Guedes, Alexis IMBERT, Ana Paula Gomes, Anderson Nelson, Andrei Dzis, Arnaud Capitaine, Arturo Amor, Aswathavicky, Bharat Raghunathan, Brendan Lu, Bruno, Cemlyn, Christian Lorentzen, Christian Veenhuis, Cindy Liang, Claudio Salvatore Arcidiacono, Connor Boyle, Conrad Stevens, crispinlogan, davidleon123, DerWeh, Dipan Banik, Duarte São José, DUONG, Eddie Bergman, Edoardo Abati, Egehan Gunduz, Emad Izadifar, Erich Schubert, Filip Karlo Došilović, Franck Charras, Gael Varoquaux, Gönül Aycı, Guillaume Lemaitre, Gyeongjae Choi, Harmanan Kohli, Hong Xiang Yue, Ian Faust, itsaphel, Ivan Wiryadi, Jack Bowyer, Javier Marin Tur, Jérémie du Boisberranger, Jérôme Dockès, Jiawei Zhang, Joel Nothman, Johanna Bayer, John Cant, John Hopfensperger, jpcars, jpienaar-tuks, Julian Libiseller-Egger, Julien Jerphanion, KanchiMoe, Kaushik Amar Das, keyber, Koustav Ghosh, kraktus, Krsto Proroković, ldwy4, LeoGrin, lihaitao, Linus Sommer, Loic Esteve, Lucy Liu, Lukas Geiger, manasimj, Manuel Labbé, Manuel Morales, Marco Edward Gorelli, Maren Westermann, Marija Vlajic, Mark Elliot, Mateusz Sokół, Mavs, Michael Higgins, Michael Mayer, miguelcsilva, Miki Watanabe, Mohammed Hamdy, myenugula, Nathan Goldbaum, Naziya Mahimkar, Neto, Olivier Grisel, Omar Salman, Patrick Wang, Pierre de Fréminville, Priyash Shah, Puneeth K, Rahil Parikh, raisadz, Raj Pulapakura, Ralf Gommers, Ralph Urlus, Randolf Scholz, Reshama Shaikh, Richard Barnes, Rodrigo Romero, Saad Mahmood, Salim Dohri, Sandip Dutta, SarahRemus, scikit-learn-bot, Shaharyar Choudhry, Shubham, sperret6, Stefanie Senger, Suha Siddiqui, Thanh Lam DANG, thebabush, Thomas J. Fan, Thomas Lazarus, Thomas Li, Tialo, Tim Head, Tuhin Sharma, VarunChaduvula, Vineet Joshi, virchan, Waël Boukhobza, Weyb, Will Dean, Xavier Beltran, Xiao Yuan, Xuefeng Xu, Yao Xiao