版本 0.15#
版本 0.15.2#
2014年9月4日
错误修复#
修复了最近邻模型中之前被忽略的Minkowski距离的
p参数的处理。由 Nikolay Mayorov 贡献。修复了在32位Python上使用早期停止的
linear_model.LassoLars中重复的alpha值。由 Olivier Grisel 和 Fabian Pedregosa 贡献。修复了在scikit-learn使用MSVC编译而NumPy使用MinGW编译时在Windows下的构建问题。由 Olivier Grisel 和 Federico Vaggi 贡献。
修复了坐标下降求解器中的数组索引溢出错误。由 Gael Varoquaux 贡献。
更好地处理numpy 1.9的弃用警告。由 Gael Varoquaux 贡献。
在
cluster.KMeans中移除了不必要的数据复制。由 Gael Varoquaux 贡献。显式关闭打开的文件以避免Python 3下的
ResourceWarnings。由Calvin Giles贡献。discriminant_analysis.LinearDiscriminantAnalysis的transform现在将输入投影到最具判别性的方向上。由Martin Billinger贡献。修复了
_tree.safe_realloc中的潜在溢出。由 Lars Buitinck 贡献。在
isotonic.IsotonicRegression中进行了性能优化。由Robert Bradshaw贡献。nose不再是导入sklearn的运行时依赖项,仅用于运行测试。由 Joel Nothman 贡献。许多文档和网站修复由 Joel Nothman 、 Lars Buitinck 、Matt Pico 等人贡献。
版本 0.15.1#
2014年8月1日
错误修复#
使
cross_validation.cross_val_score在多输出分类问题上使用cross_validation.KFold而不是cross_validation.StratifiedKFold。由 Nikolay Mayorov 贡献。支持
preprocessing.LabelBinarizer恢复未见过的标签。
0.14.1 默认行为的向后兼容性。由 Hamzeh Alsalhi 提供。
修复了
cluster.KMeans的停止准则,该准则阻止了早期收敛检测。由 Edward Raff 和 Gael Varoquaux 修复。修复了
multiclass.OneVsOneClassifier在每个类别投票级别出现平局时,通过计算正确的每个类别预测分数总和来修正行为。由 Andreas Müller 修复。使
cross_validation.cross_val_score和grid_search.GridSearchCV接受 Python 列表作为输入数据。这对于文本处理管道的交叉验证和模型选择特别有用。由 Andreas Müller 实现。修复了大多数估计器的数据输入检查,以接受实现 NumPy
__array__协议的输入数据。对于最近版本的 pandas 中的pandas.Series和pandas.DataFrame就是这种情况。由 Gael Varoquaux 修复。修复了
linear_model.SGDClassifier在非连续标签数据上使用class_weight="auto"时的回归问题。由 Olivier Grisel 修复。
版本 0.15#
2014年7月15日
亮点#
代码各处都有许多速度和内存改进
随机森林(和额外树)的速度和内存改进巨大,并且更好地受益于并行计算。
对
BernoulliRBM进行增量拟合添加了
cluster.AgglomerativeClustering用于具有平均连接、完全连接和沃德策略的层次聚类。添加了
linear_model.RANSACRegressor用于鲁棒回归模型。添加了
manifold.TSNE用于降维,可用于可视化高维数据。
变更日志#
新功能#
添加了
ensemble.BaggingClassifier和ensemble.BaggingRegressor元估计器,用于集成学习。
任何类型的基础估计器。有关详细信息和示例,请参阅用户指南中的 Bagging 部分。作者: Gilles Louppe 。
新的无监督特征选择算法
feature_selection.VarianceThreshold,作者: Lars Buitinck 。新增
linear_model.RANSACRegressor元估计器,用于回归模型的稳健拟合。作者:Johannes Schönberger 。新增
cluster.AgglomerativeClustering,用于具有平均链接、完全链接和沃德策略的层次聚类,作者: Nelle Varoquaux 和 Gael Varoquaux 。新增快捷构造函数
pipeline.make_pipeline和pipeline.make_union,作者: Lars Buitinck 。为
cross_validation.StratifiedKFold添加了随机选项。作者:Jeffrey Blackburne 。高斯朴素贝叶斯支持增量学习(
partial_fit),作者:Imran Haque。为
BernoulliRBM添加了partial_fit,作者:Danny Sullivan 。新增
learning_curve工具,用于根据训练规模绘制性能图表。参见 绘制学习曲线和检查模型的可扩展性 。作者:Alexander Fabisch。在
LassoCV和ElasticNetCV中添加了正选项。作者:Brian Wignall 和 Alexandre Gramfort 。新增
linear_model.MultiTaskElasticNetCV和linear_model.MultiTaskLassoCV。作者: Manoj Kumar 。新增
manifold.TSNE。作者:Alexander Fabisch。
增强功能#
为
ensemble.AdaBoostClassifier和ensemble.AdaBoostRegressor元估计器添加了稀疏输入支持。作者:Hamzeh Alsalhi 。决策树的内存改进,作者: Arnaud Joly 。
决策树现在可以通过使用
max_leaf_nodes作为停止条件以最佳优先方式构建。重构了树代码,使其可以使用任一方法。
使用堆栈或优先队列进行树构建。 由 Peter Prettenhofer 和 Gilles Louppe 提供。
决策树现在可以拟合 Fortran 和 C 风格的数组,以及无需复制即可处理非连续数组。 如果输入数组的 dtype 不同于
np.float32,将创建一个 Fortran 风格的副本,因为 Fortran 风格的内存布局具有速度优势。 由 Peter Prettenhofer 和 Gilles Louppe 提供。通过优化均方误差准则的计算,提高了回归树的速度。 这导致树、森林和梯度提升树模块的速度提升。 由 Arnaud Joly 提供。
sklearn.feature_extraction.image模块中的img_to_graph和grid_to_graph函数现在在return_as=np.ndarray时返回np.ndarray而不是np.matrix。 有关兼容性的更多信息,请参阅注释部分。更改了决策树的内部存储方式,使用结构化数组。 这修复了一些小错误,同时改进了代码并提供了轻微的速度提升。 由 Joel Nothman 提供。
通过利用 joblib 0.8 的新线程后端并在 Cython 代码中释放 GIL,减少了并行拟合和预测随机森林时的内存使用和开销(当
n_jobs != 1时)。 由 Olivier Grisel 和 Gilles Louppe 提供。提高了
sklearn.ensemble.gradient_boosting模块的速度。 由 Gilles Louppe 和 Peter Prettenhofer 提供。对
sklearn.ensemble.gradient_boosting模块进行了多项增强: 增加了warm_start参数以拟合额外的树, 增加了max_leaf_nodes参数以拟合 GBM 风格的树, 增加了monitor拟合参数以在训练期间检查估计器, 以及重构了详细代码。 由 Peter Prettenhofer 提供。通过缓存特征值,提高了
sklearn.ensemble.ExtraTrees的速度。 由 Arnaud Joly 提供。更快的基于深度的树构建算法,如决策树,
随机森林、极端随机树或梯度提升树(采用基于深度的生长策略)通过避免在样本子集中尝试对发现的常量特征进行分割。作者: Arnaud Joly 。
为基于树的方法添加了
min_weight_fraction_leaf预剪枝参数:叶节点所需的最小加权输入样本比例。作者: Noel Dawe 。添加了
metrics.pairwise_distances_argmin_min,作者:Philippe Gervais。为
cluster.AffinityPropagation和cluster.MeanShift添加了预测方法,作者: Mathieu Blondel 。向量和矩阵乘法在整个库中得到了优化,作者: Denis Engemann 和 Alexandre Gramfort 。特别是,在使用较旧的 NumPy 版本(早于 1.7.2)时,它们占用的内存更少。
精确召回率和 ROC 示例现在使用 train_test_split,并增加了对这些指标为何有用的解释。作者: Kyle Kastner
decomposition.NMF的训练算法对稀疏矩阵更快,并且内存复杂度大大降低,这意味着它将优雅地扩展到大型数据集。作者: Lars Buitinck 。为
decomposition.FactorAnalysis添加了默认值为 “randomized” 的 svd_method 选项,以节省内存并显著加速计算,作者: Denis Engemann 和 Alexandre Gramfort 。修改了
cross_validation.StratifiedKFold,尽量保持样本的原始顺序,以免在样本依赖性不可忽略的数据集上隐藏过拟合。作者: Daniel Nouri 和 Olivier Grisel 。为
gaussian_process.GaussianProcessRegressor添加了多输出支持,作者:John Novak。最近邻估计器支持预计算的距离矩阵,作者: Robert Layton 和 Joel Nothman 。
针对 NumPy 1.6 及更高版本的范数计算进行了优化,作者: Lars Buitinck 。特别是,k-means 算法不再
需要一个与其输入大小相同的临时数据结构。
dummy.DummyClassifier现在可以用于预测一个常量输出值。由 Manoj Kumar 提供。dummy.DummyRegressor现在有一个策略参数,允许预测训练集的均值、中位数或一个常量输出值。由 Maheshakya Wijewardena 提供。多标签分类输出在多标签指示器格式中现在被
metrics.roc_auc_score和metrics.average_precision_score支持。由 Arnaud Joly 提供。isotonic.IsotonicRegression的显著性能改进(对于大型问题超过100倍加速)。由 Andrew Tulloch 提供。线性模型的SGD算法的速度和内存使用改进:当
n_jobs>1时,现在使用线程而不是单独的进程。由 Lars Buitinck 提供。网格搜索和交叉验证允许输入数组中的NaNs,以便预处理器如
preprocessing.Imputer可以在交叉验证循环中进行训练,避免可能的偏斜结果。岭回归现在可以在特征空间中处理样本权重(之前仅在样本空间中)。由 Michael Eickenberg 提供。两种解决方案均由Cholesky求解器提供。
多个分类和回归指标现在支持加权样本,通过新的
sample_weight参数:metrics.accuracy_score,metrics.zero_one_loss,metrics.precision_score,metrics.average_precision_score,metrics.f1_score,metrics.fbeta_score,metrics.recall_score,metrics.roc_auc_score,metrics.explained_variance_score,metrics.mean_squared_error,metrics.mean_absolute_error,metrics.r2_score。由 Noel Dawe 提供。样本生成器
datasets.make_multilabel_classification的速度提升。由 Joel Nothman 提供。
文档改进#
《处理文本数据教程》 现已整合到主文档的教程部分。 包括教程展示的练习和框架。 原始教程由多位作者创建,包括 Olivier Grisel 、Lars Buitinck 和许多其他人。 教程整合到 scikit-learn 文档中 由 Jaques Grobler 完成。
添加了 计算性能 文档。 讨论和示例预测延迟/吞吐量以及影响速度的不同因素。 额外提示用于构建更快的模型并选择速度和预测能力之间的相关折中。 由 Eustache Diemert 完成。
Bug 修复#
修复了
decomposition.MiniBatchDictionaryLearning中的 bug:partial_fit未正常工作。修复了
linear_model.stochastic_gradient中的 bug:l1_ratio被用作(1.0 - l1_ratio)。修复了
multiclass.OneVsOneClassifier中字符串标签的 bug。修复了
LassoCV和ElasticNetCV中的 bug: 它们不会在precompute=True或precompute="auto"且n_samples > n_features时预计算 Gram 矩阵。 由 Manoj Kumar 完成。修复了
feature_selection.f_regression中自由度的不正确估计,当变量未居中时。 由 Virgile Fritsch 完成。修复了并行处理中
pre_dispatch != "all"(例如在cross_val_score中)时的竞争条件。 由 Olivier Grisel 完成。在
cluster.FeatureAgglomeration和cluster.WardAgglomeration中,当没有给出样本时,引发错误, 而不是返回无意义的聚类。修复了
gradient_boosting.GradientBoostingRegressor中loss='huber'的 bug:gamma可能未初始化。修复了在使用
sample_weight != None和/或bootstrap=True时,随机森林计算的特征重要性。 由 Gilles Louppe 提供。
API 变更总结#
sklearn.hmm已被弃用。计划在 0.17 版本中移除。在弃用后,
covariance.EllipticEnvelop的使用已被移除。 请改用covariance.EllipticEnvelope。cluster.Ward已被弃用。请改用cluster.AgglomerativeClustering。cluster.WardClustering已被弃用。请改用cluster.AgglomerativeClustering。cross_validation.Bootstrap已被弃用。 推荐使用cross_validation.KFold或cross_validation.ShuffleSplit。直接支持序列的序列(或列表的列表)多标签格式已被弃用。 要转换为支持的二进制指示矩阵格式,请使用
preprocessing.MultiLabelBinarizer。 由 Joel Nothman 提供。在
decomposition.PCA中添加了 score 方法,遵循概率 PCA 模型,并弃用ProbabilisticPCA模型,其 score 实现不正确。现在还利用矩阵求逆引理进行更快的计算。 由 Alexandre Gramfort 提供。decomposition.FactorAnalysis的 score 方法 现在返回样本的平均对数似然。使用 score_samples 获取每个样本的对数似然。 由 Alexandre Gramfort 提供。从交叉验证生成器生成布尔掩码(设置
indices=False) 已被弃用。对掩码的支持将在 0.17 版本中移除。 自 0.10 版本以来,生成器默认生成索引数组。 由 Joel Nothman 提供。包含字符串的 1 维数组(如在 Pandas 中使用的
dtype=object) 现在被视为有效的分类目标。这修复了某些分类器从 0.13 版本开始的回归问题。 由 Joel Nothman 提供。修复
RandomizedPCA中错误的explained_variance_ratio_属性。 由 Alexandre Gramfort 贡献。在
linear_model.ElasticNetCV和linear_model.LassoCV中, 为每个l1_ratio而不是mean_l1_ratio拟合 alpha。 这改变了alphas_的形状,从(n_alphas,)变为(n_l1_ratio, n_alphas), 如果提供的l1_ratio是一个长度大于一的一维数组对象。 由 Manoj Kumar 贡献。修复在拟合截距且输入数据为稀疏时,
linear_model.ElasticNetCV和linear_model.LassoCV的问题。自动 alpha 网格计算不正确,且归一化缩放有误。 由 Manoj Kumar 贡献。修复决策树、随机森林和梯度提升树在每次分割时抽取的最大特征数 (
max_features) 错误。 之前,抽取特征的数量计数仅在分割中有一个非恒定特征后才开始。此错误修复将影响这些算法在存在恒定特征时的计算和泛化性能。 要恢复之前的泛化性能,应修改max_features的值。 由 Arnaud Joly 贡献。修复
ensemble.ExtraTreesClassifier和ensemble.ExtraTreesRegressor在每次分割时抽取的最大特征数 (max_features) 错误。之前,仅将分割中的非恒定特征计为抽取。 现在恒定特征也被计为抽取。此外,为了进行有效分割,至少有一个特征必须是非恒定的。 此错误修复将影响额外树在存在恒定特征时的计算和泛化性能。 要恢复之前的泛化性能,应修改max_features的值。 由 Arnaud Joly 贡献。修复当
class_weight=="auto"时utils.class_weight.compute_class_weight的问题。 之前对于非整数dtype的输入是无效的。 返回的加权数组是错误的。由 Manoj Kumar 提供。修复
cross_validation.Bootstrap以在n_train + n_test > n时返回ValueError。由 Ronald Phlypo 提供。
贡献者#
按提交次数列出的 0.15 版本贡献者名单。
312 Olivier Grisel
275 Lars Buitinck
221 Gael Varoquaux
148 Arnaud Joly
134 Johannes Schönberger
119 Gilles Louppe
113 Joel Nothman
111 Alexandre Gramfort
95 Jaques Grobler
89 Denis Engemann
83 Peter Prettenhofer
83 Alexander Fabisch
62 Mathieu Blondel
60 Eustache Diemert
60 Nelle Varoquaux
49 Michael Bommarito
45 Manoj-Kumar-S
28 Kyle Kastner
26 Andreas Mueller
22 Noel Dawe
21 Maheshakya Wijewardena
21 Brooke Osborn
21 Hamzeh Alsalhi
21 Jake VanderPlas
21 Philippe Gervais
19 Bala Subrahmanyam Varanasi
12 Ronald Phlypo
10 Mikhail Korobov
8 Thomas Unterthiner
8 Jeffrey Blackburne
8 eltermann
8 bwignall
7 Ankit Agrawal
7 CJ Carey
6 Daniel Nouri
6 Chen Liu
6 Michael Eickenberg
6 ugurthemaster
5 Aaron Schumacher
5 Baptiste Lagarde
5 Rajat Khanduja
5 Robert McGibbon
5 Sergio Pascual
4 Alexis Metaireau
4 Ignacio Rossi
4 Virgile Fritsch
4 Sebastian Säger
4 Ilambharathi Kanniah
4 sdenton4
4 Robert Layton
4 Alyssa
4 Amos Waterland
3 Andrew Tulloch
3 murad
3 Steven Maude
3 Karol Pysniak
3 Jacques Kvam
3 cgohlke
3 cjlin
3 Michael Becker
3 hamzeh
3 Eric Jacobsen
3 john collins
3 kaushik94
3 Erwin Marsi
2 csytracy
2 LK
2 Vlad Niculae
2 Laurent Direr
2 Erik Shilts
2 Raul Garreta
2 Yoshiki Vázquez Baeza
2 Yung Siang Liau
2 abhishek thakur
2 James Yu
2 Rohit Sivaprasad
2 Roland Szabo
2 amormachine
2 Alexis Mignon
2 Oscar Carlsson
2 Nantas Nardelli
2 jess010
2 kowalski87
2 Andrew Clegg
2 Federico Vaggi
2 Simon Frid
2 Félix-Antoine Fortin
1 Ralf Gommers
1 t-aft
1 Ronan Amicel
1 Rupesh Kumar Srivastava
1 Ryan Wang
1 Samuel Charron
1 Samuel St-Jean
1 Fabian Pedregosa
1 Skipper Seabold
1 Stefan Walk
1 Stefan van der Walt
1 Stephan Hoyer
1 Allen Riddell
1 Valentin Haenel
1 Vijay Ramesh
1 Will Myers
1 Yaroslav Halchenko
1 Yoni Ben-Meshulam
1 Yury V. Zaytsev
1 adrinjalali
1 ai8rahim
1 alemagnani
1 alex
1 benjamin wilson
1 chalmerlowe
1 dzikie drożdże
1 jamestwebber
1 matrixorz
1 popo
1 samuela
1 François Boulogne
1 Alexander Measure
1 Ethan White
1 Guilherme Trein
1 Hendrik Heuer
1 IvicaJovic
1 Jan Hendrik Metzen
1 Jean Michel Rouly
1 Eduardo Ariño de la Rubia
1 Jelle Zijlstra
1 Eddy L O Jansson
1 Denis
1 John
1 John Schmidt
1 Jorge Cañardo Alastuey
1 Joseph Perla
1 Joshua Vredevoogd
1 José Ricardo
1 Julien Miotte
1 Kemal Eren
1 Kenta Sato
1 David Cournapeau
1 Kyle Kelley
1 Daniele Medri
1 Laurent Luce
1 Laurent Pierron
1 Luis Pedro Coelho
1 DanielWeitzenfeld
1 Craig Thompson
1 Chyi-Kwei Yau
1 Matthew Brett
1 Matthias Feurer
1 Max Linke
1 Chris Filo Gorgolewski
1 Charles Earl
1 Michael Hanke
1 Michele Orrù
1 Bryan Lunt
1 Brian Kearns
1 Paul Butler
1 Paweł Mandera
1 Peter
1 Andrew Ash
1 Pietro Zambelli
1 staubda