版本 0.22#

有关此版本主要亮点的简要说明,请参阅 scikit-learn 0.22 发布亮点

更新日志图例

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

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

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

  • 改进 一项杂项的小改进。

  • 修复 以前未按文档说明工作或未达到合理预期的问题现在应该已修复。

  • API 变更 将来您需要更改代码才能实现相同的效果;或者某个功能将在未来移除。

版本 0.22.2.post1#

2020年3月3日

0.22.2.post1 版本包含对源代码分发的打包修复,但包内容与 0.22.2 版本(不带 .post1 后缀)的 wheel 包内容相同。两者都包含以下更改。

更新日志#

sklearn.impute#

sklearn.metrics#

sklearn.neighbors#

版本 0.22.1#

2020年1月2日

这是一个错误修复版本,主要解决了 0.22.0 版本中的一些打包问题。它还包括一些次要的文档改进和一些错误修复。

更新日志#

sklearn.cluster#

  • 修复 cluster.KMeansalgorithm="elkan" 时,现在使用与默认 algorithm="full" 相同的停止准则。 #15930@inder128 提交。

sklearn.inspection#

sklearn.metrics#

sklearn.model_selection#

sklearn.naive_bayes#

  • 修复 移除了 naive_bayes.BaseNB 中方法 _check_Xabstractmethod 装饰器,该装饰器可能会破坏继承自此已弃用公共基类的下游项目。 #15996Brigitta Sipőcz 提交。

sklearn.preprocessing#

sklearn.semi_supervised#

sklearn.utils#

  • 修复 utils.check_array 现在可以正确地将带有布尔列的 pandas DataFrame 转换为浮点数。 #15797Thomas Fan 提交。

  • 修复 utils.validation.check_is_fitted 重新接受明确的 attributes 参数,以检查特定属性作为拟合估计器的明确标记。当未提供明确的 attributes 时,只有以下划线结尾且不以下划线开头(即不是双下划线开头)的属性用作“已拟合”标记。all_or_any 参数也不再被弃用。此更改旨在恢复与 0.21 版本中此实用程序行为的一些向后兼容性。 #15947Thomas Fan 提交。

版本 0.22.0#

2019年12月3日

网站更新#

我们的网站 进行了改版,焕然一新。 #14849Thomas Fan 提交。

明确公共 API 的定义#

Scikit-learn 拥有公共 API 和私有 API。

我们尽力不破坏公共 API,并且只引入向后兼容的更改,这些更改不需要任何用户操作。然而,在无法避免的情况下,对公共 API 的任何更改都将遵循两个次要版本的弃用周期。私有 API 未公开文档化,也不受任何弃用周期的约束,因此用户不应依赖其稳定性。

如果一个函数或对象在 API 参考 中有文档说明,并且可以通过不带前导下划线的导入路径导入,那么它是公共的。例如,sklearn.pipeline.make_pipeline 是公共的,而 sklearn.pipeline._name_estimators 是私有的。sklearn.ensemble._gb.BaseEnsemble 也是私有的,因为整个 _gb 模块是私有的。

截至 0.22 版本,一些工具实际上是公共的(没有前导下划线),而它们本应是私有的。在 0.22 版本中,这些工具已被正确私有化,公共 API 空间也得到了清理。此外,从大多数子模块导入现在已被弃用:例如,您应该使用 from sklearn.cluster import Birch 而不是 from sklearn.cluster.birch import Birch(实际上,birch.py 已移至 _birch.py)。

注意

公共 API 中的所有工具都应在 API 参考 中有文档说明。如果您发现一个公共工具(没有前导下划线)不在 API 参考中,这意味着它要么应该是私有的,要么应该有文档说明。请通过提出 issue 告知我们!

这项工作在 issue 9250issue 12927 中进行了跟踪。

弃用:从现在开始使用 FutureWarning#

在弃用某个功能时,scikit-learn 的先前版本通常会引发 DeprecationWarning。由于 Python 默认不显示 DeprecationWarnings,scikit-learn 需要依靠自定义警告过滤器来始终显示警告。该过滤器有时会干扰用户的自定义警告过滤器。

从 0.22 版本开始,scikit-learn 将针对弃用功能显示 FutureWarnings这符合 Python 文档的建议FutureWarnings 默认总是由 Python 显示,因此已移除自定义过滤器,scikit-learn 不再干扰用户过滤器。 #15080Nicolas Hug 提交。

