版本 1.4#

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

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.4.2#

2024年4月

本次发布仅包括对 numpy 2 的支持。

版本 1.4.1#

2024年2月

更改的模型#

元数据路由#

DataFrame 支持#

  • Enhancement Fix 直接验证 Pandas 和 Polars 数据帧,无需鸭子类型检查。 #28195Thomas Fan 贡献。

影响多个模块的更改#

变更日志#

sklearn.calibration#

sklearn.cluster#

Yao Xiao .

sklearn.compose#

sklearn.ensemble#

  • Fix HistGradientBoostingClassifierHistGradientBoostingRegressor 在带有扩展数据类型(例如 pd.Int64Dtype )的`pandas``DataFrame 上拟合时。 :pr: 28385 :user: Loïc Estève <lesteve> `贡献。

  • Fix 修复了当目标为多标签或多类多输出格式时,:class:` ensemble.VotingClassifier 引发的错误消息。 :pr: 27702 :user: Guillaume Lemaitre <glemaitre> `贡献。

:mod:` sklearn.impute `#

  • Fix : :class:` impute.SimpleImputer 现在在 .fit .transform 中如果 fill_value 不能以 casting=’same_kind’ 转换为输入值的数据类型,则会引发错误。 :pr: 28365 :user: Leo Grinsztajn <LeoGrin> `贡献。

:mod:` sklearn.inspection `#

  • Fix :func:` inspection.permutation_importance 现在可以正确处理 sample_weight 与子采样(即 max_features < 1.0)。 :pr: 28184 :user: Michael Mayer <mayer79> `贡献。

:mod:` sklearn.linear_model `#

  • Fix :class:` linear_model.ARDRegression 现在可以处理 predict(X, return_std=True) pandas 输入类型。 :pr: 28377 :user: Eddie Bergman <eddiebergman> `贡献。

:mod:` sklearn.preprocessing `#

  • Fix 使 :class:` preprocessing.FunctionTransformer `更加宽松并覆盖

在以下情况下使用` get_feature_names_out 输出列名: (i) 输入和输出列名保持不变(在使用 NumPy ufunc 时发生); (ii) 输入列名为数字; (iii) 输出将设置为 Pandas Polars 数据框。 :pr: 28241 :user: Guillaume Lemaitre <glemaitre> `提交。

  • Fix :class:` preprocessing.FunctionTransformer 现在还会在调用 set_output 时发出警告, transform=”polars” func 未返回 Polars 数据框或未指定 feature_names_out ` 。 :pr:` 28263 :user: Guillaume Lemaitre <glemaitre> `提交。

  • Fix :class:` preprocessing.TargetEncoder target_type=”continuous” 且输入为只读时不再失败。 特别是,现在在启用 pandas copy-on-write 模式下也能正常工作。 :pr: 28233 :user: John Hopfensperger <s-banach> `提交。

:mod:` sklearn.tree `#

  • Fix :class:` tree.DecisionTreeClassifier :class: tree.DecisionTreeRegressor 现在能正确处理缺失值。 当数据中没有缺失值时,内部标准未初始化,导致可能出现错误的标准值。 :pr: 28295 :user: Guillaume Lemaitre <glemaitre> 提交, 以及 :pr: 28327 :user: Adam Li <adam2392> `提交。

:mod:` sklearn.utils `#

  • Enhancement Fix :func:` utils.metaestimators.available_if 现在会将 check 函数的错误作为 AttributeError 的原因重新抛出。 :pr: 28198 Thomas Fan `_ 提交。

  • Fix :func:` utils._safe_indexing 现在会在 X Python 列表且 axis=1 时引发 ValueError ` , 如文档字符串中所述。 :pr:` 28222 :user: Guillaume Lemaitre <glemaitre> `提交。

版本 1.4.0#

2024年1月

更改的模型#

