版本 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 中加载的用户。请参阅 #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
兼容的转换器对象。 由 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
指标。为集成模型中的装袋模型添加了
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 。添加了
class_weight
参数,以自动按类别权重样本。 frequency forlinear_model.PassiveAggressiveClassifier
. By Trevor Stephens .Added backlinks from the API reference pages to the user guide. By Andreas Müller .
The
labels
parameter tosklearn.metrics.f1_score
,sklearn.metrics.fbeta_score
,sklearn.metrics.recall_score
andsklearn.metrics.precision_score
has been extended. It is now possible to ignore one or more labels, such as where a multiclass problem has a majority class to ignore. By Joel Nothman .Add
sample_weight
support tolinear_model.RidgeClassifier
. By Trevor Stephens .Provide an option for sparse output from
sklearn.metrics.pairwise.cosine_similarity
. By Jaidev Deshpande .Add
preprocessing.minmax_scale
to provide a function interface forpreprocessing.MinMaxScaler
. By Thomas Unterthiner .dump_svmlight_file
now handles multi-label datasets. By Chih-Wei Chang.RCV1 dataset loader (
sklearn.datasets.fetch_rcv1
). By Tom Dupre la Tour .The “Wisconsin Breast Cancer” classical two-class classification dataset is now included in scikit-learn, available with
datasets.load_breast_cancer
.Upgraded to joblib 0.9.3 to benefit from the new automatic batching of short tasks. This makes it possible for scikit-learn to benefit from parallelism when many very short tasks are executed in parallel, for instance by the
grid_search.GridSearchCV
meta-estimator withn_jobs > 1
used with a large grid of parameters on a small dataset. By Vlad Niculae , Olivier Grisel and Loic Esteve .For more details about changes in joblib 0.9.3 see the release notes: joblib/joblib
Improved speed (3 times per iteration) of
decomposition.DictLearning
with coordinate descent method 来自linear_model.Lasso
。作者: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 贡献。添加了
metrics.pairwise.laplacian_kernel
。由 Clyde Fare 贡献。covariance.GraphLasso
允许通过enet_tol
参数单独控制弹性网络子问题的收敛标准。改进了
decomposition.DictionaryLearning
中的详细输出。ensemble.RandomForestClassifier
和ensemble.RandomForestRegressor
不再显式存储用于自助采样的样本,从而大大减少了存储随机森林模型所需的内存占用。在
linear_model.Lars
和linear_model.lars_path
中添加了positive
选项,以强制系数为正。(#5131 )在
metrics.pairwise.euclidean_distances
中添加了X_norm_squared
参数,以提供预计算的X
的平方范数。在
pipeline.Pipeline
中添加了fit_predict
方法。添加了
preprocessing.minmax_scale
函数。
Bug 修复#
修复了
dummy.DummyClassifier
在稀疏多标签输出中的非确定性问题。由 Andreas Müller 提供。修复了
linear_model.RANSACRegressor
的输出形状为(n_samples, )
的问题。由 Andreas Müller 提供。修复了当
n_jobs < 0
时decomposition.DictLearning
中的 bug。由 Andreas Müller 提供。修复了
grid_search.RandomizedSearchCV
在大型离散网格中可能消耗大量内存的 bug。由 Joel Nothman 提供。修复了
linear_model.LogisticRegressionCV
中penalty
在最终拟合时被忽略的 bug。由 Manoj Kumar 提供。修复了在计算 oob_score 且 X 是 sparse.csc_matrix 时
ensemble.forest.ForestClassifier
中的 bug。由 Ankur Ankan 提供。所有回归器现在一致处理并警告当给定的
y
形状为(n_samples, 1)
时的情况。由 Andreas Müller 和 Henry Lin 提供。(#5431 )修复了
cluster.KMeans
在稀疏输入时的簇重新分配问题。由 Lars Buitinck 提供。修复了
discriminant_analysis.LinearDiscriminantAnalysis
在使用收缩时可能导致非对称协方差矩阵的 bug。由 Martin Billinger 提供。修复了
cross_validation.cross_val_predict
在稀疏预测的估计器中的 bug。由 Buddha Prakash 提供。修复了
linear_model.LogisticRegression
的predict_proba
方法,使用 softmax 而不是 one-vs-rest 归一化。由 Manoj Kumar 提供。(#5182 )修复了当调用
average=True
时linear_model.SGDClassifier
的partial_fit
方法中的 bug。由 Andrew Lamb 提供。(#5282 )数据集获取器在 Python 2 和 Python 3 下使用不同的文件名。
避免序列化兼容性问题。由 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
参数。具有自定义距离度量的最近邻估计器现在可以被序列化。 (#4362 )
修复了
pipeline.FeatureUnion
中的一个错误,该错误在执行网格搜索时未正确处理transformer_weights
。修复了
linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
在使用class_weight='balanced'
或class_weight='auto'
. 由 Tom Dupre la Tour 提供。修复了在执行 OVR(SVC(decision_function_shape=”ovr”)) 时出现的 #5495 错误。 由 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
的模型将不再支持转换方法。(即,随机森林、梯度提升、逻辑回归、决策树、支持向量机和 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 版本中发生变化。它将不再将一维输入重塑为二维输入。已弃用的属性
indicator_matrix_
、multilabel_
和classes_
已从preprocessing.LabelBinarizer
中移除。在
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, Maryan Morel, 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