模型变更#

以下估计器和函数,在使用相同数据和参数拟合时,可能会生成与之前版本不同的模型。这通常是由于建模逻辑(错误修复或改进)或随机采样过程的变化引起的。

详细信息在下面的更新日志中列出。

(尽管我们努力通过提供此信息来更好地告知用户,但我们无法保证此列表是完整的。)

更新日志#

sklearn.base#

sklearn.calibration#

sklearn.cluster#

sklearn.compose#

sklearn.cross_decomposition#

sklearn.datasets#

sklearn.decomposition#

sklearn.dummy#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.gaussian_process#

sklearn.impute#

sklearn.inspection#

sklearn.kernel_approximation#

sklearn.linear_model#

sklearn.manifold#

sklearn.metrics#

sklearn.model_selection#

sklearn.multioutput#

sklearn.naive_bayes#

sklearn.neighbors#

sklearn.neural_network#

sklearn.pipeline#

sklearn.preprocessing#

sklearn.model_selection#

sklearn.svm#

  • 改进 svm.SVCsvm.NuSVC 现在接受 break_ties 参数。如果 decision_function_shape='ovr' 且目标类别数 > 2,此参数会导致 predict 根据 decision_function 的置信度值来打破平局。#12557Adrin Jalali 贡献。

  • 改进kernel='precomputed' 且在非方阵数据上拟合时,SVM 估计器现在会抛出更具体的错误。#14336Gregory Dexter 贡献。

  • 修复svm.SVCsvm.SVRsvm.NuSVRsvm.OneClassSVMfit() 方法中接收到 sample_weight 参数的负值或零值时,会生成一个无效模型。这种行为仅在某些边界情况下发生。现在,在这些情况下,fit() 将会抛出异常而失败。#14286Alex Shacked 贡献。

  • 修复 svm.SVRsvm.OneClassSVMn_support_ 属性以前未初始化,且大小为 2。现在它的大小为 1,并带有正确的值。#15099Nicolas Hug 贡献。

  • 修复 修复了 BaseLibSVM._sparse_fit 中的一个错误,该错误在 n_SV=0 时会引发 ZeroDivisionError。#14894Danna Naser 贡献。

  • 修复 liblinear 求解器现在支持 sample_weight#15038Guillaume Lemaitre 贡献。

sklearn.tree#

sklearn.utils#

  • 新功能 check_estimator 现在可以通过设置 generate_only=True 来生成检查。此前,运行 check_estimator 会在第一个检查失败时停止。设置 generate_only=True 后,所有检查都可以独立运行,并报告失败的检查。更多信息请参阅 Rolling your own estimator#14381Thomas Fan 贡献。

  • 新功能 添加了一个 pytest 特定装饰器 parametrize_with_checks,用于对估计器列表进行参数化估计器检查。#14381Thomas Fan 贡献。

  • 新功能 一个新的随机变量 utils.fixes.loguniform 实现了对数均匀随机变量(例如,用于 RandomizedSearchCV)。例如,对于 loguniform(1, 100),结果 110100 的可能性均相等。参见 #11232Scott SievertNathaniel Saul 贡献,以及 SciPy PR 10815

  • 改进 utils.safe_indexing(现已弃用)接受一个 axis 参数,用于在行和列上对类数组对象进行索引。列索引可以在 NumPy 数组、SciPy 稀疏矩阵和 Pandas DataFrame 上执行。还进行了额外的重构。#14035#14475Guillaume Lemaitre 贡献。

  • 改进 utils.extmath.safe_sparse_dot 现在支持 3D+ ndarray 和稀疏矩阵之间的操作。#14538Jérémie du Boisberranger 贡献。

  • 修复 utils.check_array 现在会引发错误,而不是将 NaN 转换为整数。#14872Roman Yurchak 贡献。

  • 修复 utils.check_array 现在将正确检测 pandas DataFrames 中的数值 dtype,修复了 float32 不必要地向上转换为 float64 的错误。#15094Andreas Müller 贡献。

  • API变更 以下实用工具已弃用,并且现在为私有:

    • choose_check_classifiers_labels

    • enforce_estimator_tags_y

    • mocking.MockDataFrame

    • mocking.CheckingClassifier

    • optimize.newton_cg

    • random.random_choice_csc

    • utils.choose_check_classifiers_labels

    • utils.enforce_estimator_tags_y

    • utils.optimize.newton_cg

    • utils.random.random_choice_csc

    • utils.safe_indexing

    • utils.mocking

    • utils.fast_dict

    • utils.seq_dataset

    • utils.weight_vector

    • utils.fixes.parallel_helper (已移除)

    • 除了现在位于 utils 中的 all_estimators 外,utils.testing 的所有内容。

