版本 0.18#

警告

Scikit-learn 0.18 是最后一个主要版本,支持 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 更改摘要#

树和森林

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

  • 树分裂准则类的克隆/序列化现在是内存安全的。#7680 by 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_ 属性

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

    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_splitsn_iter 参数在 model_selection.ShuffleSplit、新的类 model_selection.GroupShuffleSplitmodel_selection.StratifiedShuffleSplit 中已重命名为 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 设置为 True。

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

更新日志#

新功能#

分类器和回归器

其他估计器

模型选择和评估

增强#

树和集成

线性、核化及相关模型

分解、流形学习和聚类

预处理和特征选择

模型评估和元估计器

指标

杂项

Bug 修复#

树和集成

线性、核化及相关模型

分解、流形学习和聚类

预处理和特征选择

  • preprocessing.data._transform_selected 现在在 copy=True 时始终将 X 的副本传递给 transform 函数(#7194)。By Caio Oliveira

模型评估和元估计器

指标

杂项

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

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

  • 修复了一个错误,该错误导致某些格式的 scipy.sparse 矩阵以及将它们作为参数的估计器无法传递给 base.clone。作者:Loic Esteve

  • datasets.load_svmlight_file 现在能够读取长整型 QID 值。 #7101,作者:Ibraim Ganiev

API 更改摘要#

线性、核化及相关模型

分解、流形学习和聚类

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

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

  • 旧的 mixture.GMM 已弃用,取而代之的是新的 mixture.GaussianMixture。新类比以前更快地计算高斯混合模型,并且解决了一些计算问题。 #6666,作者:Wei 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