以下估计器和函数,在相同数据和参数下拟合时,可能会产生与上一版本不同的模型。这通常 由于建模逻辑的变化(错误修复或增强),或随机抽样程序的变化,会发生这种情况。

  • Efficiency :class:` linear_model.LogisticRegression :class: linear_model.LogisticRegressionCV 现在对于求解器 “lbfgs” “newton-cg” 具有更好的收敛性。这两个求解器现在可以根据指定的 tol 达到更高的系数精度。此外,lbfgs 可以更好地利用 tol ` ,即更快停止或达到更高的精度。 注意:lbfgs 是默认求解器,因此这一变化可能会影响许多模型。这也意味着,使用这个新版本的 scikit-learn,对于这两个求解器(在相同数据上再次拟合时),模型的系数` coef_ 和截距 intercept_ 将会发生变化。变化的程度取决于指定的 tol ` ,对于较小的值,您将获得更精确的结果。 :pr:` 26721 :user: Christian Lorentzen <lorentzenchr> `贡献。

  • Fix 修复了在 PyPy 中使用 Cython 损失函数的估计器中出现的内存泄漏问题。 :pr:` 27670 :user: Guillaume Lemaitre <glemaitre> `贡献。

影响所有模块的变更#

  • Major Feature 转换器现在支持 polars 输出,使用` set_output(transform=”polars”) ` 。 :pr:` 27315 Thomas Fan `_ 贡献。

  • Enhancement 所有估计器现在可以识别任何采用

` DataFrame 交换协议 <https://data-apis.org/dataframe-protocol/latest/purpose_and_scope.html> __ 的数据框中的列名。预期通过 np.asarray(df) `返回正确表示的数据框可以与我们的估计器和函数一起工作。

:pr:` 26464 Thomas Fan `_ 贡献。

  • Enhancement 估计器的 HTML 表示现在包含指向文档的链接,并根据估计器是否拟合进行颜色编码(未拟合的估计器为橙色,已拟合的估计器为蓝色)。 :pr:` 26616 :user: Riccardo Cappuzzo <rcap107> `贡献。

:user:` Ines Ibnukhsein <Ines1999> , :user: Gael Varoquaux <GaelVaroquaux> , ` Joel Nothman `_ :user: Lilian Boulard <LilianBoulard> `.

  • Fix 修复了大多数估计器和函数中的一个错误,当将参数设置为 一个较大的整数时会导致` TypeError ` 。 :pr:` 26648 :user: Naoise Holohan <naoise-h> `提交。

元数据路由#

以下模型现在支持在其一个或多个方法中进行元数据路由。有关更多详细信息,请参阅 :ref:` Metadata Routing User Guide <metadata_routing> ` 。

  • Feature :class:` LarsCV :class: LassoLarsCV 现在支持在其 fit 方法中进行元数据 路由,并将元数据路由到 CV 分割器。 :pr: 27538 :user: Omar Salman <OmarManzoor> `提交。

  • Feature :class:` multiclass.OneVsRestClassifier , :class: multiclass.OneVsOneClassifier :class: multiclass.OutputCodeClassifier`现在支持在其 fitpartial_fit 方法中进行元数据路由, 并将元数据路由到底层估计器的 fitpartial_fit#27308Stefanie Senger 提交。

  • Feature pipeline.Pipeline 现在根据 metadata routing user guide 支持元数据路由。 #26789Adrin Jalali 提交。

  • Feature cross_validate , cross_val_score , 和 cross_val_predict 现在支持元数据路由。元数据被路由到估计器的 fit ,评分器, 以及 CV 分割器的 split 。元数据通过新的 params 参数接受。 fit_params 已弃用,将在版本 1.6 中移除。 groups 参数在启用元数据路由时不作为单独参数接受,应通过 params 参数传递。 #26896Adrin Jalali 提交。

  • Feature GridSearchCV , RandomizedSearchCV , HalvingGridSearchCV , 和

HalvingRandomSearchCV 现在支持在其 fitscore 方法中进行元数据路由,并将元数据路由到底层估计器的 fit 方法、CV 分割器和评分器。 #27058Adrin Jalali 贡献。

