版本 0.18#

警告

Scikit-learn 0.18 是 scikit-learn 支持 Python 2.6 的最后一个主要版本。后续版本的 scikit-learn 将要求 Python 2.7 或更高版本。

版本 0.18.2#

2017年6月20日

更新日志#

代码贡献者#

Aman Dalmia, Loic Esteve, Nate Guerin, Sergei Lebedev

版本 0.18.1#

2016年11月11日

更新日志#

改进#

错误修复#

API 更改摘要#

树和森林

  • 如果未将 sample_weight 参数传递给 fit 函数,则基于树的分类器和回归器的 min_weight_fraction_leaf 参数现在默认假定均匀样本权重。以前,该参数会被静默忽略。 #7301,由 Nelson Liu 贡献。

  • 树分裂准则类的克隆/pickle 过程现在是内存安全的。 #7680,由 Ibraim Ganiev 贡献。

线性、核化及相关模型

版本 0.18#

2016年9月28日

模型选择改进和 API 更改#

  • model_selection 模块

    新的 sklearn.model_selection 模块将原先的 sklearn.cross_validationsklearn.grid_searchsklearn.learning_curve 的功能组合在一起,引入了嵌套交叉验证和使用 Pandas 更好地操作参数搜索等新可能性。

    许多内容将保持不变,但也有一些关键区别。请阅读下文以了解更多更改信息。

  • 支持嵌套交叉验证的独立于数据的 CV 分割器

    sklearn.model_selection 中定义的新交叉验证分割器不再使用任何依赖于数据的参数(例如 y)进行初始化。相反,它们公开了一个 split 方法,该方法接受数据并为不同的分割生成一个生成器。

    这一更改使得可以使用交叉验证分割器执行嵌套交叉验证,这得益于 model_selection.GridSearchCVmodel_selection.RandomizedSearchCV 工具的帮助。

  • 增强的 cv_results_ 属性

    新的 cv_results_ 属性(model_selection.GridSearchCVmodel_selection.RandomizedSearchCV 的属性)取代了 grid_scores_ 属性,它是一个包含 1D 数组的字典,每个数组中的元素对应于参数设置(即搜索候选项)。

    `cv_results_` 字典可以轻松导入到 `pandas` 中作为 `DataFrame`,用于探索搜索结果。

    `cv_results_` 数组包含每个交叉验证分割的得分(键如 'split0_test_score'),以及它们的平均值('mean_test_score')和标准差('std_test_score')。

    搜索候选项的排名(基于其平均交叉验证得分)可在 cv_results_['rank_test_score'] 中找到。

    每个参数的值都单独存储为 numpy 掩码对象数组。如果相应的参数不适用,则该搜索候选项的值将被掩码。此外,所有参数字典的列表都存储在 cv_results_['params'] 中。

  • 参数 n_folds 和 n_iter 重命名为 n_splits

    一些参数名称已更改:新的 model_selection.KFoldmodel_selection.GroupKFold(名称更改见下文)和 model_selection.StratifiedKFold 中的 n_folds 参数现已重命名为 n_splitsmodel_selection.ShuffleSplit、新类 model_selection.GroupShuffleSplitmodel_selection.StratifiedShuffleSplit 中的 n_iter 参数现已重命名为 n_splits

  • 接受组标签和数据的分割器类重命名

    交叉验证分割器 LabelKFoldLabelShuffleSplitLeaveOneLabelOutLeavePLabelOut 已分别重命名为 model_selection.GroupKFoldmodel_selection.GroupShuffleSplitmodel_selection.LeaveOneGroupOutmodel_selection.LeavePGroupsOut

    请注意 model_selection.LeavePGroupsOut 中从单数到复数形式的更改。

  • fit 参数 labels 重命名为 groups

    新重命名的分割器 model_selection.GroupKFoldmodel_selection.LeaveOneGroupOutmodel_selection.LeavePGroupsOutmodel_selection.GroupShuffleSplitsplit 方法中的 labels 参数已根据其类名的新命名法重命名为 groups

  • 参数 n_labels 重命名为 n_groups

    新重命名的 model_selection.LeavePGroupsOut 中的参数 n_labels 已更改为 n_groups

  • 训练得分和计时信息

    cv_results_ 还包括每个交叉验证分割的训练得分(键如 'split0_train_score'),以及它们的平均值('mean_train_score')和标准差('std_train_score')。为了避免评估训练得分的开销,请设置 return_train_score=False

    此外,在所有交叉验证分割中,分割、训练和评估模型所花费时间的平均值和标准差分别可在键 'mean_time''std_time' 处找到。

更新日志#

新特性#

分类器和回归器

其他估计器

模型选择和评估

改进#

树和集成方法

线性、核化及相关模型

分解、流形学习和聚类

