版本 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.argpartitionutils.fixes.array_equalutils.fixes.astypeutils.fixes.bincountutils.fixes.expitutils.fixes.frombuffer_emptyutils.fixes.in1dutils.fixes.normutils.fixes.rankdatautils.fixes.safe_copy
在 0.19 版本中弃用,将在 0.21 版本中移除
utils.arpack.eigsutils.arpack.eigshutils.arpack.svdsutils.extmath.fast_dotutils.extmath.logsumexputils.extmath.normutils.extmath.pinvhutils.graph.graph_laplacianutils.random.choiceutils.sparsetools.connected_componentsutils.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