版本 0.17#
版本 0.17.1#
2016年2月18日
更新日志#
错误修复#
升级了内置的 joblib 到版本 0.9.4,修复了
joblib.Parallel
中的一个重要错误,该错误在使用大于 1MB 的数据集时可能悄无声息地导致错误结果: joblib/joblib修复了读取用 scikit-learn 版本 <= 0.16 生成的 Bunch pickles 的问题。这可能会影响已经用 scikit-learn 0.16 下载数据集并用 scikit-learn 0.17 加载的用户。有关此问题如何影响
datasets.fetch_20newsgroups
,请参阅 #6196。由 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
兼容的转换器对象。由 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
求解器的速度(每次迭代快3倍)。由 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。“威斯康星乳腺癌”经典两类分类数据集现已包含在 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
的lbfgs
、newton-cg
和sag
求解器添加了sample_weight
支持。由 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 为稀疏 .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)修复了
linear_model.SGDClassifier
的partial_fit
方法在调用时带有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
作为词汇表不再导致腌制时出现不一致的结果。修复了
linear_model.LinearRegression
、linear_model.OrthogonalMatchingPursuit
、linear_model.Lasso
和linear_model.ElasticNet
中预计算 Gram 矩阵何时需要重新计算的条件。修复了坐标下降求解器中影响
linear_model.DictionaryLearning
和covariance.GraphLasso
的内存布局不一致问题。(#5337)由 Olivier Grisel。manifold.LocallyLinearEmbedding
不再忽略reg
参数。带有自定义距离度量的最近邻估计器现在可以进行序列化(pickled)。(#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。将一维数据数组作为输入传递给估计器现在已弃用,因为它导致对数组元素应如何解释为特征或样本产生混淆。所有数据数组现在都应明确形状为
(n_samples, n_features)
。由 Vighnesh Birodkar。lda.LDA
和qda.QDA
已移至discriminant_analysis.LinearDiscriminantAnalysis
和discriminant_analysis.QuadraticDiscriminantAnalysis
。store_covariance
和tol
参数已从discriminant_analysis.LinearDiscriminantAnalysis
的 fit 方法移至构造函数,store_covariances
和tol
参数已从discriminant_analysis.QuadraticDiscriminantAnalysis
的 fit 方法移至构造函数。继承自
_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