版本 0.15#
版本 0.15.2#
2014年9月4日
错误修复#
修复了先前在最近邻模型中被忽略的 Minkowski 距离的
p
参数的处理方式。由 Nikolay Mayorov 完成。修复了
linear_model.LassoLars
在 32 位 Python 上提前停止时出现的重复 alpha 值。由 Olivier Grisel 和 Fabian Pedregosa 完成。修复了在使用 MSVC 构建 scikit-learn 而使用 MinGW 构建 NumPy 时,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
,用于具有平均连接、完全连接和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。添加了
pipeline.make_pipeline
和pipeline.make_union
简写构造函数,作者:Lars Buitinck。为
cross_validation.StratifiedKFold
添加了混洗选项。作者:Jeffrey Blackburne。Imran Haque 为高斯朴素贝叶斯添加了增量学习(
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
作为停止条件,以最佳优先方式构建决策树。重构了树代码,以便使用堆栈或优先队列来构建树。作者: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
。有关兼容性的更多信息,请参见注释部分。将决策树的内部存储更改为使用结构化数组。这修复了一些小错误,同时改进了代码并提供了少量速度提升。作者: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
参数;用于拟合 GBM 风格树的max_leaf_nodes
参数;用于在训练期间检查估计器的monitor
拟合参数;以及冗余代码的重构。作者:Peter Prettenhofer。通过缓存特征值,加快了
sklearn.ensemble.ExtraTrees
的速度。作者:Arnaud Joly。通过避免尝试在样本子集中分割已找到的常数特征,加快了基于深度的树构建算法(如决策树、随机森林、额外树或梯度树提升(具有基于深度的增长策略))的速度。作者:Arnaud Joly。
为基于树的方法添加了
min_weight_fraction_leaf
预剪枝参数:叶子节点所需的输入样本的最小加权分数。作者:Noel Dawe。添加了
metrics.pairwise_distances_argmin_min
,作者:Philippe Gervais。由 Mathieu Blondel 添加了
cluster.AffinityPropagation
和cluster.MeanShift
的预测方法。由 Denis Engemann 和 Alexandre Gramfort 优化了整个库中的向量和矩阵乘法。特别是,它们在较旧的 NumPy 版本(1.7.2 之前)中应该占用更少的内存。
精度-召回率和 ROC 示例现在使用 train_test_split,并更详细地解释了这些指标为何有用。作者:Kyle Kastner
decomposition.NMF
的训练算法对于稀疏矩阵更快,并且内存复杂度更低,这意味着它可以优雅地扩展到大型数据集。作者:Lars Buitinck。添加了带有默认值“randomized”的 svd_method 选项到
decomposition.FactorAnalysis
,以节省内存并显著加快计算速度。作者: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。现在,
metrics.roc_auc_score
和metrics.average_precision_score
支持多标签指示符格式的多标签分类输出。作者:Arnaud Joly。isotonic.IsotonicRegression
的性能显著提升(大型问题速度提升超过 100 倍)。作者:Andrew Tulloch。线性模型的 SGD 算法的速度和内存使用改进:现在在
n_jobs>1
时使用线程,而不是单独的进程。作者:Lars Buitinck。网格搜索和交叉验证允许输入数组中存在 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完成。
错误修复#
修复了
decomposition.MiniBatchDictionaryLearning
中的错误:partial_fit
无法正常工作。修复了
linear_model.stochastic_gradient
中的错误:l1_ratio
被用作(1.0 - l1_ratio)
。修复了使用字符串标签的
multiclass.OneVsOneClassifier
中的错误。修复了
LassoCV
和ElasticNetCV
中的一个错误:它们不会使用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'
的错误: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。在
decomposition.PCA
中添加 score 方法,遵循概率 PCA 模型,并弃用ProbabilisticPCA
模型(其 score 实现不正确)。计算现在还利用矩阵求逆引理来加快计算速度。作者: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
中,为每个l1_ratio
拟合 alpha,而不是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
)错误的问题。以前,绘制特征数的计数仅在分割中出现一个非常数特征后才开始。此错误修复将影响在存在常数特征的情况下这些算法的计算和泛化性能。要恢复以前的泛化性能,应修改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