版本 0.22#

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

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.

版本 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#

sklearn.inspection#

sklearn.metrics#

plot() 调用。#15937Stephen Blystone 提交。

sklearn.model_selection#

sklearn.naive_bayes#

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

sklearn.preprocessing#

sklearn.semi_supervised#

sklearn.utils#

  • Fix utils.check_array 现在正确地将包含布尔列的 pandas DataFrame 转换为浮点数。 #15797Thomas Fan 提交。

  • Fix utils.validation.check_is_fitted 接受一个显式的 attributes 参数来检查特定属性作为已拟合估计器的显式标记。当没有提供显式的 attributes 时,仅使用以单个下划线结尾且不以双下划线开头的属性作为“已拟合”标记。 all_or_any 参数也不再被弃用。这一更改是为了恢复一些向后兼容性。

版本 0.21 中此工具的行为:由 Thomas Fan 提出的 #15947

版本 0.22.0#

2019 年 12 月 3 日

网站更新#

我们的网站 进行了改版,并赋予了全新的外观。由 Thomas Fan 提出的 #14849

公共 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 )。

Note

公共 API 中的所有工具都应在 API 参考 中有文档记录。如果您发现一个公共工具(没有前导下划线)不在 API 参考中,请告知我们。

参考资料,这意味着它应该是私有的或已记录的。请通过打开一个问题让我们知道!

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

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

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

从版本 0.22 开始,scikit-learn 将显示 FutureWarnings 用于弃用, 如 Python 文档所推荐FutureWarnings 默认情况下总是被 Python 显示,因此自定义过滤器已被移除,scikit-learn 不再干扰用户过滤器。#15080Nicolas Hug 提供。

更改的模型#

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

值。 Feature - 当 X 是稀疏矩阵时,linear_model.RidgeFix - model_selection.StratifiedKFold 以及任何在分类器中使用 cv=int 的情况。 Fix - 使用 scipy >= 1.3 时的 cross_decomposition.CCAFix

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

(虽然我们正努力通过提供这些信息来更好地告知用户,但我们不能保证此列表是完整的。)

变更日志#

sklearn.base#

sklearn.calibration#

sklearn.cluster#

参数。此参数扩展了 SpectralClustering 类的功能,以匹配 cluster.spectral_clustering#13726Shuzhe Xiao 提供。

sklearn.compose#

sklearn.cross_decomposition#

sklearn.datasets#

sklearn.decomposition#

sklearn.dummy#

dummy.DummyClassifier 的默认值将从 0.22 版本的 'stratified' 更改为 0.24 版本的 'prior' 。当使用默认值时,会引发一个 FutureWarning。#15382Thomas Fan 提交。

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.gaussian_process#

内核属性被修改,但可能会带来性能提升。 #14378Masashi Shibata 提交。

sklearn.impute#

sklearn.inspection#

sklearn.kernel_approximation#

sklearn.linear_model#

sklearn.manifold#

sklearn.metrics#

sklearn.model_selection#

sklearn.multioutput#

#15488 #15490Rebekah Kim 提交

sklearn.naive_bayes#

sklearn.neighbors#

sklearn.neural_network#

最大函数评估次数,未达到 tol 改进。 #9274Daniel Perry 提交。

sklearn.pipeline#

sklearn.preprocessing#

sklearn.model_selection#

sklearn.svm#

break_ties 参数。此参数导致 predict 根据 decision_function 的置信度值来打破平局,如果 decision_function_shape='ovr' ,并且目标类别数 > 2。#12557Adrin Jalali 提交。

  • Enhancement SVM 估计器现在在 kernel='precomputed' 且拟合非方阵数据时抛出更具体的错误。#14336Gregory Dexter 提交。

  • Fix svm.SVC , svm.SVR , svm.NuSVRsvm.OneClassSVM 在方法 fit() 中接收到的参数 sample_weight 为负数或零时,生成了无效模型。此行为仅在某些边界场景中发生。现在在这些情况下,fit() 将抛出异常。#14286Alex Shacked 提交。

  • Fix svm.SVRsvm.OneClassSVMn_support_ 属性之前未初始化,大小为 2。现在大小为 1,并具有正确的值。#15099Nicolas Hug 提交。

  • Fix 修复了 BaseLibSVM._sparse_fit 中的一个错误,其中 n_SV=0 引发了 ZeroDivisionError。#14894Danna Naser 提交。

  • Fix liblinear 求解器现在支持 sample_weight#15038Guillaume Lemaitre 提交。

sklearn.tree#

sklearn.utils#

  • Feature check_estimator 现在可以通过设置 generate_only=True 来生成检查。以前,运行 check_estimator 会在第一个检查失败时停止。通过 generate_only=True ,所有检查可以独立运行并报告失败的检查。更多信息请参阅 自定义估计器#14381Thomas Fan 提交。

  • Feature 添加了一个特定于 pytest 的装饰器, parametrize_with_checks ,用于为一系列估计器参数化估计器检查。#14381Thomas Fan 提交。

  • Feature 新增了一个随机变量 utils.fixes.loguniform ,实现了对数均匀随机变量(例如,用于 RandomizedSearchCV)。 例如,对于 loguniform(1, 100) ,结果 110100 的概率是相等的。参见 #11232Scott SievertNathaniel Saul 提交, 以及 SciPy PR 10815 <https://github.com/scipy/scipy/pull/10815>

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

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

  • Fix utils.check_array 现在会引发错误而不是将 NaN 转换为整数。 #14872Roman Yurchak 提交。

  • Fix utils.check_array 现在能够正确检测 pandas 数据框中的数值类型,修复了一个 bug,该 bug 导致 float32 不必要地向上转换为 float64#15094Andreas Müller 提交。

  • API Change 以下工具函数已被弃用并转为私有:

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

sklearn.isotonic#

其他#

  • Fix 从 SciPy 移植 lobpcg ,实现了一些 bug 修复,但仅在 1.3+ 版本中可用。#13609#14971Guillaume Lemaitre 提交。

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

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

估计器检查的变更#

这些变更主要影响库的开发者。 - 现在,如果 predicttransformfit 之前被调用,估计器应抛出 NotFittedError ;之前抛出 AttributeErrorValueError 也是可以接受的。

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

  • 估计器应将输入数据( X , y , sample_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 贡献。

  • Fix 在缺失的检查中添加了 check_transformer_data_not_an_array

  • Fix 估计器标签解析现在遵循常规的 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