版本 0.16#
版本 0.16.1#
2015年4月14日
变更日志#
错误修复#
允许输入数据大于
block_size
在covariance.LedoitWolf
中,由 Andreas Müller 完成。修复了
isotonic.IsotonicRegression
重复数据消除中的一个错误,该错误导致calibration.CalibratedClassifierCV
结果不稳定,由 Jan Hendrik Metzen 完成。修复了 func:
preprocessing.label_binarize
中标签排序的错误,由 Michael Heilman 完成。修复了
cross_decomposition.CCA
和cross_decomposition.PLSCanonical
中的几个稳定性和收敛性问题,由 Andreas Müller 完成。修复了当
precompute_distances=False
用于 Fortran 顺序数据时cluster.KMeans
中的一个错误。修复了
ensemble.RandomForestClassifier
的predict
和predict_proba
中的速度回归问题,由 Andreas Müller 完成。修复了一个回归问题,其中
utils.shuffle
将列表和数据框转换为数组,由 Olivier Grisel 完成。
版本 0.16#
2015年3月26日
亮点#
速度改进(尤其是在
cluster.DBSCAN
中),降低了内存需求,修复了错误并改进了默认设置。在
linear_model.LogisticRegressionCV
中添加了多项式逻辑回归和路径算法。通过
decomposition.IncrementalPCA
实现 PCA 的 Out-of-core 学习。使用
calibration.CalibratedClassifierCV
对分类器进行概率校准。cluster.Birch
用于大规模数据集的聚类方法。在
neighbors.LSHForest
中使用局部敏感哈希森林进行可扩展的近似最近邻搜索。改进了错误消息,并改进了使用格式错误的输入数据时的验证。
更强大的 pandas 数据框集成。
变更日志#
新功能#
新的
neighbors.LSHForest
实现局部敏感哈希以进行近似最近邻搜索。由 Maheshakya Wijewardena 完成。添加了
svm.LinearSVR
。此类使用支持向量回归的 liblinear 实现,对于大型样本量而言,比使用线性核的svm.SVR
快得多。由 Fabian Pedregosa 和 Qiang Luo 完成。针对
GaussianNB
的增量拟合。为
dummy.DummyClassifier
和dummy.DummyRegressor
添加了sample_weight
支持。由 Arnaud Joly 完成。添加了
metrics.label_ranking_average_precision_score
度量。由 Arnaud Joly 完成。添加了
metrics.coverage_error
度量。由 Arnaud Joly 完成。添加了
linear_model.LogisticRegressionCV
。由 Manoj Kumar、Fabian Pedregosa、Gael Varoquaux 和 Alexandre Gramfort 完成。新增了
warm_start
构造函数参数,使任何已训练的森林模型都可以增量地添加树。作者:Laurent Direr。为
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
添加了sample_weight
支持。作者:Peter Prettenhofer。新增了
decomposition.IncrementalPCA
,这是一个支持使用partial_fit
方法进行内存外学习的 PCA 算法实现。作者:Kyle Kastner。为
SGDClassifier
和SGDRegressor
添加了平均 SGD。作者:Danny Sullivan。新增了
cross_val_predict
函数,用于计算交叉验证估计值。作者:Luis Pedro Coelho新增了
linear_model.TheilSenRegressor
,一个基于稳健广义中值的估计器。作者:Florian Wilhelm。新增了
metrics.median_absolute_error
,一个稳健的度量指标。作者:Gael Varoquaux 和 Florian Wilhelm。新增了
cluster.Birch
,一个在线聚类算法。作者:Manoj Kumar,Alexandre Gramfort 和 Joel Nothman。使用两个新的求解器为
discriminant_analysis.LinearDiscriminantAnalysis
添加了收缩支持。作者:Clemens Brunner 和 Martin Billinger。新增了
kernel_ridge.KernelRidge
,一个核化岭回归的实现。作者:Mathieu Blondel 和 Jan Hendrik Metzen。linear_model.Ridge
中的所有求解器现在都支持sample_weight
。作者:Mathieu Blondel。新增了
cross_validation.PredefinedSplit
交叉验证,用于固定用户提供的交叉验证折叠。作者:Thomas Unterthiner。新增了
calibration.CalibratedClassifierCV
,一种校准分类器预测概率的方法。作者:Alexandre Gramfort,Jan Hendrik Metzen,Mathieu Blondel 和 Balazs Kegl。
增强功能#
在
hierarchical.ward_tree
中添加了选项return_distance
,用于返回算法的结构化和非结构化版本中节点之间的距离。作者:Matteo Visconti di Oleggio Castello。相同的选项也添加到hierarchical.linkage_tree
中。作者:Manoj Kumar在评分器对象中添加了对样本权重的支持。支持样本权重的度量指标将自动从中受益。作者:Noel Dawe 和 Vlad Niculae。
在
linear_model.LogisticRegression
中添加了newton-cg
和lbfgs
求解器支持。作者:Manoj Kumar。为
linear_model.Lasso
、linear_model.ElasticNet
和相关模型添加了selection="random"
参数,以实现随机坐标下降。作者:Manoj Kumar。为
metrics.jaccard_similarity_score
和metrics.log_loss
添加了sample_weight
参数。作者:Jatin Shah。在
preprocessing.LabelBinarizer
和multiclass.OneVsRestClassifier
中支持稀疏多标签指示符表示(作者:Hamzeh Alsalhi,感谢 Rohit Sivaprasad),以及评估指标(作者:Joel Nothman)。为
metrics.jaccard_similarity_score
添加了sample_weight
参数。作者:Jatin Shah
。为
metrics.hinge_loss
添加了多类别支持。添加了labels=None
作为可选参数。作者:Saurabh Jha
。为
metrics.hinge_loss
添加了sample_weight
参数。作者:Saurabh Jha
。在
linear_model.LogisticRegression
中添加了multi_class="multinomial"
选项,以实现一个逻辑回归求解器,该求解器最小化交叉熵或多项式损失,而不是默认的 One-vs-Rest 设置。支持lbfgs
和newton-cg
求解器。作者:Lars Buitinck 和 Manoj Kumar。求解器选项newton-cg
由 Simon Wu 提供。DictVectorizer
现在可以在单次传递中对可迭代对象执行fit_transform
,前提是选择sort=False
选项。作者:Dan Blanchard。model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
现在可以配置为与可能在单个fold上失败并引发错误的估计器一起使用。此选项由error_score
参数控制。这不会影响重新拟合时引发的错误。作者:Michal Romaniuk。为
metrics.classification_report
添加了digits
参数,以允许报告显示不同精度的浮点数。作者:Ian Gilmore。为
dummy.DummyRegressor
添加了一种分位数预测策略。作者:Aaron Staple。为
preprocessing.OneHotEncoder
添加了handle_unknown
选项,以便在转换期间更优雅地处理未知的分类特征。作者:Manoj Kumar。增加了对决策树及其集成进行稀疏输入数据支持。作者:Fares Hedyati 和 Arnaud Joly。
通过减少大型临时数据结构的内存分配次数来优化
cluster.AffinityPropagation
。作者:Antony Lee。并行化了随机森林中特征重要性的计算。作者:Olivier Grisel 和 Arnaud Joly。
为在其构造函数中接受
max_iter
属性的估计器添加了n_iter_
属性。作者:Manoj Kumar。为
multiclass.OneVsOneClassifier
添加了决策函数。作者:Raghav RV 和 Kyle Beauchamp。neighbors.kneighbors_graph
和radius_neighbors_graph
支持非欧几里得度量。作者:Manoj Kumarcluster.AgglomerativeClustering
及其系列中的connectivity
参数现在接受返回连接矩阵的可调用对象。作者:Manoj Kumar。为
metrics.pairwise.paired_distances
添加了稀疏支持。作者:Joel Nothman。cluster.DBSCAN
现在支持稀疏输入和样本权重,并且已经过优化:内部循环已使用 Cython 重写,并且现在批量计算半径邻域查询。作者:Joel Nothman 和 Lars Buitinck。为
ensemble.RandomForestClassifier
、tree.DecisionTreeClassifier
、ensemble.ExtraTreesClassifier
和tree.ExtraTreeClassifier
添加了class_weight
参数,以便根据类频率自动为样本加权。作者:Trevor Stephens。grid_search.RandomizedSearchCV
现在如果所有参数都作为列表给出,则会进行无放回抽样。作者:Andreas Müller。现在支持对
metrics.pairwise_distances
进行并行化计算,适用于 scipy 度量和自定义可调用对象。作者:Joel Nothman。允许在
pipeline.Pipeline
中拟合和评分所有聚类算法。作者:Andreas Müller。Andreas Müller 增强了
cluster.MeanShift
的种子生成,并改进了错误信息。Hervé Bredin 修改了
mixture.GMM
、mixture.DPGMM
和mixture.VBGMM
的停止准则,使其不再过度依赖样本数量,而是通过对平均对数似然变化进行阈值处理,而不是对所有样本的总和进行阈值处理。Hasil Sharma 通过反转特征向量的符号,使
manifold.spectral_embedding
的输出结果具有确定性。Eric Martin 显著提升了
preprocessing.PolynomialFeatures
的性能和内存使用效率。Nicolas Goix 提升了
preprocessing.StandardScaler
和preprocessing.scale
的数值稳定性。Rob Zinkov 和 Andreas Müller 实现了在稀疏输入上训练的
svm.SVC
的decision_function
方法。cross_validation.train_test_split
现在保留输入类型,而不是转换为 NumPy 数组。
文档改进#
Matt Terry 添加了使用
pipeline.FeatureUnion
处理异构输入的示例。Matt Pico 改进了评分器的文档,重点说明了损失函数的处理。
Manoj Kumar 指出了 liblinear 输出和 scikit-learn 包装器之间存在差异。
Joel Nothman 改善了文档生成:现在在类/函数的 API 参考页面上显示了引用该类或函数的示例。
Joel Nothman 更详细地说明了样本生成器和数据转换。
Manoj Kumar 修复了
sklearn.neighbors.BallTree
和sklearn.neighbors.KDTree
指向空页面的问题,这些页面之前声明它们是 BinaryTree 的别名。现在已修复为显示正确的类文档。添加了使用
metrics.silhouette_samples
和metrics.silhouette_score
对 KMeans 聚类进行分析的轮廓图。参见 使用轮廓分析选择 KMeans 聚类的簇数量
错误修复#
元估计器现在支持对
decision_function
、predict_proba
和其他方法的存在进行鸭子类型检查。这修复了嵌套使用grid_search.GridSearchCV
、grid_search.RandomizedSearchCV
、pipeline.Pipeline
、feature_selection.RFE
、feature_selection.RFECV
时的行为。Joel Nothman。当使用
grid_search.GridSearchCV
作为基础估计器或基础估计器没有 predict 方法时,网格搜索和交叉验证方法的scoring
属性不再被忽略。Matteo Visconti di Oleggio Castello 修改了
hierarchical.ward_tree
函数,使其在结构化和非结构化版本中都以相同的顺序返回子节点。Nikolay Mayorov 修复了
feature_selection.RFECV
在step
不等于 1 时的处理问题。Michael Eickenberg 修改了
decomposition.PCA
,使其在inverse_transform
中撤销白化操作。此外,其components_
现在始终具有单位长度。修复调用
datasets.download_20newsgroups
时数据集下载不完整的问题。由Manoj Kumar完成。Vincent Dubourg和Jan Hendrik Metzen对高斯过程子包进行了多项修复。
使用
class_weight=='auto'
调用partial_fit
会抛出一个合适的错误消息,并建议一种解决方法。由Danny Sullivan完成。RBFSampler
使用gamma=g
之前近似于rbf_kernel
使用gamma=g/2.
;现在gamma
的定义一致,如果您使用固定值,这可能会大幅改变您的结果。(如果您对gamma
进行了交叉验证,可能影响不大。)由Dougal Sutherland完成。Pipeline 对象将
classes_
属性委托给底层估计器。例如,它允许对 Pipeline 对象进行 bagging。由Arnaud Joly完成。neighbors.NearestCentroid
现在在度量设置为manhattan
时使用中位数作为质心。之前使用的是均值。由Manoj Kumar完成。通过裁剪大的梯度并确保权重衰减重新缩放始终为正(对于大的 l2 正则化和大的学习率值),修复了
linear_model.SGDClassifier
和linear_model.SGDRegressor
中的数值稳定性问题。由Olivier Grisel完成。当
compute_full_tree
设置为“auto”时,当n_clusters较高时会构建完整的树,当n_clusters较低时会提前停止,而cluster.AgglomerativeClustering
(及其相关函数)的行为应该是相反的。此问题已修复。由Manoj Kumar完成。修复了
linear_model.enet_path
和linear_model.lasso_path
中数据的惰性居中问题。之前是围绕1居中。现在已更改为围绕原点居中。由Manoj Kumar完成。修复了在使用连接约束时
cluster.AgglomerativeClustering
中处理预计算亲和矩阵的问题。由Cathy Deng完成。修正了
sklearn.naive_bayes.MultinomialNB
和sklearn.naive_bayes.BernoulliNB
的partial_fit
对class_prior
的处理。由Trevor Stephens完成。修复了在多标签设置中使用未排序
labels
时metrics.precision_recall_fscore_support
中的崩溃问题。由Andreas Müller完成。在
sklearn.neighbors.NearestNeighbors
及其相关函数中,当查询数据与拟合数据不同时,避免跳过radius_neighbors
、kneighbors
、kneighbors_graph
和radius_neighbors_graph
方法中的第一个最近邻。由Manoj Kumar完成。修复了使用绑定协方差的
mixture.GMM
中的对数密度计算问题。由Will Dawson完成。修复了
feature_selection.SelectFdr
中的一个缩放错误,其中缺少因子n_features
。由Andrew Tulloch完成。修复了在使用距离加权和具有相同数据点时
neighbors.KNeighborsRegressor
和相关类中的零除问题。由Garret-R完成。修复了GMM中与非正定协方差矩阵相关的舍入误差。由Alexis Mignon完成。
修复了
naive_bayes.BernoulliNB
中条件概率计算中的错误。由 Hanna Wallach 完成。使
neighbors.NearestNeighbors
的radius_neighbors
方法在algorithm='brute'
时返回位于边界上的样本。由 Yan Yi 完成。反转
svm.SVC
的dual_coef_
的符号,使其与文档和decision_function
保持一致。由 Artem Sobolev 完成。修复了
isotonic.IsotonicRegression
中对平局的处理。我们现在使用目标的加权平均值(次要方法)。由 Andreas Müller 和 Michael Bommarito 完成。
API 变更概要#
GridSearchCV
和cross_val_score
以及其他元估计器不再将 pandas DataFrame 转换为数组,允许在自定义估计器中进行 DataFrame 特定的操作。multiclass.fit_ovr
、multiclass.predict_ovr
、predict_proba_ovr
、multiclass.fit_ovo
、multiclass.predict_ovo
、multiclass.fit_ecoc
和multiclass.predict_ecoc
已弃用。请改用底层估计器。最近邻估计器过去可以接受任意关键字参数并将这些参数传递给它们的距离度量。scikit-learn 0.18 将不再支持此功能;请改用
metric_params
参数。n_jobs
参数已从拟合方法移至LinearRegression 类的构造函数。
multiclass.OneVsRestClassifier
的predict_proba
方法现在在多类别情况下为每个样本返回两个概率;这与其他估计器和方法文档一致,但之前的版本意外地只返回了正概率。由 Will Lamond 和 Lars Buitinck 修复。将
linear_model.ElasticNet
和linear_model.Lasso
中precompute
的默认值更改为 False。发现当 n_samples > n_features 时,将precompute
设置为“auto”会更慢,因为 Gram 矩阵的计算非常耗时,并且超过了仅为一个 alpha 拟合 Gram 的好处。precompute="auto"
现已弃用,将在 0.18 中移除。由 Manoj Kumar 完成。在
linear_model.enet_path
中公开positive
选项,该选项将系数限制为正数。由 Manoj Kumar 完成。在执行多类别或多标签(即非二元)分类时,用户现在应该为
sklearn.metrics.f1_score
、sklearn.metrics.fbeta_score
、sklearn.metrics.recall_score
和sklearn.metrics.precision_score
提供显式的average
参数。由 Joel Nothman 完成。交叉验证的
scoring
参数现在接受'f1_micro'
、'f1_macro'
或'f1_weighted'
。'f1'
现在仅用于二元分类。类似的更改适用于'precision'
和'recall'
。由 Joel Nothman 完成。linear_model.enet_path
和linear_model.lasso_path
中的fit_intercept
、normalize
和return_models
参数已被移除。它们自 0.14 版本起已被弃用。从现在起,所有估计器在拟合模型之前调用任何类似
predict
的方法时,都将统一引发NotFittedError
。作者:Raghav RV。对输入数据验证进行了重构,以实现更一致的输入验证。
check_arrays
函数被check_array
和check_X_y
替换。作者:Andreas Müller。在
sklearn.neighbors.NearestNeighbors
及其相关类中,允许在radius_neighbors
、kneighbors
、kneighbors_graph
和radius_neighbors_graph
方法中使用X=None
。如果设置为 None,则对于每个样本,这将避免将样本本身设置为第一个最近邻。作者:Manoj Kumar。在
neighbors.kneighbors_graph
和neighbors.radius_neighbors_graph
中添加参数include_self
,该参数必须由用户显式设置。如果设置为 True,则样本本身将被视为第一个最近邻。thresh
参数已弃用,在GMM
、DPGMM
和VBGMM
中,建议使用新的tol
参数。详情请参阅“增强功能”部分。作者:Hervé Bredin。估计器将尽可能将 dtype 为 object 的输入视为数值型。作者:Andreas Müller
当对空数据(少于 1 个样本或对于二维输入少于 1 个特征)进行拟合时,估计器现在会一致地引发
ValueError
。作者:Olivier Grisel。linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.Perceptron
、linear_model.PassiveAggressiveClassifier
和linear_model.PassiveAggressiveRegressor
的shuffle
选项现在默认为True
。cluster.DBSCAN
现在使用确定性初始化。random_state
参数已弃用。作者:Erich Schubert。
代码贡献者#
A. Flaxman, Aaron Schumacher, Aaron Staple, abhishek thakur, Akshay, akshayah3, Aldrian Obaja, Alexander Fabisch, Alexandre Gramfort, Alexis Mignon, Anders Aagaard, Andreas Mueller, Andreas van Cranenburgh, Andrew Tulloch, Andrew Walker, Antony Lee, Arnaud Joly, banilo, Barmaley.exe, Ben Davies, Benedikt Koehler, bhsu, Boris Feld, Borja Ayerdi, Boyuan Deng, Brent Pedersen, Brian Wignall, Brooke Osborn, Calvin Giles, Cathy Deng, Celeo, cgohlke, chebee7i, Christian Stade-Schuldt, Christof Angermueller, Chyi-Kwei Yau, CJ Carey, Clemens Brunner, Daiki Aminaka, Dan Blanchard, danfrankj, Danny Sullivan, David Fletcher, Dmitrijs Milajevs, Dougal J. Sutherland, Erich Schubert, Fabian Pedregosa, Florian Wilhelm, floydsoft, Félix-Antoine Fortin, Gael Varoquaux, Garrett-R, Gilles Louppe, gpassino, gwulfs, Hampus Bengtsson, Hamzeh Alsalhi, Hanna Wallach, Harry Mavroforakis, Hasil Sharma, Helder, Herve Bredin, Hsiang-Fu Yu, Hugues SALAMIN, Ian Gilmore, Ilambharathi Kanniah, Imran Haque, isms, Jake VanderPlas, Jan Dlabal, Jan Hendrik Metzen, Jatin Shah, Javier López Peña, jdcaballero, Jean Kossaifi, Jeff Hammerbacher, Joel Nothman, Jonathan Helmus, Joseph, Kaicheng Zhang, Kevin Markham, Kyle Beauchamp, Kyle Kastner, Lagacherie Matthieu, Lars Buitinck, Laurent Direr, leepei, Loic Esteve, Luis Pedro Coelho, Lukas Michelbacher, maheshakya, Manoj Kumar, Manuel, Mario Michael Krell, Martin, Martin Billinger, Martin Ku, Mateusz Susik, Mathieu Blondel, Matt Pico, Matt Terry, Matteo Visconti dOC, Matti Lyra, Max Linke, Mehdi Cherti, Michael Bommarito, Michael Eickenberg, Michal Romaniuk, MLG, mr.Shu, Nelle Varoquaux, Nicola Montecchio, Nicolas, Nikolay Mayorov, Noel Dawe, Okal Billy, Olivier Grisel, Óscar Nájera, Paolo Puggioni, Peter Prettenhofer, Pratap Vardhan, pvnguyen, queqichao, Rafael Carrascosa, Raghav R V, Rahiel Kasim, Randall Mason, Rob Zinkov, Robert Bradshaw, Saket Choudhary, Sam Nicholls, Samuel Charron, Saurabh Jha, sethdandridge, sinhrks, snuderl, Stefan Otte, Stefan van der Walt, Steve Tjoa, swu, Sylvain Zimmer, tejesh95, terrycojones, Thomas Delteil, Thomas Unterthiner, Tomas Kazmar, trevorstephens, tttthomasssss, Tzu-Ming Kuo, ugurcaliskan, ugurthemaster, Vinayak Mehta, Vincent Dubourg, Vjacheslav Murashkin, Vlad Niculae, wadawson, Wei Xue, Will Lamond, Wu Jiang, x0l, Xinfan Meng, Yan Yi, Yu-Chin