预处理和特征选择

模型评估和元估计器

度量

杂项

  • feature_selection.RFECV 添加了 n_jobs 参数,以并行计算测试折叠上的得分。由 Manoj Kumar 贡献

  • 代码库不包含 C/C++ Cython 生成的文件:它们在构建过程中生成。分发包仍将包含生成的 C/C++ 文件。由 Arthur Mensch 贡献。

  • 通过支持 Cython 融合类型,减少了 utils.sparse_func.mean_variance_axisutils.sparse_func.incr_mean_variance_axis 的 32 位浮点输入数组的内存使用。由 YenChen Lin 贡献。

  • `ignore_warnings` 现在接受一个 `category` 参数,以仅忽略指定类型的警告。由 Thierry Guillemot 贡献。

  • datasets.load_iris 数据集 #7049datasets.load_breast_cancer 数据集 #7152datasets.load_digits 数据集、datasets.load_diabetes 数据集、datasets.load_linnerud 数据集、datasets.load_boston 数据集 #7154 添加了参数 return_X_y 和返回类型 (data, target) : tuple 选项。由 Manvendra Singh 贡献。

  • 简化了 clone 函数,废弃了对在 __init__ 中修改参数的估计器的支持。 #5540,由 Andreas Müller 贡献。

  • 当反序列化(unpickling)scikit-learn 估计器时,如果版本与训练该估计器的版本不同,则会引发 UserWarning,更多详细信息请参见[模型持久化文档](#persistence-limitations)。 (#7248) 由 Andreas Müller 贡献。

错误修复#

树和集成方法

线性、核化及相关模型

分解、流形学习和聚类

预处理和特征选择

  • copy=True 时,preprocessing.data._transform_selected 现在总是将 X 的副本传递给转换函数 (#7194)。由 Caio Oliveira 贡献。

模型评估和元估计器

度量

杂项

  • model_selection.tests._search._check_param_grid 现在可以正确处理所有扩展/实现 Sequence 的类型(字符串除外),包括 range (Python 3.x) 和 xrange (Python 2.x)。 #7323 由 Viacheslav Kovalevskyi 贡献。

  • utils.extmath.randomized_range_finder 在请求多次幂迭代时数值稳定性更高,因为它默认应用 LU 归一化。如果 n_iter<2,则不太可能出现数值问题,因此不应用归一化。其他归一化选项包括:'none''LU''QR'#5141Giorgio Patrini 贡献。

  • 修复了一个错误,即某些格式的 scipy.sparse 矩阵以及以其为参数的估计器无法传递给 base.clone。由 Loic Esteve 贡献。

  • datasets.load_svmlight_file 现在能够读取长整型 QID 值。 #7101Ibraim Ganiev 贡献。

API 更改摘要#

线性、核化及相关模型

分解、流形学习和聚类

  • 旧的 mixture.DPGMM 已被弃用,取而代之的是新的 mixture.BayesianGaussianMixture(参数为 weight_concentration_prior_type='dirichlet_process')。新类解决了旧类的计算问题,并比以前更快地计算具有 Dirichlet 过程先验的高斯混合。 #7295Wei XueThierry Guillemot 贡献。

  • 旧的 mixture.VBGMM 已被弃用,取而代之的是新的 mixture.BayesianGaussianMixture(参数为 weight_concentration_prior_type='dirichlet_distribution')。新类解决了旧类的计算问题,并比以前更快地计算变分贝叶斯高斯混合。 #6651Wei XueThierry Guillemot 贡献。

  • 旧的 mixture.GMM 已被弃用,取而代之的是新的 mixture.GaussianMixture。新类比以前更快地计算高斯混合,并且一些计算问题已经得到解决。 #6666Wei XueThierry Guillemot 贡献。

模型评估和元估计器

代码贡献者#

Aditya Joshi, Alejandro, Alexander Fabisch, Alexander Loginov, Alexander Minyushkin, Alexander Rudy, Alexandre Abadie, Alexandre Abraham, Alexandre Gramfort, Alexandre Saint, alexfields, Alvaro Ulloa, alyssaq, Amlan Kar, Andreas Mueller, andrew giessel, Andrew Jackson, Andrew McCulloh, Andrew Murray, Anish Shah, Arafat, Archit Sharma, Ariel Rokem, Arnaud Joly, Arnaud Rachez, Arthur Mensch, Ash Hoover, asnt, b0noI, Behzad Tabibian, Bernardo, Bernhard Kratzwald, Bhargav Mangipudi, blakeflei, Boyuan Deng, Brandon Carter, Brett Naul, Brian McFee, Caio Oliveira, Camilo Lamus, Carol Willing, Cass, CeShine Lee, Charles Truong, Chyi-Kwei Yau, CJ Carey, codevig, Colin Ni, Dan Shiebler, Daniel, Daniel Hnyk, David Ellis, David Nicholson, David Staub, David Thaler, David Warshaw, Davide Lasagna, Deborah, definitelyuncertain, Didi Bar-Zev, djipey, dsquareindia, edwinENSAE, Elias Kuthe, Elvis DOHMATOB, Ethan White, Fabian Pedregosa, Fabio Ticconi, fisache, Florian Wilhelm, Francis, Francis O’Donovan, Gael Varoquaux, Ganiev Ibraim, ghg, Gilles Louppe, Giorgio Patrini, Giovanni Cherubin, Giovanni Lanzani, Glenn Qian, Gordon Mohr, govin-vatsan, Graham Clenaghan, Greg Reda, Greg Stupp, Guillaume Lemaitre, Gustav Mörtberg, halwai, Harizo Rajaona, Harry Mavroforakis, hashcode55, hdmetor, Henry Lin, Hobson Lane, Hugo Bowne-Anderson, Igor Andriushchenko, Imaculate, Inki Hwang, Isaac Sijaranamual, Ishank Gulati, Issam Laradji, Iver Jordal, jackmartin, Jacob Schreiber, Jake Vanderplas, James Fiedler, James Routley, Jan Zikes, Janna Brettingen, jarfa, Jason Laska, jblackburne, jeff levesque, Jeffrey Blackburne, Jeffrey04, Jeremy Hintz, jeremynixon, Jeroen, Jessica Yung, Jill-Jênn Vie, Jimmy Jia, Jiyuan Qian, Joel Nothman, johannah, John, John Boersma, John Kirkham, John Moeller, jonathan.striebel, joncrall, Jordi, Joseph Munoz, Joshua Cook, JPFrancoia, jrfiedler, JulianKahnert, juliathebrave, kaichogami, KamalakerDadi, Kenneth Lyons, Kevin Wang, kingjr, kjell, Konstantin Podshumok, Kornel Kielczewski, Krishna Kalyan, krishnakalyan3, Kvle Putnam, Kyle Jackson, Lars Buitinck, ldavid, LeiG, LeightonZhang, Leland McInnes, Liang-Chi Hsieh, Lilian Besson, lizsz, Loic Esteve, Louis Tiao, Léonie Borne, Mads Jensen, Maniteja Nandana, Manoj Kumar, Manvendra Singh, Marco, Mario Krell, Mark Bao, Mark Szepieniec, Martin Madsen, MartinBpr, MaryanMorel, Massil, Matheus, Mathieu Blondel, Mathieu Dubois, Matteo, Matthias Ekman, Max Moroz, Michael Scherer, michiaki ariga, Mikhail Korobov, Moussa Taifi, mrandrewandrade, Mridul Seth, nadya-p, Naoya Kanai, Nate George, Nelle Varoquaux, Nelson Liu, Nick James, NickleDave, Nico, Nicolas Goix, Nikolay Mayorov, ningchi, nlathia, okbalefthanded, Okhlopkov, Olivier Grisel, Panos Louridas, Paul Strickland, Perrine Letellier, pestrickland, Peter Fischer, Pieter, Ping-Yao, Chang, practicalswift, Preston Parry, Qimu Zheng, Rachit Kansal, Raghav RV, Ralf Gommers, Ramana.S, Rammig, Randy Olson, Rob Alexander, Robert Lutz, Robin Schucker, Rohan Jain, Ruifeng Zheng, Ryan Yu, Rémy Léone, saihttam, Saiwing Yeung, Sam Shleifer, Samuel St-Jean, Sartaj Singh, Sasank Chilamkurthy, saurabh.bansod, Scott Andrews, Scott Lowe, seales, Sebastian Raschka, Sebastian Saeger, Sebastián Vanrell, Sergei Lebedev, shagun Sodhani, shanmuga cv, Shashank Shekhar, shawpan, shengxiduan, Shota, shuckle16, Skipper Seabold, sklearn-ci, SmedbergM, srvanrell, Sébastien Lerique, Taranjeet, themrmax, Thierry, Thierry Guillemot, Thomas, Thomas Hallock, Thomas Moreau, Tim Head, tKammy, toastedcornflakes, Tom, TomDLT, Toshihiro Kamishima, tracer0tong, Trent Hauck, trevorstephens, Tue Vo, Varun, Varun Jewalikar, Viacheslav, Vighnesh Birodkar, Vikram, Villu Ruusmann, Vinayak Mehta, walter, waterponey, Wenhua Yang, Wenjian Huang, Will Welch, wyseguy7, xyguo, yanlend, Yaroslav Halchenko, yelite, Yen, YenChenLin, Yichuan Liu, Yoav Ram, Yoshiki, Zheng RuiFeng, zivori, Óscar Nájera