版本 0.19#
版本 0.19.2#
2018年7月
此版本仅用于支持 Python 3.7。
版本 0.19.1#
2017年10月23日
这是一个错误修复版本,包含一些小的文档改进以及对 0.19.0 版本中发布的功能的增强。
请注意,此版本中 TSNE 的输出可能存在细微差异(由于 #9623),这发生在多个样本到某个样本的距离相等的情况下。
更新日志#
API 变更#
撤销了因错误合并到 0.19.0 版本中的
metrics.ndcg_score
和metrics.dcg_score
。这些实现存在问题且未文档化。return_train_score
在 0.19.0 版本中被添加到model_selection.GridSearchCV
、model_selection.RandomizedSearchCV
和model_selection.cross_validate
,其默认值将在 0.21 版本中从 True 更改为 False。我们发现,在某些情况下,计算训练分数可能会对交叉验证的运行时产生很大影响。如果预测或评分函数较慢,从而对 CV 运行时产生不利影响,用户应明确将return_train_score
设置为 False;如果他们希望使用计算出的分数,则应将其设置为 True。#9677 由 Kumar Ashutosh 和 Joel Nothman 贡献。旧版高斯过程实现中的
correlation_models
和regression_models
已延迟弃用。#9717 由 Kumar Ashutosh 贡献。
错误修复#
避免
metrics.matthews_corrcoef
中的整数溢出。#9693 由 Sam Steingold 贡献。修复了
manifold.TSNE
(包括精确方法和 Barnes-Hut 近似方法)中当n_components >= 3
时目标函数的一个错误。#9711 由 @goncalo-rodrigues 贡献。修复了
model_selection.cross_val_predict
中的一个回归问题,之前对于某些概率分类器,当method='predict_proba'
时会引发错误。#9641 由 James Bourbeau 贡献。修复了
datasets.make_classification
修改其输入weights
的一个错误。#9865 由 Sachin Kelkar 贡献。model_selection.StratifiedShuffleSplit
现在支持具有超过 1000 列的多输出多类别或多标签数据。#9922 由 Charlie Brummitt 贡献。修复了嵌套和条件参数设置的一个错误,例如同时设置管道步骤及其参数。#9945 由 Andreas Müller 和 Joel Nothman 贡献。
0.19.0 版本中的回归问题在 0.19.1 版本中得到修复
修复了随机森林中并行预测非线程安全,可能(很少)导致任意错误的一个错误。#9830 由 Joel Nothman 贡献。
修复了
model_selection.cross_val_predict
中的一个回归问题,之前它不再接受列表形式的X
。#9600 由 Rasul Kerimov 贡献。修复了
model_selection.cross_val_predict
在二元分类中处理method='decision_function'
的问题。#9593 由 Reiichiro Nakano 和核心开发者贡献。修复了
pipeline.Pipeline
中的一个回归问题,之前它不再接受元组形式的steps
。#9604 由 Joris Van den Bossche 贡献。修复了
n_iter
未正确弃用的错误,导致n_iter
在linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
、linear_model.PassiveAggressiveRegressor
和linear_model.Perceptron
中无法临时使用。#9558 由 Andreas Müller 贡献。数据集获取器确保在删除临时文件之前将其关闭,这导致 Windows 上出现错误。#9847 由 Joan Massich 贡献。
修复了
manifold.TSNE
中的一个回归问题,之前它不再支持除“euclidean”和“precomputed”之外的度量。#9623 由 Oli Blum 贡献。
改进#
我们的测试套件和
utils.estimator_checks.check_estimator
现在无需安装 Nose 即可运行。#9697 由 Joan Massich 贡献。为了提高 0.19 版本
pipeline.Pipeline
缓存的可用性,memory
现在允许joblib.Memory
实例。这利用了新的utils.validation.check_memory
辅助函数。#9584 由 Kumar Ashutosh 贡献。减少了基于 SGD 的估计器中的 FutureWarning 冗余信息。#9802 由 Vrishank Bhardwaj 贡献。
代码和文档贡献者#
特别感谢
Joel Nothman, Loic Esteve, Andreas Mueller, Kumar Ashutosh, Vrishank Bhardwaj, Hanmin Qin, Rasul Kerimov, James Bourbeau, Nagarjuna Kumar, Nathaniel Saul, Olivier Grisel, Roman Yurchak, Reiichiro Nakano, Sachin Kelkar, Sam Steingold, Yaroslav Halchenko, diegodlh, felix, goncalo-rodrigues, jkleint, oliblum90, pasbi, Anthony Gitter, Ben Lawson, Charlie Brummitt, Didi Bar-Zev, Gael Varoquaux, Joan Massich, Joris Van den Bossche, nielsenmarkus11
版本 0.19#
2017年8月12日
亮点#
我们很高兴发布了一些出色的新功能,包括用于异常检测的 neighbors.LocalOutlierFactor
、用于鲁棒特征转换的 preprocessing.QuantileTransformer
,以及用于简单处理多标签问题中类别间依赖关系的元估计器 multioutput.ClassifierChain
。我们还在现有估计器中添加了一些新算法,例如 decomposition.NMF
中的乘法更新和带有 L1 损失的多项式 linear_model.LogisticRegression
(使用 solver='saga'
)。
交叉验证现在能够返回多个度量评估的结果。新的 model_selection.cross_validate
可以返回测试数据上的多个分数以及训练集的性能和时间,并且我们扩展了网格/随机搜索的 scoring
和 refit
参数,以处理多个度量。
您还可以学得更快。例如,pipeline.Pipeline
中缓存转换的新选项使得对包含慢速转换的管道进行网格搜索效率更高。您也可以更快地进行预测:如果您确定自己在做什么,可以使用 config_context
关闭验证输入是否有限的检查。
我们还进行了一些重要的修复。我们修复了 metrics.average_precision_score
中一个长期存在的实现错误,因此请对该函数报告的先前结果保持谨慎。manifold.TSNE
实现中的许多错误已得到修复,特别是在默认的 Barnes-Hut 近似中。semi_supervised.LabelSpreading
和 semi_supervised.LabelPropagation
进行了实质性修复。LabelPropagation 之前是损坏的。LabelSpreading 现在应该正确地遵循其 alpha 参数。
更改的模型#
以下估计器和函数,当使用相同数据和参数进行拟合时,可能会产生与先前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机抽样程序中的变化引起的。
cluster.KMeans
在给定稀疏 X 和初始质心时(错误修复)cross_decomposition.PLSRegression
在scale=True
时(错误修复)ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
使用min_impurity_split
时(错误修复)梯度提升
loss='quantile'
(错误修复)ensemble.IsolationForest
(错误修复)linear_model.LassoLars
(错误修复)linear_model.LassoLarsIC
(错误修复)manifold.TSNE
(错误修复)使用
min_weight_fraction_leaf
的基于树的模型(增强)model_selection.StratifiedKFold
在shuffle=True
时(此更改由于 #7823,当时未在发行说明中提及)
详情请参阅下面的更新日志。
(尽管我们正在努力通过提供此信息来更好地告知用户,但我们不能保证此列表是完整的。)
更新日志#
新功能#
分类器和回归器
添加了用于多标签分类的
multioutput.ClassifierChain
。由 Adam Kleczewski 贡献。在
linear_model.LogisticRegression
和linear_model.Ridge
中添加了求解器'saga'
,它实现了随机平均梯度法的改进版本。它允许将 L1 惩罚与多项式逻辑损失一起使用,并且在岭回归和逻辑回归的初始 epoch 中表现略优于“sag”。#8446 由 Arthur Mensch 贡献。
其他估计器
添加了
neighbors.LocalOutlierFactor
类,用于基于最近邻的异常检测。#5279 由 Nicolas Goix 和 Alexandre Gramfort 贡献。添加了
preprocessing.QuantileTransformer
类和preprocessing.quantile_transform
函数,用于基于分位数的特征归一化。#8363 由 Denis Engemann、Guillaume Lemaitre、Olivier Grisel、Raghav RV、Thierry Guillemot 和 Gael Varoquaux 贡献。新的求解器
'mu'
在decomposition.NMF
中实现了乘法更新,允许优化所有 beta 散度,包括 Frobenius 范数、广义 Kullback-Leibler 散度和 Itakura-Saito 散度。#5295 由 Tom Dupre la Tour 贡献。
模型选择和评估
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
现在支持同时评估多个度量。更多信息请参考用户指南的指定多个评估指标部分。#7388 由 Raghav RV 贡献。添加了
model_selection.cross_validate
,它允许评估多个度量。此函数返回一个字典,其中包含来自交叉验证的更多有用信息,例如训练分数、拟合时间和评分时间。更多信息请参考用户指南的`cross_validate` 函数和多指标评估部分。#7388 由 Raghav RV 贡献。添加了
metrics.mean_squared_log_error
,它计算目标对数变换的均方误差,对于具有指数趋势的目标特别有用。#7655 由 Karan Desai 贡献。添加了
metrics.dcg_score
和metrics.ndcg_score
,它们计算折现累积增益 (DCG) 和归一化折现累积增益 (NDCG)。#7739 由 David Gasquez 贡献。添加了
model_selection.RepeatedKFold
和model_selection.RepeatedStratifiedKFold
。#8120 由 Neeraj Gangwar 贡献。
杂项
现在可以使用
config_context
抑制输入数据不包含 NaN 或 inf 的验证,风险自负。这将节省运行时,并且对于预测时间可能特别有用。#7548 由 Joel Nothman 贡献。添加了一个测试,以确保文档字符串中的参数列表与函数/类签名匹配。#9206 由 Alexandre Gramfort 和 Raghav RV 贡献。
改进#
树模型和集成模型
树构建中的
min_weight_fraction_leaf
约束现在更高效,如果节点的权重小于最小值的 2 倍,则会采用快速路径将其声明为叶节点。请注意,使用min_weight_fraction_leaf
时,构建的树将与以前的版本不同。#7441 由 Nelson Liu 贡献。ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
现在支持稀疏输入进行预测。#6101 由 Ibraim Ganiev 贡献。ensemble.VotingClassifier
现在允许通过使用ensemble.VotingClassifier.set_params
更改估计器。估计器也可以通过将其设置为None
来移除。#7674 由 Yichuan Liu 贡献。tree.export_graphviz
现在显示可配置的小数位数。#8698 由 Guillaume Lemaitre 贡献。向
ensemble.VotingClassifier
添加了flatten_transform
参数,以将transform
方法的输出形状更改为二维。#7794 由 Ibraim Ganiev 和 Herilalaina Rakotoarison 贡献。
线性、核化及相关模型
linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
、linear_model.PassiveAggressiveRegressor
和linear_model.Perceptron
现在公开了max_iter
和tol
参数,以更精确地处理收敛问题。n_iter
参数已被弃用,拟合的估计器公开了一个n_iter_
属性,其中包含收敛前的实际迭代次数。#5036 由 Tom Dupre la Tour 贡献。向
linear_model.PassiveAggressiveClassifier
添加了average
参数以执行权重平均。#4939 由 Andrea Esuli 贡献。linear_model.RANSACRegressor
在其首次迭代中未找到内部点时,调用fit
不再抛出错误。此外,跳过迭代的原因在新增的属性n_skips_*
中进行跟踪。#7914 由 Michael Horrell 贡献。在
gaussian_process.GaussianProcessRegressor
中,当return_std=True
时,predict
方法的速度快得多。#8591 由 Hadrien Bertrand 贡献。向
linear_model.ARDRegression
和linear_model.BayesianRidge
的predict
方法添加了return_std
。#7838 由 Sergey Feldman 贡献。内存使用增强:防止
linear_model.MultiTaskElasticNet
中从 float32 转换为 float64;linear_model.LogisticRegression
在使用 newton-cg 求解器时;以及linear_model.Ridge
在使用 svd、sparse_cg、cholesky 或 lsqr 求解器时。#8835、#8061 由 Joan Massich、Nicolas Cordier 和 Thierry Guillemot 贡献。
其他预测器
sklearn.neighbors
二叉树的自定义度量现在限制更少:它们必须接受两个一维数组并返回一个浮点数。#6288 由 Jake Vanderplas 贡献。sklearn.neighbors
估计器中的algorithm='auto
现在会为所有输入类型和度量选择最合适的算法。#9145 由 Herilalaina Rakotoarison 和 Reddy Chinthala 贡献。
分解、流形学习和聚类
cluster.MiniBatchKMeans
和cluster.KMeans
在将数据点分配到其最近的聚类中心时,现在使用显着更少的内存。#7721 由 Jon Crall 贡献。decomposition.PCA
、decomposition.IncrementalPCA
和decomposition.TruncatedSVD
现在公开了底层 SVD 的奇异值。它们存储在属性singular_values_
中,与decomposition.IncrementalPCA
中一样。#7685 由 Tommy Löfstedt 贡献。decomposition.NMF
在beta_loss=0
时现在速度更快。#9277 由 @hongkahjun 贡献。manifold.TSNE
中barnes_hut
方法的内存改进。#7089 由 Thomas Moreau 和 Olivier Grisel 贡献。Barnes-Hut
manifold.TSNE
的优化调度改进,使结果更接近参考实现 lvdmaaten/bhtsne 的结果,由 Thomas Moreau 和 Olivier Grisel 贡献。内存使用增强:防止
decomposition.PCA
和decomposition.randomized_svd_low_rank
中从 float32 转换为 float64。#9067 由 Raghav RV 贡献。
预处理和特征选择
向
feature_selection.SelectFromModel
添加了norm_order
参数,以便在coef_
超过一维时选择范数顺序。#6181 由 Antoine Wendlinger 贡献。添加了在
feature_selection.f_regression
中使用稀疏矩阵并设置center=True
的功能。#8065 由 Daniel LeJeune 贡献。通过绑定循环方法和特殊处理一元词,
sklearn.feature_extraction.text
中的 n-gram 创建性能得到小幅改进。#7567 由 Jaye Doepke 贡献。放宽对
kernel_approximation.SkewedChi2Sampler
数据的假设。由于 Skewed-Chi2 核定义在开区间 \((-skewedness; +\infty)^d\) 上,因此转换函数不应检查X < 0
,而应检查X < -self.skewedness
。#7573 由 Romain Brault 贡献。在
kernel_approximation.Nystroem
中,默认内核参数现在依赖于内核。#5229 由 Saurabh Bansod 和 Andreas Müller 贡献。
模型评估和元估计器
pipeline.Pipeline
现在可以通过使用memory
构造函数参数来缓存管道中的转换器。#7990 由 Guillaume Lemaitre 贡献。pipeline.Pipeline
的步骤现在可以作为其named_steps
属性的属性进行访问。#8586 由 Herilalaina Rakotoarison 贡献。向
pipeline.Pipeline.score
添加了sample_weight
参数。#7723 由 Mikhail Korobov 贡献。添加了设置
pipeline.make_union
的n_jobs
参数的功能。对于任何其他 kwargs,将引发TypeError
。#8028 由 Alexander Booth 贡献。model_selection.GridSearchCV
、model_selection.RandomizedSearchCV
和model_selection.cross_val_score
现在允许使用可调用内核的估计器,这在以前是被禁止的。#8005 由 Andreas Müller 贡献。model_selection.cross_val_predict
现在为参数method
的所有值返回正确形状的输出。#7863 由 Aman Dalmia 贡献。向
model_selection.learning_curve
添加了shuffle
和random_state
参数,以便在根据训练大小截取训练数据前进行混洗。#7506 由 Narine Kokhlikyan 贡献。model_selection.StratifiedShuffleSplit
现在支持多输出多类别(或多标签)数据。#9044 由 Vlad Niculae 贡献。model_selection.StratifiedShuffleSplit
的速度改进。#5991 由 Arthur Mensch 和 Joel Nothman 贡献。向
model_selection.train_test_split
添加了shuffle
参数。#8845 由 themrmax 贡献。multioutput.MultiOutputRegressor
和multioutput.MultiOutputClassifier
现在支持使用partial_fit
进行在线学习。:issue:8053
由 Peng Yu 贡献。向
model_selection.TimeSeriesSplit
添加了max_train_size
参数。#8282 由 Aman Dalmia 贡献。现在可以通过
metrics.get_scorer
和scoring
参数使用更多聚类指标。#8117 由 Raghav RV 贡献。还提供了基于
metrics.explained_variance_score
的评分器。#9259 由 Hanmin Qin 贡献。
指标
metrics.matthews_corrcoef
现在支持多类别分类。#8094 由 Jon Crall 贡献。向
metrics.cohen_kappa_score
添加了sample_weight
参数。#8335 由 Victor Poughon 贡献。
杂项
utils.estimator_checks.check_estimator
现在尝试确保 transform、predict 等方法不会在估计器上设置属性。#7533 由 Ekaterina Krivich 贡献。向
sklearn.utils.validation
方法中的accept_sparse
参数添加了类型检查。此参数现在只接受布尔值、字符串或字符串列表/元组。accept_sparse=None
已弃用,应替换为accept_sparse=False
。#7880 由 Josh Karnofsky 贡献。通过向
datasets.load_svmlight_file
传递字节范围,现在可以加载 svmlight 格式文件的一个块。#935 由 Olivier Grisel 贡献。dummy.DummyClassifier
和dummy.DummyRegressor
现在接受非有限特征。#8931 由 @Attractadore 贡献。
错误修复#
树模型和集成模型
修复了
ensemble.IsolationForest
使用不正确的平均路径长度公式的错误。#8549 由 Peter Wang 贡献。修复了
ensemble.AdaBoostClassifier
在拟合具有单一类别标签的数据时抛出ZeroDivisionError
的错误。#7501 由 Dominik Krzeminski 贡献。修复了
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
中,浮点数使用==
与0.0
比较导致除零错误的一个错误。#7970 由 He Chen 贡献。修复了
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
忽略min_impurity_split
参数的错误。#8006 由 Sebastian Pölsterl 贡献。修复了
ensemble.BaggingClassifier
中的oob_score
。#8936 由 Michael Lewis 贡献。修复了随机森林估计器在预测时内存使用过多问题。#8672 由 Mike Benfield 贡献。
修复了
sample_weight
作为列表在 Python 2 中破坏随机森林的错误。#8068 由 @xor 贡献。修复了
ensemble.IsolationForest
在max_features
小于 1 时失败的错误。#5732 由 Ishank Gulati 贡献。修复了梯度提升使用
loss='quantile'
时,对于ytrue - ypred
的负值计算出负误差,导致调用__call__
时出现错误值的错误。#8087 由 Alexis Mignon 贡献。修复了当 numpy 数组作为权重传入时,
ensemble.VotingClassifier
引发错误的错误。#7983 由 Vincent Pham 贡献。修复了当特征名称的长度与决策树中的特征数量不匹配时,
tree.export_graphviz
引发错误的错误。#8512 由 Li Li 贡献。
线性、核化及相关模型
修复了
linear_model.RANSACRegressor.fit
在早期发现大量内部点时可能运行到max_iter
的错误。#8251 由 @aivision2020 贡献。修复了
naive_bayes.MultinomialNB
和naive_bayes.BernoulliNB
在alpha=0
时失败的错误。#5814 由 Yichuan Liu 和 Herilalaina Rakotoarison 贡献。修复了
linear_model.LassoLars
未给出与 R (lars 库) 中可用的 LassoLars 实现相同结果的错误。#7849 由 Jair Montoya Martinez 贡献。修复了
linear_model.RandomizedLasso
、linear_model.Lars
、linear_model.LassoLars
、linear_model.LarsCV
和linear_model.LassoLarsCV
中的一个错误,其中参数precompute
在不同类之间未保持一致使用,并且文档字符串中提出的一些值可能引发错误。 #5359 由 Tom Dupre la Tour 贡献。修复了在使用
normalize=True
时,linear_model.RidgeCV
和linear_model.Ridge
之间结果不一致的问题。 #9302 由 Alexandre Gramfort 贡献。修复了
linear_model.LassoLars.fit
有时将coef_
留下为列表而不是 ndarray 的错误。 #8160 由 CJ Carey 贡献。修复了
linear_model.BayesianRidge.fit
,使其返回与计算出的系数coef_
和intercept_
一致的岭参数alpha_
和lambda_
。 #8224 由 Peter Gedeck 贡献。修复了
svm.OneClassSVM
中的一个错误,该错误导致它返回浮点数而不是整数类。 #8676 由 Vathsala Achar 贡献。修复了
linear_model.LassoLarsIC
中 AIC/BIC 准则计算的错误。 #9022 由 Alexandre Gramfort 和 Mehmet Basbug 贡献。修复了 LibLinear 实现中的内存泄漏。 #9024 由 Sergei Lebedev 贡献。
修复了分层交叉验证分割器与
linear_model.LassoCV
不兼容的错误。 #8973 由 Paulo Haddad 贡献。修复了
gaussian_process.GaussianProcessRegressor
中的一个错误,当未拟合就预测标准差和协方差时,默认会抛出无意义的错误。 #6573 由 Quazi Marufur Rahman 和 Manoj Kumar 贡献。
其他预测器
修复了
semi_supervised.BaseLabelPropagation
,使其正确实现参考文献中描述的LabelPropagation
和LabelSpreading
。 #9239 由 Andre Ambrosio Boechat、Utkarsh Upadhyay 和 Joel Nothman 贡献。
分解、流形学习和聚类
修复了
manifold.TSNE
的实现。early_exaggeration
参数之前没有效果,现在用于前 250 次优化迭代。修复了 #8992 中报告的
AssertionError: Tree consistency failed
异常。改进了学习计划,使其与参考实现 lvdmaaten/bhtsne 中的计划相匹配。由 Thomas Moreau 和 Olivier Grisel 贡献。
修复了
decomposition.LatentDirichletAllocation
中的一个错误,其中perplexity
方法返回了不正确的结果,因为自版本 0.18 起transform
方法返回的是归一化的文档主题分布。 #7954 由 Gary Foreman 贡献。修复了
decomposition.SparseCoder
的 transform 和decomposition.sparse_encode
中,当一维数据和一个分量且n_jobs
> 1 时,输出形状和错误的问题。这也会影响decomposition.DictionaryLearning
的输出形状。 #8086 由 Andreas Müller 贡献。修复了
decomposition.PCA
、decomposition.RandomizedPCA
和decomposition.IncrementalPCA
中explained_variance_
的实现。 #9105 由 Hanmin Qin 贡献。修复了
decomposition.PCA
中noise_variance_
的实现。 #9108 由 Hanmin Qin 贡献。修复了
cluster.DBSCAN
在输入为预计算的、初始行全为零的稀疏矩阵时给出错误结果的错误。 #8306 由 Akshay Gupta 贡献。修复了
cluster.KMeans
在使用稀疏数组 X 和初始聚类中心进行拟合时,X 的均值被不必要地从聚类中心减去的错误。 #7872 由 Josh Karnofsky 贡献。修复了
covariance.EllipticEnvelope
中的输入验证。 #8086 由 Andreas Müller 贡献。修复了
covariance.MinCovDet
中的一个错误,当输入数据产生奇异协方差矩阵时,辅助方法_c_step
会抛出异常。 #3367 由 Jeremy Steward 贡献。修复了
manifold.TSNE
中影响梯度下降收敛的一个错误。 #8768 由 David DeTomaso 贡献。修复了
manifold.TSNE
存储不正确的kl_divergence_
的错误。 #6507 由 Sebastian Saeger 贡献。修复了
cross_decomposition.PLSRegression
在scale=True
时不当缩放的问题。 #7819 由 jayzed82 贡献。cluster.SpectralCoclustering
和cluster.SpectralBiclustering
的fit
方法现在符合 API 规范,接受y
参数并返回对象。 #6126, #7814 由 Laurent Direr 和 Maniteja Nandana 贡献。修复了
sklearn.mixture
的sample
方法未返回所需样本数量的错误。 #7702 由 Levi John Wolf 贡献。修复了
neighbors.NearestCentroid
中的收缩实现。 #9219 由 Hanmin Qin 贡献。
预处理和特征选择
对于稀疏矩阵,
preprocessing.normalize
结合return_norm=True
使用 'l1' 或 'l2' 范数时将抛出NotImplementedError
,而使用 'max' 范数时返回的范数将与稠密矩阵相同。 #7771 由 Ang Lu 贡献。修复了
feature_selection.SelectFdr
未严格实现 Benjamini-Hochberg 过程的错误。它之前可能选择了比应有数量更少的特征。 #7490 由 Peng Meng 贡献。修复了
linear_model.RandomizedLasso
和linear_model.RandomizedLogisticRegression
对稀疏输入失效的错误。 #8259 由 Aman Dalmia 贡献。修复了
feature_extraction.FeatureHasher
强制对哈希特征应用稀疏随机投影,从而阻止feature_extraction.text.HashingVectorizer
与feature_extraction.text.TfidfTransformer
在管道中使用的错误。 #7565 由 Roman Yurchak 贡献。修复了
feature_selection.mutual_info_regression
未正确使用n_neighbors
的错误。 #8181 由 Guillaume Lemaitre 贡献。
模型评估和元估计器
修复了
model_selection.BaseSearchCV.inverse_transform
返回self.best_estimator_.transform()
而不是self.best_estimator_.inverse_transform()
的错误。 #8344 由 Akshay Gupta 和 Rasmus Eriksson 贡献。为
model_selection.GridSearchCV
、model_selection.RandomizedSearchCV
、grid_search.GridSearchCV
和grid_search.RandomizedSearchCV
添加了classes_
属性,该属性与best_estimator_
的classes_
属性相匹配。 #7661 和 #8295 由 Alyssa Batula、Dylan Werner-Meier 和 Stephen Hoover 贡献。修复了
model_selection.validation_curve
对每个参数值重复使用同一个估计器的错误。 #7365 由 Aleksandr Sandrovskii 贡献。model_selection.permutation_test_score
现在支持 Pandas 类型。 #5697 由 Stijn Tonk 贡献。对
multiclass.OutputCodeClassifier
中的输入验证进行了多处修复。 #8086 由 Andreas Müller 贡献。multiclass.OneVsOneClassifier
的partial_fit
方法现在确保所有类都提前提供。 #6250 由 Asish Panda 贡献。修复了
multioutput.MultiOutputClassifier.predict_proba
返回 2D 数组列表而不是 3D 数组的错误。在不同目标列具有不同类别数量的情况下,尝试堆叠不同维度的矩阵会引发ValueError
。 #8093 由 Peter Bull 贡献。交叉验证现在支持具有只读索引的 Pandas 数据类型。 #9507 由 Loic Esteve 贡献。
指标
metrics.average_precision_score
不再在线性插值操作点之间进行插值,而是根据自上次操作点以来的召回率变化来加权精度,正如 Wikipedia 条目所述。 (#7356)。由 Nick Dingwall 和 Gael Varoquaux 贡献。修复了
metrics.classification._check_targets
中的一个错误,该错误会在y_true
和y_pred
都是'binary'
但它们的并集是'multiclass'
时返回'binary'
。 #8377 由 Loic Esteve 贡献。修复了
metrics.confusion_matrix
中的整数溢出错误,从而也修复了metrics.cohen_kappa_score
中的相关问题。 #8354, #7929 由 Joel Nothman 和 Jon Crall 贡献。修复了
metrics.pairwise.pairwise_kernels
中将gamma
参数传递给chi2
核的错误。 #5211 由 Nick Rhinehart、Saurabh Bansod 和 Andreas Müller 贡献。
杂项
修复了
datasets.make_classification
在生成超过 30 个特征时失效的错误。 #8159 由 Herilalaina Rakotoarison 贡献。修复了
datasets.make_moons
在n_samples
为奇数时给出不正确结果的错误。 #8198 由 Josh Levy 贡献。sklearn.datasets
中的一些fetch_
函数忽略了download_if_missing
关键字。 #7944 由 Ralf Gommers 贡献。修复了估计器在其
fit
函数中接受pandas.Series
类型的sample_weight
参数的错误。 #7825 由 Kathleen Chen 贡献。修复了在
numpy.cumsum
可能存在数值不稳定性时抛出异常的错误。 #7376 和 #7331 由 Joel Nothman 和 @yangarbiter 贡献。修复了在多重继承上下文中使用时,
base.BaseEstimator.__getstate__
阻碍子类 pickle 自定义化的错误。 #8316 由 Holger Peters 贡献。将 Sphinx-Gallery 从 0.1.4 更新到 0.1.7,以解决 Sphinx>1.5 文档构建中的链接问题。 #8010, #7986 由 Oscar Najera 贡献。
向
sklearn.datasets.fetch_kddcup99
添加了data_home
参数。 #9289 由 Loic Esteve 贡献。修复了数据集加载器使用 Python 3 版本的 makedirs 在 Python 2 中也能工作的错误。 #9284 由 Sebastin Santy 贡献。
在 lgtm.com 的提醒下,修复了一些小问题。 #9278 由 Jean Helie 等人贡献。
API 变更摘要#
树模型和集成模型
梯度提升基本模型不再是估计器。由 Andreas Müller 贡献。
所有基于树的估计器现在都接受
min_impurity_decrease
参数,以替代现已弃用的min_impurity_split
。min_impurity_decrease
有助于停止分裂加权不纯度降低不再至少为min_impurity_decrease
的节点。 #8449 由 Raghav RV 贡献。
线性、核化及相关模型
n_iter
参数在linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
、linear_model.PassiveAggressiveRegressor
和linear_model.Perceptron
中已被弃用。由 Tom Dupre la Tour 贡献。
其他预测器
neighbors.LSHForest
已被弃用,并将由于性能不佳而在 0.21 版本中移除。 #9078 由 Laurent Direr 贡献。neighbors.NearestCentroid
不再声称支持metric='precomputed'
,现在会引发错误。 #8515 由 Sergul Aydore 贡献。semi_supervised.LabelPropagation
的alpha
参数现在没有效果,并已弃用,将在 0.21 版本中移除。 #9239 由 Andre Ambrosio Boechat、Utkarsh Upadhyay 和 Joel Nothman 贡献。
分解、流形学习和聚类
弃用
decomposition.LatentDirichletAllocation
中perplexity
方法的doc_topic_distr
参数,因为用户无法再访问用于困惑度计算的未归一化文档主题分布。 #7954 由 Gary Foreman 贡献。decomposition.LatentDirichletAllocation
的n_topics
参数已更名为n_components
,并将在 0.21 版本中移除。 #8922 由 @Attractadore 贡献。decomposition.SparsePCA.transform
的ridge_alpha
参数已被弃用,建议使用类参数。 #8137 由 Naoya Kanai 贡献。cluster.DBSCAN
现在有一个metric_params
参数。 #8139 由 Naoya Kanai 贡献。
预处理和特征选择
feature_selection.SelectFromModel
现在仅当底层估计器支持时才具有partial_fit
方法。由 Andreas Müller 贡献。feature_selection.SelectFromModel
现在验证threshold
参数并在调用fit
期间设置threshold_
属性,不再在调用transform
期间设置。由 Andreas Müller 贡献。feature_extraction.FeatureHasher
中的non_negative
参数已被弃用,并由更合理的替代方案alternate_sign
取代。 #7565 由 Roman Yurchak 贡献。linear_model.RandomizedLogisticRegression
和linear_model.RandomizedLasso
已被弃用,并将在 0.21 版本中移除。 #8995 由 Ramana.S 贡献。
模型评估和元估计器
弃用
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
构造函数中的fit_params
输入,推荐将关键字参数传递给这些类的fit
方法。模型训练所需的数据相关参数应作为关键字参数传递给fit
,符合此约定将允许超参数选择类与model_selection.cross_val_predict
等工具一起使用。 #2879 由 Stephen Hoover 贡献。在 0.21 版本中,使用
test_size
和train_size
参数的分割器的默认行为将发生变化,即仅指定train_size
将导致test_size
为剩余部分。 #7459 由 Nelson Liu 贡献。multiclass.OneVsRestClassifier
现在仅当底层估计器支持时才具有partial_fit
、decision_function
和predict_proba
方法。 #7812 由 Andreas Müller 和 Mikhail Korobov 贡献。multiclass.OneVsRestClassifier
现在仅当底层估计器支持时才具有partial_fit
方法。由 Andreas Müller 贡献。multiclass.OneVsRestClassifier
和multiclass.OneVsOneClassifier
中二元分类的decision_function
输出形状现在为(n_samples,)
,以符合 scikit-learn 约定。 #9100 由 Andreas Müller 贡献。multioutput.MultiOutputClassifier.predict_proba
函数以前返回一个 3D 数组(n_samples
,n_classes
,n_outputs
)。在不同目标列具有不同类别数量的情况下,尝试堆叠不同维度的矩阵会引发ValueError
。现在此函数返回一个数组列表,其中列表的长度为n_outputs
,每个数组都是特定输出的(n_samples
,n_classes
)。 #8093 由 Peter Bull 贡献。在
pipeline.Pipeline
中将属性named_steps
dict
替换为utils.Bunch
,以实现在交互式环境中的 Tab 键补全。如果named_steps
和dict
属性的值发生冲突,将优先处理dict
的行为。 #8481 由 Herilalaina Rakotoarison 贡献。
杂项
弃用
transform
和inverse_transform
中的y
参数。该方法不应接受y
参数,因为它是在预测时使用的。 #8174 由 Tahar Zanouda、Alexandre Gramfort 和 Raghav RV 贡献。SciPy >= 0.13.3 和 NumPy >= 1.8.2 现在是 scikit-learn 支持的最低版本。因此,
sklearn.utils
中以下反向移植的函数已被移除或弃用。 #8854 和 #8874 由 Naoya Kanai 贡献。discriminant_analysis.QuadraticDiscriminantAnalysis
的store_covariances
和covariances_
参数已重命名为store_covariance
和covariance_
,以与discriminant_analysis.LinearDiscriminantAnalysis
的相应参数名称保持一致。它们将在 0.21 版本中移除。 #7998 由 Jiacheng 贡献。在 0.19 版本中移除
utils.fixes.argpartition
utils.fixes.array_equal
utils.fixes.astype
utils.fixes.bincount
utils.fixes.expit
utils.fixes.frombuffer_empty
utils.fixes.in1d
utils.fixes.norm
utils.fixes.rankdata
utils.fixes.safe_copy
在 0.19 版本中弃用,将在 0.21 版本中移除
utils.arpack.eigs
utils.arpack.eigsh
utils.arpack.svds
utils.extmath.fast_dot
utils.extmath.logsumexp
utils.extmath.norm
utils.extmath.pinvh
utils.graph.graph_laplacian
utils.random.choice
utils.sparsetools.connected_components
utils.stats.rankdata
现在要求同时具有
decision_function
和predict_proba
方法的估计器之间具有单调关系。在 utils.estimator_checks 中添加了check_decision_proba_consistency
方法来检查它们的一致性。 #7578 由 Shubham Bhardwaj 贡献。utils.estimator_checks
中的所有检查,特别是utils.estimator_checks.check_estimator
,现在都接受估计器实例。大多数其他检查不再接受估计器类。 #9019 由 Andreas Müller 贡献。确保估计器的以
_
结尾的属性不在构造函数中设置,而仅在fit
方法中设置。最值得注意的是,集成估计器(派生自ensemble.BaseEnsemble
)现在仅在fit
之后才具有self.estimators_
。 #7464 由 Lars Buitinck 和 Loic Esteve 贡献。
代码和文档贡献者#
感谢自 0.18 版本以来为项目维护和改进做出贡献的每个人,包括:
Joel Nothman, Loic Esteve, Andreas Mueller, Guillaume Lemaitre, Olivier Grisel, Hanmin Qin, Raghav RV, Alexandre Gramfort, themrmax, Aman Dalmia, Gael Varoquaux, Naoya Kanai, Tom Dupré la Tour, Rishikesh, Nelson Liu, Taehoon Lee, Nelle Varoquaux, Aashil, Mikhail Korobov, Sebastin Santy, Joan Massich, Roman Yurchak, RAKOTOARISON Herilalaina, Thierry Guillemot, Alexandre Abadie, Carol Willing, Balakumaran Manoharan, Josh Karnofsky, Vlad Niculae, Utkarsh Upadhyay, Dmitry Petrov, Minghui Liu, Srivatsan, Vincent Pham, Albert Thomas, Jake VanderPlas, Attractadore, JC Liu, alexandercbooth, chkoar, Óscar Nájera, Aarshay Jain, Kyle Gilliam, Ramana Subramanyam, CJ Carey, Clement Joudet, David Robles, He Chen, Joris Van den Bossche, Karan Desai, Katie Luangkote, Leland McInnes, Maniteja Nandana, Michele Lacchia, Sergei Lebedev, Shubham Bhardwaj, akshay0724, omtcyfz, rickiepark, waterponey, Vathsala Achar, jbDelafosse, Ralf Gommers, Ekaterina Krivich, Vivek Kumar, Ishank Gulati, Dave Elliott, ldirer, Reiichiro Nakano, Levi John Wolf, Mathieu Blondel, Sid Kapur, Dougal J. Sutherland, midinas, mikebenfield, Sourav Singh, Aseem Bansal, Ibraim Ganiev, Stephen Hoover, AishwaryaRK, Steven C. Howell, Gary Foreman, Neeraj Gangwar, Tahar, Jon Crall, dokato, Kathy Chen, ferria, Thomas Moreau, Charlie Brummitt, Nicolas Goix, Adam Kleczewski, Sam Shleifer, Nikita Singh, Basil Beirouti, Giorgio Patrini, Manoj Kumar, Rafael Possas, James Bourbeau, James A. Bednar, Janine Harper, Jaye, Jean Helie, Jeremy Steward, Artsiom, John Wei, Jonathan LIgo, Jonathan Rahn, seanpwilliams, Arthur Mensch, Josh Levy, Julian Kuhlmann, Julien Aubert, Jörn Hees, Kai, shivamgargsya, Kat Hempstalk, Kaushik Lakshmikanth, Kennedy, Kenneth Lyons, Kenneth Myers, Kevin Yap, Kirill Bobyrev, Konstantin Podshumok, Arthur Imbert, Lee Murray, toastedcornflakes, Lera, Li Li, Arthur Douillard, Mainak Jas, tobycheese, Manraj Singh, Manvendra Singh, Marc Meketon, MarcoFalke, Matthew Brett, Matthias Gilch, Mehul Ahuja, Melanie Goetz, Meng, Peng, Michael Dezube, Michal Baumgartner, vibrantabhi19, Artem Golubin, Milen Paskov, Antonin Carette, Morikko, MrMjauh, NALEPA Emmanuel, Namiya, Antoine Wendlinger, Narine Kokhlikyan, NarineK, Nate Guerin, Angus Williams, Ang Lu, Nicole Vavrova, Nitish Pandey, Okhlopkov Daniil Olegovich, Andy Craze, Om Prakash, Parminder Singh, Patrick Carlson, Patrick Pei, Paul Ganssle, Paulo Haddad, Paweł Lorek, Peng Yu, Pete Bachant, Peter Bull, Peter Csizsek, Peter Wang, Pieter Arthur de Jong, Ping-Yao, Chang, Preston Parry, Puneet Mathur, Quentin Hibon, Andrew Smith, Andrew Jackson, 1kastner, Rameshwar Bhaskaran, Rebecca Bilbro, Remi Rampin, Andrea Esuli, Rob Hall, Robert Bradshaw, Romain Brault, Aman Pratik, Ruifeng Zheng, Russell Smith, Sachin Agarwal, Sailesh Choyal, Samson Tan, Samuël Weber, Sarah Brown, Sebastian Pölsterl, Sebastian Raschka, Sebastian Saeger, Alyssa Batula, Abhyuday Pratap Singh, Sergey Feldman, Sergul Aydore, Sharan Yalburgi, willduan, Siddharth Gupta, Sri Krishna, Almer, Stijn Tonk, Allen Riddell, Theofilos Papapanagiotou, Alison, Alexis Mignon, Tommy Boucher, Tommy Löfstedt, Toshihiro Kamishima, Tyler Folkman, Tyler Lanigan, Alexander Junge, Varun Shenoy, Victor Poughon, Vilhelm von Ehrenheim, Aleksandr Sandrovskii, Alan Yee, Vlasios Vasileiou, Warut Vijitbenjaronk, Yang Zhang, Yaroslav Halchenko, Yichuan Liu, Yuichi Fujikawa, affanv14, aivision2020, xor, andreh7, brady salz, campustrampus, Agamemnon Krasoulis, ditenberg, elena-sharova, filipj8, fukatani, gedeck, guiniol, guoci, hakaa1, hongkahjun, i-am-xhy, jakirkham, jaroslaw-weber, jayzed82, jeroko, jmontoyam, jonathan.striebel, josephsalmon, jschendel, leereeves, martin-hahn, mathurinm, mehak-sachdeva, mlewis1729, mlliou112, mthorrell, ndingwall, nuffe, yangarbiter, plagree, pldtc325, Breno Freitas, Brett Olsen, Brian A. Alfano, Brian Burns, polmauri, Brandon Carter, Charlton Austin, Chayant T15h, Chinmaya Pancholi, Christian Danielsen, Chung Yen, Chyi-Kwei Yau, pravarmahajan, DOHMATOB Elvis, Daniel LeJeune, Daniel Hnyk, Darius Morawiec, David DeTomaso, David Gasquez, David Haberthür, David Heryanto, David Kirkby, David Nicholson, rashchedrin, Deborah Gertrude Digges, Denis Engemann, Devansh D, Dickson, Bob Baxley, Don86, E. Lynch-Klarup, Ed Rogers, Elizabeth Ferriss, Ellen-Co2, Fabian Egli, Fang-Chieh Chou, Bing Tian Dai, Greg Stupp, Grzegorz Szpak, Bertrand Thirion, Hadrien Bertrand, Harizo Rajaona, zxcvbnius, Henry Lin, Holger Peters, Icyblade Dai, Igor Andriushchenko, Ilya, Isaac Laughlin, Iván Vallés, Aurélien Bellet, JPFrancoia, Jacob Schreiber, Asish Mahapatra