sklearn.isotonic#

杂项#

  • 修复 从 SciPy 移植了 lobpcg,它实现了一些错误修复,但仅在 1.3+ 版本中可用。#13609#14971Guillaume Lemaitre 贡献。

  • API变更 Scikit-learn 现在将任何实现鸭子数组(duck array)的输入数据结构转换为 NumPy 数组(使用 __array__),以确保行为一致性,而不是依赖于 __array_function__(参见 NEP 18)。#14702Andreas Müller 贡献。

  • API 变更 将手动检查替换为 check_is_fitted。现在,使用未拟合的估计器时抛出的错误更加统一。#13013Agamemnon Krasoulis 贡献。

估计器检查的变更#

这些变更主要影响库开发人员。

  • 现在,如果 predicttransformfit 之前被调用,估计器应抛出 NotFittedError;以前 AttributeErrorValueError 也是可接受的。#13013Agamemnon Krasoulis 贡献。

  • 估计器检查现在支持仅限二分类的分类器。这类分类器需要带有 binary_only=True 估计器标签。#13875Trevor Stephens 贡献。

  • 估计器应将输入数据(Xysample_weights)转换为 numpy.ndarray,并且永远不要在传入的原始数据类型上调用 __array_function__(参见 NEP 18)。#14702Andreas Müller 贡献。

  • requires_positive_X 估计器标签(用于要求 X 为非负值的模型)现在被 utils.estimator_checks.check_estimator 使用,以确保如果 X 包含负值,则抛出适当的错误消息。#14680Alex Gramfort 贡献。

  • 增加了对成对估计器的检查,确保它们在非方数据上抛出错误。#14336Gregory Dexter 贡献。

  • 增加了两个常见的多输出估计器测试:utils.estimator_checks.check_classifier_multioutpututils.estimator_checks.check_regressor_multioutput#13392Rok Mihevc 贡献。

  • 修复 在缺失的地方增加了 check_transformer_data_not_an_array 检查。

  • 修复 估计器标签的解析现在遵循常规的 MRO(方法解析顺序)。它们以前只能被覆盖一次。#14884Andreas Müller 贡献。

代码和文档贡献者

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

