版本 0.15#
版本 0.15.2#
2014年9月4日
Bug 修复#
修复了 Minkowski 距离的
p
参数处理问题,该参数以前在最近邻模型中被忽略。由 Nikolay Mayorov 贡献。修复了 32 位 Python 上
linear_model.LassoLars
在早期停止时出现重复 alpha 值的问题。由 Olivier Grisel 和 Fabian Pedregosa 贡献。修复了 Windows 下当 scikit-learn 使用 MSVC 构建而 NumPy 使用 MinGW 构建时出现的构建问题。由 Olivier Grisel 和 Federico Vaggi 贡献。
修复了坐标下降求解器中的数组索引溢出 bug。由 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日
Bug 修复#
在多输出分类问题中,使
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
用于层次凝聚聚类,支持平均链接、完全链接和 Ward 策略。新增
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
,用于层次凝聚聚类,支持平均链接、完全链接和 Ward 策略。由 Nelle Varoquaux 和 Gael Varoquaux 贡献。由 Lars Buitinck 贡献了简写构造函数
pipeline.make_pipeline
和pipeline.make_union
。cross_validation.StratifiedKFold
增加了混洗(Shuffle)选项。由 Jeffrey Blackburne 贡献。由 Imran Haque 贡献,Gaussian Naive Bayes 增加了增量学习(
partial_fit
)。为
BernoulliRBM
添加了partial_fit
。由 Danny Sullivan 贡献。新增
learning_curve
工具,用于绘制性能与训练集大小的关系图。详见 绘制学习曲线和检查模型的伸缩性。由 Alexander Fabisch 贡献。在
LassoCV
和ElasticNetCV
中添加了positive
选项。由 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
作为停止准则来以最佳优先(best-first)方式构建决策树。重构了树代码,使其可以使用栈或优先队列进行树构建。由 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_tograph
函数现在在return_as=np.ndarray
时返回np.ndarray
而不是np.matrix
。有关兼容性的更多信息,请参阅“注意事项”部分。更改了决策树的内部存储方式,使用结构化数组。这修复了一些小 bug,同时改进了代码并带来了一点速度提升。由 Joel Nothman 贡献。
当使用
n_jobs != 1
并行拟合和预测随机树森林时,通过利用 joblib 0.8 的新线程后端并在树拟合 Cython 代码中释放 GIL,减少了内存使用和开销。由 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
添加了 predict 方法。由 Mathieu Blondel 贡献。由 Denis Engemann 和 Alexandre Gramfort 对整个库中的向量和矩阵乘法进行了优化。特别是,对于较旧的 NumPy 版本(1.7.2 之前),它们应该占用更少的内存。
精确度-召回率和 ROC 示例现在使用 train_test_split,并对这些指标为何有用提供了更多解释。由 Kyle Kastner 贡献。
decomposition.NMF
的训练算法对于稀疏矩阵更快,并且内存复杂度大大降低,这意味着它将优雅地扩展到大型数据集。由 Lars Buitinck 贡献。为
decomposition.FactorAnalysis
添加了svd_method
选项,默认值为“randomized”,以节省内存并显著加快计算速度。由 Denis Engemann 和 Alexandre Gramfort 贡献。更改了
cross_validation.StratifiedKFold
,使其尽量保留样本的原始顺序,以避免在具有不可忽略的样本依赖性的数据集上隐藏过拟合。由 Daniel Nouri 和 Olivier Grisel 贡献。由 John Novak 贡献,为
gaussian_process.GaussianProcessRegressor
添加了多输出支持。由 Robert Layton 和 Joel Nothman 贡献,最近邻估计器支持预计算距离矩阵。
由 Lars Buitinck 贡献,针对 NumPy 1.6 及更高版本优化了范数计算。特别是,k-means 算法不再需要与其输入大小相同的临时数据结构。
dummy.DummyClassifier
现在可用于预测常量输出值。由 Manoj Kumar 贡献。dummy.DummyRegressor
现在有一个策略参数,允许预测训练集的均值、中位数或常量输出值。由 Maheshakya Wijewardena 贡献。由 Arnaud Joly 贡献,
metrics.roc_auc_score
和metrics.average_precision_score
现在支持多标签指示器格式的多标签分类输出。由 Andrew Tulloch 贡献,
isotonic.IsotonicRegression
性能显著提升(对于大型问题,加速超过 100 倍)。由 Lars Buitinck 贡献,线性模型的 SGD 算法速度和内存使用得到改进:当
n_jobs>1
时,它现在使用线程而不是独立的进程。网格搜索和交叉验证允许输入数组中包含 NaN,以便预处理器(如
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
已弃用。请改用cross_validation.Bootstrap
已弃用。建议改用cross_validation.KFold
或cross_validation.ShuffleSplit
。直接支持序列的序列(或列表的列表)多标签格式已弃用。要转换为和从支持的二进制指示矩阵格式进行转换,请使用
preprocessing.MultiLabelBinarizer
。由 Joel Nothman 贡献。按照概率 PCA 的模型,为
decomposition.PCA
添加了 score 方法,并弃用了 score 实现不正确的ProbabilisticPCA
模型。计算现在还利用矩阵求逆引理以加快计算速度。由 Alexandre Gramfort 贡献。decomposition.FactorAnalysis
的 score 方法现在返回样本的平均对数似然。使用 score_samples 获取每个样本的对数似然。由 Alexandre Gramfort 贡献。从交叉验证生成器生成布尔掩码(
indices=False
设置)已弃用。对掩码的支持将在 0.17 版本中移除。自 0.10 版本以来,生成器默认生成索引数组。由 Joel Nothman 贡献。现在,包含字符串且
dtype=object
的一维数组(如在 Pandas 中使用)被视为有效的分类目标。这修复了 0.13 版本中某些分类器的一个回归问题。由 Joel Nothman 贡献。修复了
RandomizedPCA
中错误的explained_variance_ratio_
属性。由 Alexandre Gramfort 贡献。修复
linear_model.ElasticNetCV
和linear_model.LassoCV
的 alpha 值,使其为每个l1_ratio
而不是mean_l1_ratio
拟合。如果提供的l1_ratio
是长度大于 1 的一维数组,则alphas_
的形状将从(n_alphas,)
变为(n_l1_ratio, n_alphas)
。由 Manoj Kumar 贡献。修复了
linear_model.ElasticNetCV
和linear_model.LassoCV
在拟合截距且输入数据稀疏时的错误。自动 alpha 网格计算不正确,并且与 normalize 的缩放也存在问题。由 Manoj Kumar 贡献。修复了决策树、随机森林和梯度树提升在每次分裂时抽取特征的最大数量(
max_features
)的错误。此前,抽取特征的计数仅在分裂中出现非常数特征后才开始。此 bug 修复将影响这些算法在存在常数特征时的计算和泛化性能。要恢复以前的泛化性能,应修改max_features
的值。由 Arnaud Joly 贡献。修复了
ensemble.ExtraTreesClassifier
和ensemble.ExtraTreesRegressor
在每次分裂时抽取特征的最大数量(max_features
)的错误。此前,只有分裂中的非常数特征才会被计数为抽取特征。现在,常数特征也会被计数为抽取特征。此外,为了进行有效的特征分裂,至少需要一个非常数特征。此 bug 修复将影响极端随机树在存在常数特征时的计算和泛化性能。要恢复以前的泛化性能,应修改max_features
的值。由 Arnaud Joly 贡献。修复了
utils.class_weight.compute_class_weight
在class_weight=="auto"
时的错误。此前,它对非整数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