对 SciPy 稀疏数组的支持#

多个估计器现在支持 SciPy 稀疏数组。以下函数和类受到影响:

函数:

类:

对数组 API 的支持#

多个估计器和函数支持 数组 API 。这些更改使得可以使用 估计器和函数与其他库如 JAX、CuPy 和 PyTorch。因此,这使得一些 GPU 加速计算成为可能。

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

函数:

类:

私有损失函数模块#

更新日志#

sklearn.base#

#26786Adrin Jalali 提交。

  • API Change process_routing 现在具有不同的签名。前两个参数(对象和方法)仅位置参数,所有元数据都作为关键字参数传递。 #26909Adrin Jalali 提交。

sklearn.calibration#

sklearn.cluster#

sklearn.compose#

sklearn.covariance#

sklearn.datasets#

sklearn.decomposition#

#26634Alexandre LandeauAlexandre Vigny 贡献。

sklearn.ensemble#

ensemble.RandomForestClassifier , ensemble.RandomForestRegressor , ensemble.ExtraTreesClassifierensemble.ExtraTreesRegressor , 允许检索用于每个树估计器的训练样本索引。 #26736Adam Li 提交。

sklearn.feature_extraction#

feature_extraction.DictVectorizer 用于以下方法: feature_extraction.DictVectorizer.inverse_transform , feature_extraction.DictVectorizer.restrict , feature_extraction.DictVectorizer.transform . #24838Lorenz Hertel 提交。

sklearn.feature_selection#

sklearn.inspection#

sklearn.kernel_ridge#

sklearn.linear_model#

sklearn.metrics#

sklearn.model_selection#

sklearn.multioutput#

sklearn.neighbors#

sklearn.preprocessing#

sklearn.tree#

sklearn.utils#

  • Enhancement sklearn.utils.estimator_html_repr 根据浏览器的 prefers-color-scheme 动态调整图表颜色,提供更好的用户体验。 提高了对暗模式环境的适应性。 #26862Andrew Goh Yisheng , Thomas Fan , Adrin Jalali 贡献。

  • Enhancement MetadataRequestMetadataRouter 现在有一个 consumes 方法, 可以用来检查给定的一组参数是否会被消耗。 #26831Adrin Jalali 贡献。

  • Enhancement 使 sklearn.utils.check_array 在从 DIA 数组转换时尝试输出 int32 索引的 CSR 和 COO 数组,如果非零条目的数量足够小。这确保了在 Cython 中实现的估计器, 并且不接受 int64 索引的稀疏数据结构,现在一致地接受 SciPy 稀疏矩阵和数组的相同稀疏输入格式。 #27372Guillaume Lemaitre 贡献。

  • Fix sklearn.utils.check_array 应该接受来自 SciPy 稀疏模块的矩阵和数组。 之前的实现会在 copy=True 时失败,因为它调用了特定的 NumPy np.may_share_memory , 该函数不适用于 SciPy 稀疏数组,并且对于 SciPy 稀疏矩阵不会返回正确的结果。 #27336Guillaume Lemaitre 贡献。

  • Fix 使用 readonly_memmap=Truecheck_estimators_pickle 现在依赖于 joblib 自身的功能,在加载序列化估计器时分配对齐的内存映射数组,而不是调用一个专用的私有函数, 该函数会在 OpenBLAS 错误检测 CPU 架构时崩溃。 #27614Olivier Grisel 贡献。

  • Fix 当传递稀疏矩阵但 accept_sparseFalse 时,check_array 中的错误消息现在建议使用 .toarray() 而不是 X.toarray()#27757Lucy Liu 贡献。

  • Fix 修复函数 check_array ,当输入是 Series 而不是 DataFrame 时输出正确的错误消息。

#28090Stan FurrerYao Xiao 贡献。

  • API Change sklearn.extmath.log_logistic 已弃用,并将在 1.6 版本中移除。 请改用 -np.logaddexp(0, -x)#27544Christian Lorentzen 贡献。

