版本 0.22#

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

变更日志图例

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

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

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

  • 增强 其他一些小的改进。

  • 修复 以前未按文档说明(或根据合理预期)工作的内容现在应该可以工作了。

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

版本 0.22.2.post1#

2020年3月3日

0.22.2.post1 版本包含源代码分发的打包修复,但软件包的内容与 0.22.2 版本(无 .post1 后缀)的轮子内容相同。两者都包含以下更改。

变更日志#

sklearn.impute#

sklearn.metrics#

sklearn.neighbors#

版本 0.22.1#

2020年1月2日

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

变更日志#

sklearn.cluster#

  • 修复 使用 algorithm="elkan"cluster.KMeans 现在使用与默认 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 完成。

  • 修复 当在 fit() 方法中为参数 sample_weight 传入负值或零值时,svm.SVCsvm.SVRsvm.NuSVRsvm.OneClassSVM 会生成无效的模型。此行为仅在某些边界情况下发生。现在,在这些情况下,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#

  • 功能 通过设置 generate_only=Truecheck_estimator 现在可以生成检查。以前,运行 check_estimator 会在第一次检查失败时停止。使用 generate_only=True,所有检查都可以独立运行并报告失败的检查。更多信息请参见 创建您自己的估计器#14381Thomas Fan 完成。

  • 功能 添加了一个 pytest 专用装饰器 parametrize_with_checks,用于为估计器列表参数化估计器检查。#14381Thomas Fan 完成。

  • 功能 新的随机变量 utils.fixes.loguniform 实现了一个对数均匀随机变量(例如,用于 RandomizedSearchCV)。例如,对于 loguniform(1, 100),结果 110100 的可能性相同。参见 #11232Scott SievertNathaniel Saul 完成,以及 SciPy PR 10815 <https://github.com/scipy/scipy/pull/10815>

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

  • 增强 utils.extmath.safe_sparse_dot 可在3D+ ndarray和稀疏矩阵之间工作。 #14538 by Jérémie du Boisberranger

  • 修复 utils.check_array 现在会抛出错误而不是将NaN转换为整数。 #14872 by Roman Yurchak

  • 修复 utils.check_array 现在可以正确检测pandas DataFrame中的数值数据类型,修复了float32被不必要地向上转换为float64的错误。 #15094 by Andreas Müller

  • API变更 以下utils已被弃用,现在为私有

    • 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.testing中的内容,除了all_estimators(现在位于utils中)。

sklearn.isotonic#

其他#

  • 修复 从SciPy移植lobpcg,其中包含一些bug修复,但仅在1.3+版本中可用。 #13609#14971 by Guillaume Lemaitre

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

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

估计器检查的更改#

这些更改主要影响库开发者。

  • 现在,如果在fit之前调用predicttransform,则估计器应抛出NotFittedError;以前,AttributeErrorValueError是可以接受的。 #13013 by Agamemnon Krasoulis

  • 估计器检查现在支持二元分类器。此类分类器需要具有binary_only=True估计器标签。 #13875 by Trevor Stephens

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

  • requires_positive_X估计器标签(对于需要X为非负的模型)现在被utils.estimator_checks.check_estimator使用,以确保如果X包含一些负值条目则会引发正确的错误消息。 #14680 by Alex Gramfort

  • 添加了对成对估计器在非方阵数据上引发错误的检查 #14336 by Gregory 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 Cash, 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