版本 0.16#
版本 0.16.1#
2015年4月14日
更新日志#
错误修复#
允许在
covariance.LedoitWolf中输入大于block_size的数据,由 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 提供。修复了
cluster.KMeans在precompute_distances=False时对 fortran 顺序数据的错误。修复了
ensemble.RandomForestClassifier的predict和predict_proba中的速度回归问题,由 Andreas Müller 提供。修复了
utils.shuffle将列表和数据框转换为数组的回归问题,由 Olivier Grisel 提供。
版本 0.16#
2015年3月26日
亮点#
速度提升(特别是在
cluster.DBSCAN中),减少了内存需求,修复了错误,并改进了默认设置。多项逻辑回归和
linear_model.LogisticRegressionCV中的路径算法。通过
decomposition.IncrementalPCA进行核心外学习的主成分分析。使用
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 贡献。
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现在可以配置为与可能失败并在单个折叠中引发错误的估计器一起工作。 此选项由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 Kumar 。cluster.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 。现在支持对 scipy 度量和自定义可调用对象进行
metrics.pairwise_distances的并行计算。作者: Joel Nothman 。允许在
pipeline.Pipeline中对所有聚类算法进行拟合和评分。作者: Andreas Müller 。通过 Andreas Müller 使
cluster.MeanShift的种子更加健壮并改进了错误消息。使
mixture.GMM、mixture.DPGMM和mixture.VBGMM的停止准则对初始条件不那么敏感。作者: Andreas Müller 。 通过阈值化平均对数似然变化而不是所有样本的总和来计算样本数量。作者: Hervé Bredin 。manifold.spectral_embedding的结果通过翻转特征向量的符号变得确定性。作者:Hasil Sharma 。preprocessing.PolynomialFeatures在性能和内存使用方面有了显著改进。作者: Eric Martin 。preprocessing.StandardScaler和preprocessing.scale的数值稳定性得到了改进。作者: Nicolas Goix 。在稀疏输入上拟合的
svm.SVC现在实现了decision_function。作者: Rob Zinkov 和 Andreas Müller 。cross_validation.train_test_split现在保留输入类型,而不是转换为 numpy 数组。
文档改进#
增加了使用
pipeline.FeatureUnion处理异构输入的示例。作者:Matt Terry 。评分器的文档得到了改进,突出了损失函数的处理。作者:Matt Pico 。
现在注意到 liblinear 输出与 scikit-learn 包装器之间的差异。作者: Manoj Kumar 。
改进了文档生成:引用类或函数的示例现在在类/函数的 API 参考页面上以图库形式展示。作者: Joel Nothman 。
更明确的样本生成器和数据转换文档。作者: Joel Nothman 。
sklearn.neighbors.BallTree和sklearn.neighbors.KDTree曾指向声明它们是 BinaryTree 别名的空页面。现已修复,显示正确的类文档。作者: Manoj Kumar 。增加了使用
metrics.silhouette_samples和metrics.silhouette_score进行 KMeans 聚类分析的轮廓图。参见 使用轮廓分析选择KMeans聚类的簇数 。
错误修复#
Metaestimators 现在支持对
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属性不再被忽略。函数
hierarchical.ward_tree现在对于结构化和非结构化版本返回的子节点顺序一致。由 Matteo Visconti di Oleggio Castello 提供。feature_selection.RFECV现在正确处理了当step不等于 1 的情况。由 Nikolay Mayorov 提供。decomposition.PCA现在在其inverse_transform中撤销白化处理。同时,其components_现在始终具有单位长度。由 Michael Eickenberg 提供。修复了调用
datasets.download_20newsgroups时数据集下载不完整的问题。由 Manoj Kumar 提供。对高斯过程子包进行了各种修复,由 Vincent Dubourg 和 Jan Hendrik Metzen 提供。
调用
partial_fit时,如果class_weight=='auto',会抛出适当的错误消息并建议解决方法。由 Danny Sullivan 提供。RBFSampler在gamma=g时,之前近似于rbf_kernel <metrics.pairwise.rbf_kernel>的gamma=g/2.;现在gamma的定义一致了,如果你使用固定值,这可能会显著改变你的结果(如果你在gamma上进行了交叉验证,可能影响不大)。由 Dougal Sutherland 提供。Pipeline 对象将
classes_属性委托给底层估计器。这允许,例如,对 Pipeline 对象进行 bagging。 By Arnaud Jolyneighbors.NearestCentroid现在在度量设置为manhattan时使用中位数作为质心。之前使用的是均值。 By Manoj Kumar通过裁剪大梯度和确保权重衰减重新缩放始终为正(对于大的 l2 正则化和大的学习率值),修复了
linear_model.SGDClassifier和linear_model.SGDRegressor中的数值稳定性问题。 By Olivier Grisel当
compute_full_tree设置为 “auto” 时,在 n_clusters 较高时构建完整树,在 n_clusters 较低时提前停止,而cluster.AgglomerativeClustering(及其相关类)的行为应该是相反的。 这一问题已由 Manoj Kumar 修复。修复了
linear_model.enet_path和linear_model.lasso_path中数据的惰性中心化问题。之前数据是围绕1进行中心化的,现在改为围绕原点进行中心化。 By Manoj Kumar修复了在使用连通性约束时,
cluster.AgglomerativeClustering处理预计算亲和矩阵的问题。 By Cathy Deng修正了
sklearn.naive_bayes.MultinomialNB和sklearn.naive_bayes.BernoulliNB中partial_fit处理class_prior的问题。 By Trevor Stephens修复了在多标签设置中使用未排序的
labels时,metrics.precision_recall_fscore_support中的崩溃问题。 By Andreas Müller在
sklearn.neighbors.NearestNeighbors及其相关方法radius_neighbors、kneighbors、kneighbors_graph和radius_neighbors_graph中,当查询数据与拟合数据不同时,避免跳过第一个最近邻。 By Manoj Kumar修复了
mixture.GMM中使用 tied 协方差时的对数密度计算问题。 By Will Dawson修复了
feature_selection.SelectFdr中的缩放错误,其中缺少了一个因子n_features。 By Andrew Tulloch修复了在使用距离加权和存在相同数据点时,
neighbors.KNeighborsRegressor及相关类中的零除问题。 由 Garret-R 贡献。修复了GMM中非正定协方差矩阵的舍入误差。 由 Alexis Mignon 贡献。
修复了:class:
naive_bayes.BernoulliNB中条件概率计算的错误。 由 Hanna Wallach 贡献。使:class:
neighbors.NearestNeighbors的radius_neighbors方法在algorithm='brute'时返回边界上的样本。 由 Yan Yi 贡献。翻转:class:
svm.SVC的dual_coef_符号,以使其与文档和decision_function保持一致。 由 Artem Sobolev 贡献。修复了:class:
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参数已从fit方法移至LinearRegression类的构造函数中。multiclass.OneVsRestClassifier的predict_proba方法现在在多类情况下为每个样本返回两个概率;这与其它估计器和方法的文档一致。但之前的版本意外地只返回了正概率。由 Will Lamond 和 Lars Buitinck 修复。
将
linear_model.ElasticNet和linear_model.Lasso中的precompute默认值改为 False。设置precompute为 “auto” 在n_samples > n_features时发现较慢,因为计算 Gram 矩阵的计算成本很高,超过了仅为一个 alpha 拟合 Gram 的益处。现在precompute="auto"已被弃用,将在 0.18 版本中移除。由 Manoj Kumar 提供。在
linear_model.enet_path和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 提供。允许在
neighbors.NearestNeighbors的方法radius_neighbors、kneighbors、kneighbors_graph和radius_neighbors_graph中使用X=None。
sklearn.neighbors.NearestNeighbors 及其相关类。如果设置为 None,则对于每个样本,这会避免将样本本身设置为第一个最近邻。由 Manoj Kumar 提供。
在
neighbors.kneighbors_graph和neighbors.radius_neighbors_graph中添加参数include_self,用户必须显式设置。如果设置为 True,则将样本本身视为第一个最近邻。thresh参数已弃用,取而代之的是GMM、DPGMM和VBGMM中的新tol参数。详情请参见Enhancements部分。由 Hervé Bredin 提供。估计器在可能的情况下会将 dtype 为 object 的输入视为数值。由 Andreas Müller 提供。
估计器在拟合空数据(对于 2D 输入,样本数少于 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