代码和文档贡献者

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

101AlexMartin, Abhishek Singh Kushwah, Adam Li, Adarsh Wase, Adrin Jalali, Advik Sinha, Alex, Alexander Al-Feghhali, Alexis IMBERT, AlexL, Alex Molas, Anam Fatima, Andrew Goh, andyscanzio, Aniket Patil, Artem Kislovskiy, Arturo Amor, ashah002, avm19, Ben Holmes, Ben Mares, Benoit Chevallier-Mames, Bharat Raghunathan, Binesh Bannerjee, Brendan Lu, Brevin Kunde, Camille Troillard, Carlo Lemos, Chad Parmet, Christian Clauss, Christian Lorentzen, Christian Veenhuis, Christos Aridas, Cindy Liang, Claudio Salvatore Arcidiacono, Connor Boyle, cynthias13w, DaminK, Daniele Ongari, Daniel Schmitz, Daniel Tinoco, David Brochart, Deborah L. Haar, DevanshKyada27, Dimitri Papadopoulos Orfanos, Dmitry Nesterov, DUONG, Edoardo Abati, Eitan Hemed, Elabonga Atuo, Elisabeth Günther, Emma Carballal, Emmanuel Ferdman, epimorphic, Erwan Le Floch, Fabian Egli, Filip Karlo Došilović, Florian Idelberger, Franck Charras, Gael Varoquaux, Ganesh Tata, Gleb Levitski, Guillaume Lemaitre, Haoying Zhang, Harmanan Kohli, Ily, ioangatop, IsaacTrost, Isaac Virshup, Iwona Zdzieblo, Jakub Kaczmarzyk, James McDermott, Jarrod Millman, JB Mountford, Jérémie du Boisberranger, Jérôme Dockès, Jiawei Zhang, Joel Nothman, John Cant, John Hopfensperger, Jona Sassenhagen, Jon Nordby, Julien Jerphanion, Kennedy Waweru, kevin moore, Kian Eliasi, Kishan Ved, Konstantinos Pitas, Koustav Ghosh, Kushan Sharma, ldwy4, Linus, Lohit SundaramahaLingam, Loic Esteve, Lorenz, Louis Fouquet, Lucy Liu, Luis Silvestrin, Lukáš Folwarczný, Lukas Geiger, Malte Londschien, Marcus Fraaß, Marek Hanuš, Maren Westermann, Mark Elliot, Martin Larralde, Mateusz Sokół, mathurinm, mecopur, Meekail Zain, Michael Higgins, Miki Watanabe, Milton Gomez, MN193, Mohammed Hamdy, Mohit Joshi, mrastgoo, Naman Dhingra, Naoise Holohan, Narendra Singh dangi, Noa Malem-Shinitski, Nolan, Nurseit Kamchyev, Oleksii Kachaiev, Olivier Grisel, Omar Salman, partev, Peter Hull, Peter Steinbach, Pierre de Fréminville, Pooja Subramaniam, Puneeth K, qmarcou, Quentin Barthélemy, Rahil Parikh, Rahul Mahajan, Raj Pulapakura, Raphael, Ricardo Peres, Riccardo Cappuzzo, Roman Lutz, Salim Dohri, Samuel O. Ronsin, Sandip Dutta, Sayed Qaiser Ali, scaja, scikit-learn-bot, Sebastian Berg, Shreesha Kumar Bhat, Shubhal Gupta, Søren Fuglede Jørgensen, Stefanie Senger, Tamara, Tanjina Afroj, THARAK HEGDE, thebabush, Thomas J. Fan, Thomas Roehr, Tialo, Tim Head, tongyu, Venkatachalam N, Vijeth Moudgalya, Vincent M, Vivek Reddy P, Vladimir Fokow, Xiao Yuan, Xuefeng Xu, Yang Tao, Yao Xiao, Yuchen Zhou, Yuusuke Hiramatsu