版本 0.17#
版本 0.17.1#
2016 年 2 月 18 日
更新日志#
错误修复#
将 vendored joblib 升级到版本 0.9.4,该版本修复了
joblib.Parallel中的一个重要错误,该错误在处理大于 1MB 的数据集时可能会默默地产生错误结果:joblib/joblib修复了使用 scikit-learn version <= 0.16 生成的 Bunch pickle 的读取问题。这可能会影响已经使用 scikit-learn 0.16 下载数据集并使用 scikit-learn 0.17 加载它的用户。请参阅 #6196 了解这如何影响
datasets.fetch_20newsgroups。作者:Loic Esteve。修复了阻止使用 ROC AUC 分数在大型数组上对多个 CPU / 核心执行网格搜索的错误。请参阅 #6147。作者:Olivier Grisel。
修复了阻止在
ensemble.GradientBoostingRegressor中正确设置presort参数的错误。请参阅 #5857。作者:Andrew McCulloh。修复了评估
decomposition.LatentDirichletAllocation模型的困惑度时出现的 joblib 错误。请参阅 #6258。作者:Chyi-Kwei Yau。
版本 0.17#
2015 年 11 月 5 日
更新日志#
新功能#
除了
preprocessing.RobustScaler之外的所有 Scaler 类都可以通过调用partial_fit在线拟合。作者:Giorgio Patrini。新类
ensemble.VotingClassifier实现了一个“多数规则”/“软投票”集成分类器来组合分类估计器。作者:Sebastian Raschka。新类
preprocessing.RobustScaler提供了preprocessing.StandardScaler的替代方案,用于对特征进行居中和范围标准化,对异常值具有鲁棒性。作者:Thomas Unterthiner。新类
preprocessing.MaxAbsScaler提供了preprocessing.MinMaxScaler的替代方案,用于当数据已经居中或稀疏时对特征进行范围标准化。作者:Thomas Unterthiner。新类
preprocessing.FunctionTransformer将 Python 函数转换为Pipeline兼容的 transformer 对象。作者:Joe Jevnik。新类
cross_validation.LabelKFold和cross_validation.LabelShuffleSplit分别生成类似于cross_validation.KFold和cross_validation.ShuffleSplit的训练-测试折叠,但折叠是根据标签数组进行条件设置的。作者:Brian McFee、Jean Kossaifi 和 Gilles Louppe。decomposition.LatentDirichletAllocation实现了具有在线变分推断的 Latent Dirichlet Allocation 主题模型。作者:Chyi-Kwei Yau,代码基于 Matt Hoffman 的实现。(#3659)新求解器
sag实现了随机平均梯度下降,可用于linear_model.LogisticRegression和linear_model.Ridge。该求解器对于大型数据集非常高效。作者:Danny Sullivan 和 Tom Dupre la Tour。(#4738)新求解器
cd在decomposition.NMF中实现了坐标下降。通过将新参数solver设置为pg,仍然可以使用以前基于投影梯度的求解器,但已弃用,并将在 0.19 中删除,同时删除decomposition.ProjectedGradientNMF和参数sparseness、eta、beta和nls_max_iter。新参数alpha和l1_ratio控制 L1 和 L2 正则化,而shuffle在cd求解器中添加了一个洗牌步骤。作者:Tom Dupre la Tour 和 Mathieu Blondel。
增强功能#
manifold.TSNE现在支持通过 Barnes-Hut 方法进行近似优化,从而大大加快了拟合速度。作者:Christopher Erick Moody。(#4025)cluster.MeanShift现在支持并行执行,如mean_shift函数中实现的那样。作者:Martino Sorbaro。naive_bayes.GaussianNB现在支持使用sample_weight进行拟合。作者:Jan Hendrik Metzen。dummy.DummyClassifier现在支持先验拟合策略。作者:Arnaud Joly。为
mixture.GMM及其子类添加了fit_predict方法。作者:Cory Lorenz。添加了
metrics.label_ranking_loss指标。作者:Arnaud Joly。添加了
metrics.cohen_kappa_score指标。为 bagging 集成模型添加了
warm_start构造函数参数以增加集成的规模。作者:Tim Head。添加了在不进行平均的情况下使用多输出回归指标的选项。作者:Konstantin Shmelkov 和 Michael Eickenberg。
为
cross_validation.train_test_split添加了stratify选项以进行分层拆分。作者:Miroslav Batchkarov。tree.export_graphviz函数现在支持对tree.DecisionTreeClassifier和tree.DecisionTreeRegressor进行美学改进,包括按多数类或杂质着色节点、显示变量名称以及使用节点比例而不是原始样本计数的选项。作者:Trevor Stephens。通过避免损失计算,提高了
linear_model.LogisticRegression中newton-cg求解器的速度。作者:Mathieu Blondel 和 Tom Dupre la Tour。支持
class_weight的分类器中的class_weight="auto"启发式方法已弃用,并替换为class_weight="balanced"选项,该选项具有更简单的公式和解释。作者:Hanna Wallach 和 Andreas Müller。为
linear_model.PassiveAggressiveClassifier添加了class_weight参数,用于根据类频率自动加权样本。作者:Trevor Stephens。添加了从 API 参考页面到用户指南的反向链接。作者:Andreas Müller。
sklearn.metrics.f1_score、sklearn.metrics.fbeta_score、sklearn.metrics.recall_score和sklearn.metrics.precision_score的labels参数已扩展。现在可以忽略一个或多个标签,例如在多类问题中忽略多数类。作者:Joel Nothman。为
linear_model.RidgeClassifier添加了sample_weight支持。作者:Trevor Stephens。提供从
sklearn.metrics.pairwise.cosine_similarity输出稀疏输出的选项。作者:Jaidev Deshpande。添加了
preprocessing.minmax_scale以提供preprocessing.MinMaxScaler的函数接口。作者:Thomas Unterthiner。dump_svmlight_file现在处理多标签数据集。作者:Chih-Wei Chang。RCV1 数据集加载器(
sklearn.datasets.fetch_rcv1)。作者:Tom Dupre la Tour。“Wisconsin Breast Cancer”经典两类分类数据集现已包含在 scikit-learn 中,可通过
datasets.load_breast_cancer获得。升级到 joblib 0.9.3 以受益于新的短任务自动批处理。这使得 scikit-learn 在并行执行许多非常短的任务时能够受益于并行性,例如
grid_search.GridSearchCV元估计器在小型数据集上使用n_jobs > 1和大型参数网格时。作者:Vlad Niculae、Olivier Grisel 和 Loic Esteve。有关 joblib 0.9.3 中更改的更多详细信息,请参阅发行说明:joblib/joblib
使用来自
linear_model.Lasso的坐标下降法提高了decomposition.DictLearning的速度(每次迭代快 3 倍)。作者:Arthur Mensch。Nikolay Mayorov 实现了最近邻查询(使用球树)的并行处理(多线程)。
允许
datasets.make_multilabel_classification输出稀疏的y。作者:Kashif Rasul。cluster.DBSCAN现在接受预计算距离的稀疏矩阵,从而实现内存高效的距离预计算。作者:Joel Nothman。tree.DecisionTreeClassifier现在公开了一个apply方法,用于检索样本被预测为的叶子索引。作者:Daniel Galvez 和 Gilles Louppe。通过在树生长过程中计算杂质改进的代理,加快了决策树回归器、随机森林回归器、额外树回归器和梯度提升估计器的速度。代理数量使得最大化该值的拆分也最大化了杂质改进。作者:Arnaud Joly、Jacob Schreiber 和 Gilles Louppe。
通过减少在计算杂质度量时所需的计算次数,同时考虑计算统计量的线性关系,加快了基于树的方法的速度。这种效果在额外树和具有分类或稀疏特征的数据集上尤其明显。作者:Arnaud Joly。
ensemble.GradientBoostingRegressor和ensemble.GradientBoostingClassifier现在公开了一个apply方法,用于检索每个样本在每棵树中结束的叶子索引。作者:Jacob Schreiber。为
linear_model.LinearRegression添加了sample_weight支持。作者:Sonny Hu。(##4881)为
manifold.TSNE添加了n_iter_without_progress以控制停止标准。作者:Santi Villalba。(#5186)为
linear_model.Ridge添加了可选参数random_state,用于设置sag求解器中使用的伪随机生成器的种子。作者:Tom Dupre la Tour。为
linear_model.LogisticRegression添加了可选参数warm_start。如果设置为 True,则求解器lbfgs、newton-cg和sag将使用上次拟合中计算的系数进行初始化。作者:Tom Dupre la Tour。为
linear_model.LogisticRegression添加了sample_weight支持,适用于lbfgs、newton-cg和sag求解器。作者:Valentin Stolbunov。对liblinear求解器添加了支持。作者:Manoj Kumar。为
ensemble.GradientBoostingRegressor和ensemble.GradientBoostingClassifier添加了可选参数presort,保持默认行为不变。这允许梯度提升器在构建深层树或使用稀疏数据时关闭预排序。作者:Jacob Schreiber。修改了
metrics.roc_curve以默认删除不必要的阈值。作者:Graham Clenaghan。添加了
feature_selection.SelectFromModel元转换器,可与具有coef_或feature_importances_属性的估计器一起使用,以选择输入数据的重要特征。作者:Maheshakya Wijewardena、Joel Nothman 和 Manoj Kumar。covariance.GraphLasso允许通过enet_tol参数分别控制 Elastic-Net 子问题的收敛标准。改进了
decomposition.DictionaryLearning中的详细程度。ensemble.RandomForestClassifier和ensemble.RandomForestRegressor不再显式存储用于 bagging 的样本,从而大大减少了存储随机森林模型的内存占用。为
linear_model.Lars和linear_model.lars_path添加了positive选项,以强制系数为正。(#5131)为
metrics.pairwise.euclidean_distances添加了X_norm_squared参数,用于提供X的预计算平方范数。为
pipeline.Pipeline添加了fit_predict方法。添加了
preprocessing.minmax_scale函数。
错误修复#
修复了
dummy.DummyClassifier在稀疏多标签输出下的非确定性。作者:Andreas Müller。修复了
linear_model.RANSACRegressor的输出形状为(n_samples, )。作者:Andreas Müller。修复了
decomposition.DictLearning中n_jobs < 0时的错误。作者:Andreas Müller。修复了
grid_search.RandomizedSearchCV在大型离散网格下可能消耗大量内存的错误。作者:Joel Nothman。修复了
linear_model.LogisticRegressionCV中penalty在最终拟合中被忽略的错误。作者:Manoj Kumar。修复了
ensemble.forest.ForestClassifier在计算 oob_score 且 X 为 sparse.csc_matrix 时的错误。作者:Ankur Ankan。所有回归器现在都能一致地处理并警告给定形状为
(n_samples, 1)的y。作者:Andreas Müller 和 Henry Lin。(#5431)修复了
cluster.KMeans在稀疏输入下的聚类重新分配错误。作者:Lars Buitinck。修复了
discriminant_analysis.LinearDiscriminantAnalysis中的一个错误,该错误在使用收缩时可能导致协方差矩阵不对称。作者:Martin Billinger。修复了
cross_validation.cross_val_predict在估计器具有稀疏预测时的错误。作者:Buddha Prakash。修复了
linear_model.LogisticRegression的predict_proba方法,以使用 soft-max 而不是 one-vs-rest 归一化。作者:Manoj Kumar。(#5182)修复了在调用
partial_fit方法时linear_model.SGDClassifier中average=True时的错误。作者:Andrew Lamb。(#5282)数据集获取器在 Python 2 和 Python 3 下使用不同的文件名,以避免 pickle 兼容性问题。作者:Olivier Grisel。(#5355)
修复了
naive_bayes.GaussianNB中的一个错误,该错误导致分类结果依赖于比例。作者:Jake Vanderplas。暂时修复了
linear_model.Ridge,在稀疏数据情况下拟合截距时出现不正确。在这种情况下,修复会自动将求解器更改为 'sag'。#5360 作者:Tom Dupre la Tour。修复了
decomposition.RandomizedPCA在具有大量特征而样本较少的数据上的性能错误。(#4478)作者:Andreas Müller、Loic Esteve 和 Giorgio Patrini。修复了
cross_decomposition.PLS中导致不稳定和依赖于平台的输出,并且在fit_transform失败的错误。作者:Arthur Mensch。修复了用于存储数据集的
Bunch类。修复了
ensemble.plot_partial_dependence忽略percentiles参数的错误。在
CountVectorizer中提供set作为词汇表不再导致 pickle 时出现不一致的结果。修复了
linear_model.LinearRegression、linear_model.OrthogonalMatchingPursuit、linear_model.Lasso和linear_model.ElasticNet中何时需要重新计算预计算 Gram 矩阵的条件。修复了坐标下降求解器中不一致的内存布局,该问题影响了
linear_model.DictionaryLearning和covariance.GraphLasso。(#5337)作者:Olivier Grisel。manifold.LocallyLinearEmbedding不再忽略reg参数。具有自定义距离指标的 Nearest Neighbor 估计器现在可以进行 pickle。(#4362)
修复了
pipeline.FeatureUnion中的一个错误,该错误在执行网格搜索时未正确处理transformer_weights。修复了
linear_model.LogisticRegression和linear_model.LogisticRegressionCV在使用class_weight='balanced'或class_weight='auto'时的错误。作者:Tom Dupre la Tour。修复了 #5495 中执行 OVR(SVC(decision_function_shape=”ovr”)) 时的错误。作者:Elvis Dohmatob。
API 更改摘要#
preprocessing.MinMaxScaler中的属性data_min、data_max和data_range已弃用,并且从 0.19 开始将不可用。相反,该类现在公开了data_min_、data_max_和data_range_。作者:Giorgio Patrini。所有 Scaler 类现在都有一个
scale_属性,即其transform方法应用的特征级重新缩放。preprocessing.StandardScaler中的旧属性std_已弃用并由scale_取代;它将在 0.19 中不可用。作者:Giorgio Patrini。svm.SVC和svm.NuSVC现在有一个decision_function_shape参数,通过设置decision_function_shape='ovr'使其决策函数的形状为(n_samples, n_classes)。这将是 0.19 开始的默认行为。作者:Andreas Müller。将 1D 数据数组作为输入传递给估计器现已弃用,因为它导致对数组元素应解释为特征还是样本产生混淆。现在所有数据数组都应明确形状为
(n_samples, n_features)。作者:Vighnesh Birodkar。lda.LDA和qda.QDA已移至discriminant_analysis.LinearDiscriminantAnalysis和discriminant_analysis.QuadraticDiscriminantAnalysis。在
discriminant_analysis.LinearDiscriminantAnalysis中,store_covariance和tol参数已从拟合方法移至构造函数;在discriminant_analysis.QuadraticDiscriminantAnalysis中,store_covariances和tol参数已从拟合方法移至构造函数。继承自
_LearntSelectorMixin的模型将不再支持 transform 方法。(即 RandomForests、GradientBoosting、LogisticRegression、DecisionTrees、SVMs 和 SGD 相关模型)。将这些模型包装在元转换器feature_selection.SelectFromModel周围,以删除低于特定阈值值的特征(根据coefs_或feature_importances_)。cluster.KMeans在未收敛的情况下重新运行聚类分配,以确保predict(X)和labels_的一致性。作者:Vighnesh Birodkar。分类器和回归器模型现在使用
_estimator_type属性进行标记。交叉验证迭代器始终提供训练集和测试集的索引,而不是布尔掩码。
所有回归器上的
decision_function已弃用,并将在 0.19 中删除。请改用predict。datasets.load_lfw_pairs已弃用,并将在 0.19 中删除。请改用datasets.fetch_lfw_pairs。已删除已弃用的
hmm模块。已删除已弃用的
Bootstrap交叉验证迭代器。已删除已弃用的
Ward和WardAgglomerative类。请改用cluster.AgglomerativeClustering。cross_validation.check_cv现在是一个公共函数。linear_model.LinearRegression的属性residues_已弃用,并将在 0.19 中删除。linear_model.LinearRegression的已弃用参数n_jobs已移至构造函数。已从
linear_model.SGDClassifier的fit方法中删除了已弃用的class_weight参数。请改用构造函数参数。已删除对序列的序列(或列表的列表)多标签格式的已弃用支持。要转换到和转换来自受支持的二进制指示符矩阵格式,请使用
MultiLabelBinarizer。调用
Pipeline.pipeline的inverse_transform方法的行为将在 0.19 中更改。它将不再将一维输入重塑为二维输入。preprocessing.LabelBinarizer的已弃用属性indicator_matrix_、multilabel_和classes_已删除。在
svm.SVC和svm.SVR中使用gamma=0自动将 gamma 设置为1. / n_features已弃用,并将在 0.19 中删除。请改用gamma="auto"。
代码贡献者#
Aaron Schumacher, Adithya Ganesh, akitty, Alexandre Gramfort, Alexey Grigorev, Ali Baharev, Allen Riddell, Ando Saabas, Andreas Mueller, Andrew Lamb, Anish Shah, Ankur Ankan, Anthony Erlinger, Ari Rouvinen, Arnaud Joly, Arnaud Rachez, Arthur Mensch, banilo, Barmaley.exe, benjaminirving, Boyuan Deng, Brett Naul, Brian McFee, Buddha Prakash, Chi Zhang, Chih-Wei Chang, Christof Angermueller, Christoph Gohlke, Christophe Bourguignat, Christopher Erick Moody, Chyi-Kwei Yau, Cindy Sridharan, CJ Carey, Clyde-fare, Cory Lorenz, Dan Blanchard, Daniel Galvez, Daniel Kronovet, Danny Sullivan, Data1010, David, David D Lowe, David Dotson, djipey, Dmitry Spikhalskiy, Donne Martin, Dougal J. Sutherland, Dougal Sutherland, edson duarte, Eduardo Caro, Eric Larson, Eric Martin, Erich Schubert, Fernando Carrillo, Frank C. Eckert, Frank Zalkow, Gael Varoquaux, Ganiev Ibraim, Gilles Louppe, Giorgio Patrini, giorgiop, Graham Clenaghan, Gryllos Prokopis, gwulfs, Henry Lin, Hsuan-Tien Lin, Immanuel Bayer, Ishank Gulati, Jack Martin, Jacob Schreiber, Jaidev Deshpande, Jake Vanderplas, Jan Hendrik Metzen, Jean Kossaifi, Jeffrey04, Jeremy, jfraj, Jiali Mei, Joe Jevnik, Joel Nothman, John Kirkham, John Wittenauer, Joseph, Joshua Loyal, Jungkook Park, KamalakerDadi, Kashif Rasul, Keith Goodman, Kian Ho, Konstantin Shmelkov, Kyler Brown, Lars Buitinck, Lilian Besson, Loic Esteve, Louis Tiao, maheshakya, Maheshakya Wijewardena, Manoj Kumar, MarkTab marktab.net, Martin Ku, Martin Spacek, MartinBpr, martinosorb, MaryanMorel, Masafumi Oyamada, Mathieu Blondel, Matt Krump, Matti Lyra, Maxim Kolganov, mbillinger, mhg, Michael Heilman, Michael Patterson, Miroslav Batchkarov, Nelle Varoquaux, Nicolas, Nikolay Mayorov, Olivier Grisel, Omer Katz, Óscar Nájera, Pauli Virtanen, Peter Fischer, Peter Prettenhofer, Phil Roth, pianomania, Preston Parry, Raghav RV, Rob Zinkov, Robert Layton, Rohan Ramanath, Saket Choudhary, Sam Zhang, santi, saurabh.bansod, scls19fr, Sebastian Raschka, Sebastian Saeger, Shivan Sornarajah, SimonPL, sinhrks, Skipper Seabold, Sonny Hu, sseg, Stephen Hoover, Steven De Gryze, Steven Seguin, Theodore Vasiloudis, Thomas Unterthiner, Tiago Freitas Pereira, Tian Wang, Tim Head, Timothy Hopper, tokoroten, Tom Dupré la Tour, Trevor Stephens, Valentin Stolbunov, Vighnesh Birodkar, Vinayak Mehta, Vincent, Vincent Michel, vstolbunov, wangz10, Wei Xue, Yucheng Low, Yury Zhauniarovich, Zac Stewart, zhai_pro, Zichen Wang