版本 0.19#
版本 0.19.2#
2018年7月
此版本仅用于支持 Python 3.7。
版本 0.19.1#
2017年10月23日
这是一个错误修复版本,包含一些次要的文档改进以及对 0.19.0 版本中发布的功能的增强。
请注意,此版本中 TSNE 输出可能存在细微差异(由于#9623),在多个样本到某个样本的距离相等的情况下。
变更日志#
API 更改#
回滚了添加
metrics.ndcg_score
和metrics.dcg_score
的操作,这两个函数由于错误被合并到 0.19.0 版本中。它们的实现已损坏且未记录。在 0.19.0 版本中添加到
model_selection.GridSearchCV
、model_selection.RandomizedSearchCV
和model_selection.cross_validate
的return_train_score
参数的默认值将在 0.21 版本中从 True 更改为 False。我们发现,在某些情况下,计算训练分数会对交叉验证运行时间产生很大的影响。如果预测或评分函数很慢,从而对交叉验证运行时间产生不利影响,用户应明确将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.1 中修复了 0.19.0 中的回归问题
修复了随机森林中并行化预测不是线程安全的,并且可能(很少)导致任意错误的错误。#9830 由Joel Nothman提交。
修复了
model_selection.cross_val_predict
中的回归问题,它不再接受X
作为列表。#9600 由Rasul Kerimov提交。修复了针对二元分类使用
method='decision_function'
的model_selection.cross_val_predict
的处理方式。由Reiichiro Nakano和核心开发者解决,#9593。修复了
pipeline.Pipeline
中的回归问题,它不再接受steps
作为元组。由Joris Van den Bossche解决,#9604。修复了
n_iter
未被正确弃用的bug,导致n_iter
在linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
、linear_model.PassiveAggressiveRegressor
和linear_model.Perceptron
中无法临时使用。由Andreas Müller解决,#9558。数据集获取器在删除临时文件之前确保已关闭它们,这在Windows上会导致错误。由Joan Massich解决,#9847。
修复了
manifold.TSNE
中的回归问题,它不再支持除“euclidean”和“precomputed”之外的度量。由Oli Blum解决,#9623。
增强功能#
我们的测试套件和
utils.estimator_checks.check_estimator
现在可以在没有安装Nose的情况下运行。由Joan Massich解决,#9697。为了提高0.19版本
pipeline.Pipeline
缓存的可用性,memory
现在允许使用joblib.Memory
实例。这利用了新的utils.validation.check_memory
辅助函数。问题:9584
,由Kumar Ashutosh解决。使基于SGD的估计器中的FutureWarning不太冗长。由Vrishank Bhardwaj解决,#9802。
代码和文档贡献者#
感谢
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损失的multinomial 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贡献。添加了求解器
'saga'
,它在linear_model.LogisticRegression
和linear_model.Ridge
中实现了改进的随机平均梯度。它允许使用具有多项逻辑损失的L1惩罚,并且在岭回归和逻辑回归的前几个时期表现略好于'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
中实现了乘法更新,允许优化所有β散度,包括 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 完成。内存使用改进:防止以下情况下的 float32 到 float64 的转换:使用 newton-cg 求解器的
linear_model.LogisticRegression
;使用 svd、sparse_cg、cholesky 或 lsqr 求解器的linear_model.Ridge
;以及linear_model.MultiTaskElasticNet
。#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 完成。当
beta_loss=0
时,decomposition.NMF
速度更快。#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_
维度大于 1 时,可以指定范数阶数。 #6181 (由 Antoine Wendlinger 提交)。为
feature_selection.f_regression
添加了使用稀疏矩阵的能力,支持center=True
。 #8065 (由 Daniel LeJeune 提交)。通过为循环绑定方法和对单字词进行特殊处理,对
sklearn.feature_extraction.text
中的 n-gram 创建进行了小的性能改进。 #7567 (由 Jaye Doepke 提交)放宽了对
kernel_approximation.SkewedChi2Sampler
数据的假设。由于偏斜 Chi2 核定义在开区间 \((-skewedness; +\infty)^d\) 上,转换函数应该检查X < -self.skewedness
而不是X < 0
。 #7573 (由 Romain Brault 提交)。在
kernel_approximation.Nystroem
中,使默认内核参数依赖于内核。 #5229 (由 Saurabh Bansod 和 Andreas Müller 提交)。
模型评估和元估计器
现在可以使用
memory
构造参数在pipeline.Pipeline
中缓存转换器。 #7990 (由 Guillaume Lemaitre 提交)。现在可以通过其
named_steps
属性访问pipeline.Pipeline
步骤作为属性。 #8586 (由 Herilalaina Rakotoarison 提交)。为
pipeline.Pipeline.score
添加了sample_weight
参数。 #7723 (由 Mikhail Korobov 提交)。为
pipeline.make_union
添加了设置n_jobs
参数的能力。对于任何其他关键字参数,都会引发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
由 彭宇 完成。为
model_selection.TimeSeriesSplit
添加了max_train_size
参数。 #8282 由 Aman Dalmia 完成。现在可以通过
metrics.get_scorer
和scoring
参数使用更多聚类指标。 #8117 由 Raghav RV 完成。还提供了一个基于
metrics.explained_variance_score
的评分器。 #9259 由 秦汉民 完成。
指标
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 完成。
错误修复#
树和集成
修复了在使用
criterion='mae'
的树时,树中存在的内存泄漏问题。 #8002 由 Raghav RV 完成。修复了
ensemble.IsolationForest
使用平均路径长度的错误公式的问题。 #8549 由 Peter Wang 完成。修复了
ensemble.AdaBoostClassifier
在拟合具有单一类别标签的数据时抛出ZeroDivisionError
的错误。 #7501 由 Dominik Krzeminski 完成。修复了
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
中的一个bug,该bug中使用==
将浮点数与0.0
进行比较会导致除零错误。#7970 由陈鹤修复。修复了一个bug,该bug导致
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
忽略了min_impurity_split
参数。#8006 由Sebastian Pölsterl修复。修复了
ensemble.BaggingClassifier
中的oob_score
。#8936 由Michael Lewis修复。修复了随机森林估计器预测中内存使用过多的问题。#8672 由Mike Benfield修复。
修复了一个bug,该bug导致在Python 2中将
sample_weight
作为列表会破坏随机森林。#8068 由@xor修复。修复了一个bug,该bug导致当
max_features
小于1时,ensemble.IsolationForest
失败。#5732 由Ishank Gulati修复。修复了一个bug,该bug导致使用
loss='quantile'
的梯度提升在ytrue - ypred
为负值时计算出负误差,导致调用__call__
时出现错误的值。#8087 由Alexis Mignon修复。修复了一个bug,该bug导致当传入numpy数组作为权重时,
ensemble.VotingClassifier
引发错误。#7983 由Vincent Pham修复。修复了一个bug,该bug导致当features_names的长度与决策树中的n_features不匹配时,
tree.export_graphviz
引发错误。#8512 由李丽修复。
线性、核化及相关模型
修复了一个bug,该bug导致
linear_model.RANSACRegressor.fit
如果早期找到一个很大的内点群,则可能会运行到max_iter
。#8251 由@aivision2020修复。修复了一个bug,该bug导致当
alpha=0
时,naive_bayes.MultinomialNB
和naive_bayes.BernoulliNB
失败。#5814 由刘逸川和Herilalaina Rakotoarison修复。修复了一个bug,该bug导致
linear_model.LassoLars
的结果与R中可用的LassoLars实现(lars库)不同。#7849 由Jair Montoya Martinez修复。修复了
linear_model.RandomizedLasso
,linear_model.Lars
,linear_model.LassoLars
,linear_model.LarsCV
和linear_model.LassoLarsCV
中的一个bug,其中参数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
,使其返回的岭参数alpha_
和lambda_
与计算出的系数coef_
和intercept_
一致。#8224 由Peter Gedeck修复。修复了
svm.OneClassSVM
中的一个错误,该错误导致其返回浮点数而不是整数类。#8676 由Vathsala Achar修复。修复了
linear_model.LassoLarsIC
中AIC/BIC准则计算的错误。#9022 由Alexandre Gramfort和Mehmet Basbug修复。修复了LibLinear实现中的内存泄漏。#9024 由Sergei Lebedev修复。
修复了分层CV分割器无法与
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_exageration
参数之前没有效果,现在用于前250次优化迭代。修复了在#8992中报告的
AssertionError: Tree consistency failed
异常。改进学习计划,使其与参考实现lvdmaaten/bhtsne一致。由Thomas Moreau和Olivier Grisel修复。
修复了
decomposition.LatentDirichletAllocation
中的一个错误,由于从0.18版本开始,transform
方法返回的是归一化的文档主题分布,导致perplexity
方法返回不正确的结果。#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
给出错误结果的bug。#8306 由 Akshay Gupta修复。修复了使用稀疏数组X和初始质心拟合
cluster.KMeans
的bug,其中X的均值被不必要地从质心中减去。#7872 由 Josh Karnofsky修复。修复了
covariance.EllipticEnvelope
的输入验证。#8086 由 Andreas Müller修复。修复了
covariance.MinCovDet
中的一个bug,其中输入产生奇异协方差矩阵的数据会导致辅助方法_c_step
抛出异常。#3367 由 Jeremy Steward修复。修复了
manifold.TSNE
中影响梯度下降收敛的bug。#8768 由 David DeTomaso修复。修复了
manifold.TSNE
中存储错误kl_divergence_
的bug。#6507 由 Sebastian Saeger修复。修复了
cross_decomposition.PLSRegression
在scale=True
时的不正确缩放。#7819 由 jayzed82修复。cluster.SpectralCoclustering
和cluster.SpectralBiclustering
的fit
方法通过接受y
并返回对象来符合API。#6126, #7814 由 Laurent Direr和 Maniteja Nandana修复。修复了
sklearn.mixture
的sample
方法没有返回所需样本数量的bug。#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过程的bug。以前它可能选择的特征比应有的少。#7490 由 Peng Meng修复。修复了
linear_model.RandomizedLasso
和linear_model.RandomizedLogisticRegression
对于稀疏输入中断的bug。#8259 由 Aman Dalmia修复。修复了
feature_extraction.FeatureHasher
强制对哈希特征应用稀疏随机投影的bug,阻止了在管道中与feature_extraction.text.HashingVectorizer
一起使用feature_extraction.text.TfidfTransformer
。#7565 由 Roman Yurchak修复。修复了
feature_selection.mutual_info_regression
没有正确使用n_neighbors
的bug。#8181 由 Guillaume Lemaitre修复。
模型评估和元估计器
修复了
model_selection.BaseSearchCV.inverse_transform
返回self.best_estimator_.transform()
而不是self.best_estimator_.inverse_transform()
的bug。#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
返回二维数组列表而不是三维数组的错误。在不同目标列具有不同类别数的情况下,尝试堆叠不同维度的矩阵会引发ValueError
。 #8093 由 Peter Bull 完成。交叉验证现在可以与具有只读索引的 Pandas 数据类型一起使用。 #9507 由 Loic Esteve 完成。
指标
metrics.average_precision_score
不再对工作点进行线性插值,而是根据 维基百科条目,按自上次工作点以来召回率的变化对精确度进行加权。(#7356)。由 Nick Dingwall 和 Gael Varoquaux 完成。修复了
metrics.classification._check_targets
中的一个错误,该错误如果y_true
和y_pred
都为'binary'
,但y_true
和y_pred
的并集为'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__
阻碍子类自定义 pickling 的 bug。#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`
方法时设置。By Andreas Müller.feature_extraction.FeatureHasher
中的non_negative
参数已被弃用,并替换为更合理的替代方案alternate_sign
。#7565 by Roman Yurchak.linear_model.RandomizedLogisticRegression
和linear_model.RandomizedLasso
已被弃用,并将从0.21版本中移除。#8995 by Ramana.S.
模型评估和元估计器
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
的fit_params
构造函数输入已被弃用,建议使用关键字参数传递给这些类的fit
方法。模型训练所需的数据相关参数应作为关键字参数传递给fit
方法,遵循此约定将允许超参数选择类与model_selection.cross_val_predict
等工具一起使用。#2879 by Stephen Hoover.在0.21版本中,使用
test_size
和train_size
参数的分裂器的默认行为将发生变化,使得仅指定train_size
将导致test_size
为剩余部分。#7459 by Nelson Liu.multiclass.OneVsRestClassifier
现在只有当底层估计器具有partial_fit
、decision_function
和predict_proba
方法时,才具有这些方法。#7812 by Andreas Müller and Mikhail Korobov.multiclass.OneVsRestClassifier
现在只有当底层估计器具有partial_fit
方法时,才具有此方法。By Andreas Müller.现在,在
multiclass.OneVsRestClassifier
和multiclass.OneVsOneClassifier
中,二元分类的decision_function
输出形状现在为(n_samples,)
,以符合scikit-learn约定。#9100 by Andreas Müller.multioutput.MultiOutputClassifier.predict_proba
函数过去返回一个三维数组(n_samples
,n_classes
,n_outputs
)。当不同的目标列具有不同数量的类别时,尝试堆叠不同维度的矩阵将引发ValueError
。此函数现在返回一个数组列表,列表的长度为n_outputs
,每个数组对于特定输出为(n_samples
,n_classes
)。#8093 by Peter Bull.将
pipeline.Pipeline
中的named_steps
属性(dict
)替换为utils.Bunch
,以便在交互式环境中启用选项卡补全。如果named_steps
和dict
属性的值发生冲突,则优先使用dict
的行为。#8481 by 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
方法的估计器在其之间具有单调关系。check_decision_proba_consistency
方法已添加到 **utils.estimator_checks** 中以检查其一致性。 #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,mlewis1724,mlliou112,mthorrell,ndingwall,nuf,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