Aaron Alphonsus, Abbie Popa, Abdur-Rahmaan Janhangeer, abenbihi, Abhinav Sagar, Abhishek Jana, Abraham K. Lagat, Adam J. Stewart, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Alec Peters, Alessandro Surace, Alexandre de Siqueira, Alexandre Gramfort, alexgoryainov, Alex Henrie, Alex Itkes, alexshacked, Allen Akinkunle, Anaël Beaugnon, Anders Kaseorg, Andrea Maldonado, Andrea Navarrete, Andreas Mueller, Andreas Schuderer, Andrew Nystrom, Angela Ambroz, Anisha Keshavan, Ankit Jha, Antonio Gutierrez, Anuja Kelkar, Archana Alva, arnaudstiegler, arpanchowdhry, ashimb9, Ayomide Bamidele, Baran Buluttekin, barrycg, Bharat Raghunathan, Bill Mill, Biswadip Mandal, blackd0t, Brian G. Barkley, Brian Wignall, Bryan Yang, c56pony, camilaagw, cartman_nabana, catajara, Cat Chenal, Cathy, cgsavard, Charles Vesteghem, Chiara Marmo, Chris Gregory, Christian Lorentzen, Christos Aridas, Dakota Grusak, Daniel Grady, Daniel Perry, Danna Naser, DatenBergwerk, David Dormagen, deeplook, Dillon Niederhut, Dong-hee Na, Dougal J. Sutherland, DrGFreeman, Dylan Cashman, edvardlindelof, Eric Larson, Eric Ndirangu, Eunseop Jeong, Fanny, federicopisanu, Felix Divo, flaviomorelli, FranciDona, Franco M. Luque, Frank Hoang, Frederic Haase, g0g0gadget, Gabriel Altay, Gabriel do Vale Rios, Gael Varoquaux, ganevgv, gdex1, getgaurav2, Gideon Sonoiya, Gordon Chen, gpapadok, Greg Mogavero, Grzegorz Szpak, Guillaume Lemaitre, Guillem García Subies, H4dr1en, hadshirt, Hailey Nguyen, Hanmin Qin, Hannah Bruce Macdonald, Harsh Mahajan, Harsh Soni, Honglu Zhang, Hossein Pourbozorg, Ian Sanders, Ingrid Spielman, J-A16, jaehong park, Jaime Ferrando Huertas, James Hill, James Myatt, Jay, jeremiedbb, Jérémie du Boisberranger, jeromedockes, Jesper Dramsch, Joan Massich, Joanna Zhang, Joel Nothman, Johann Faouzi, Jonathan Rahn, Jon Cusick, Jose Ortiz, Kanika Sabharwal, Katarina Slama, kellycarmody, Kennedy Kang’ethe, Kensuke Arai, Kesshi Jordan, Kevad, Kevin Loftis, Kevin Winata, Kevin Yu-Sheng Li, Kirill Dolmatov, Kirthi Shankar Sivamani, krishna katyal, Lakshmi Krishnan, Lakshya KD, LalliAcqua, lbfin, Leland McInnes, Léonard Binet, Loic Esteve, loopyme, lostcoaster, Louis Huynh, lrjball, Luca Ionescu, Lutz Roeder, MaggieChege, Maithreyi Venkatesh, Maltimore, Maocx, Marc Torrellas, Marie Douriez, Markus, Markus Frey, Martina G. Vilas, Martin Oywa, Martin Thoma, Masashi SHIBATA, Maxwell Aladago, mbillingr, m-clare, Meghann Agarwal, m.fab, Micah Smith, miguelbarao, Miguel Cabrera, Mina Naghshhnejad, Ming Li, motmoti, mschaffenroth, mthorrell, Natasha Borders, nezar-a, Nicolas Hug, Nidhin Pattaniyil, Nikita Titov, Nishan Singh Mann, Nitya Mandyam, norvan, notmatthancock, novaya, nxorable, Oleg Stikhin, Oleksandr Pavlyk, Olivier Grisel, Omar Saleem, Owen Flanagan, panpiort8, Paolo, Paolo Toccaceli, Paresh Mathur, Paula, Peng Yu, Peter Marko, pierretallotte, poorna-kumar, pspachtholz, qdeffense, Rajat Garg, Raphaël Bournhonesque, Ray, Ray Bell, Rebekah Kim, Reza Gharibi, Richard Payne, Richard W, rlms, Robert Juergens, Rok Mihevc, Roman Feldbauer, Roman Yurchak, R Sanjabi, RuchitaGarde, Ruth Waithera, Sackey, Sam Dixon, Samesh Lakhotia, Samuel Taylor, Sarra Habchi, Scott Gigante, Scott Sievert, Scott White, Sebastian Pölsterl, Sergey Feldman, SeWook Oh, she-dares, Shreya V, Shubham Mehta, Shuzhe Xiao, SimonCW, smarie, smujjiga, Sönke Behrends, Soumirai, Sourav Singh, stefan-matcovici, steinfurt, Stéphane Couvreur, Stephan Tulkens, Stephen Cowley, Stephen Tierney, SylvainLan, th0rwas, theoptips, theotheo, Thierno Ibrahima DIOP, Thomas Edwards, Thomas J Fan, Thomas Moreau, Thomas Schmitt, Tilen Kusterle, Tim Bicker, Timsaur, Tim Staley, Tirth Patel, Tola A, Tom Augspurger, Tom Dupré la Tour, topisan, Trevor Stephens, ttang131, Urvang Patel, Vathsala Achar, veerlosar, Venkatachalam N, Victor Luzgin, Vincent Jeanselme, Vincent Lostanlen, Vladimir Korolev, vnherdeiro, Wenbo Zhao, Wendy Hu, willdarnell, William de Vazelhes, wolframalpha, xavier dupré, xcjason, x-martian, xsat, xun-tang, Yinglr, yokasre, Yu-Hang “Maxin” Tang, Yulia Zamriy, Zhao Feng