版本 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.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 参数。
变更模型#
以下估计器和函数在用相同数据和参数拟合时,可能会产生与上一个版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机采样过程的更改所致。
使用稀疏 X 和给定初始质心的
cluster.KMeans(错误修复)使用
scale=True的cross_decomposition.PLSRegression(错误修复)使用
min_impurity_split的ensemble.GradientBoostingClassifier和ensemble.GradientBoostingRegressor(错误修复)梯度提升
loss='quantile'(错误修复)ensemble.IsolationForest(错误修复)linear_model.LassoLars(错误修复)linear_model.LassoLarsIC(错误修复)manifold.TSNE(错误修复)使用
min_weight_fraction_leaf的基于树的模型(增强功能)使用
shuffle=True的model_selection.StratifiedKFold(此更改由于 #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 提交。将
return_std添加到linear_model.ARDRegression和linear_model.BayesianRidge的predict方法。 #7838 由 Sergey Feldman 提交。内存使用增强功能:防止在以下情况中将 float32 转换为 float64:
linear_model.MultiTaskElasticNet;使用 newton-cg 求解器时的linear_model.LogisticRegression;以及使用 svd、sparse_cg、cholesky 或 lsqr 求解器时的linear_model.Ridge。 #8835、#8061 由 Joan Massich、Nicolas Cordier 和 Thierry Guillemot 提交。
其他预测器
sklearn.neighbors二叉树的自定义度量现在限制较少:它们必须接受两个 1d 数组并返回一个浮点数。 #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_超过 1D 时选择范数阶数。 #6181 由 Antoine Wendlinger 提交。添加了在
feature_selection.f_regression中使用center=True时使用稀疏矩阵的能力。 #8065 由 Daniel LeJeune 提交。通过绑定循环方法和特殊处理 unigram,对
sklearn.feature_extraction.text中的 n-gram 创建进行了小幅性能改进。 #7567 由 Jaye Doepke 提交。放宽了
kernel_approximation.SkewedChi2Sampler对数据的假设。由于 Skewed-Chi2 核定义在开区间 \((-skewedness; +\infty)^d\) 上,因此 transform 函数不应检查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进行在线学习。 #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 提交。
修复了在 Python 2 中将
sample_weight作为列表传递时会破坏随机森林的错误 #8068 由 @xor 提交。修复了
ensemble.IsolationForest在max_features小于 1 时失败的错误。 #5732 由 Ishank Gulati 提交。修复了当
loss='quantile'时,梯度提升对ytrue - ypred的负值计算负错误,导致调用__call__时值不正确的错误。 #8087 由 Alexis Mignon 提交。修复了
ensemble.VotingClassifier在传递 numpy 数组作为权重时引发错误的错误。 #7983 由 Vincent Pham 提交。修复了
tree.export_graphviz在 features_names 长度与决策树中的 n_features 不匹配时引发错误的错误。 #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 library) 中可用的 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 提交。修复了
linear_model.RidgeCV和linear_model.Ridge在使用normalize=True时结果不一致的问题。 #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 提交。
修复了分层 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_exaggeration参数以前没有效果,现在用于前 250 次优化迭代。修复了 #8992 中报告的
AssertionError: Tree consistency failed异常。改进了学习调度以匹配参考实现 lvdmaaten/bhtsne 的调度。由 Thomas Moreau 和 Olivier Grisel 提交。
修复了
decomposition.LatentDirichletAllocation中的一个错误,该错误导致perplexity方法返回不正确的结果,因为自 0.18 版本起,transform方法返回的是规范化的文档-主题分布。 #7954 by Gary Foreman。修复了
decomposition.SparseCoder的 transform 方法和decomposition.sparse_encode中 n_jobs > 1 时的一维数据和单个分量的输出形状和错误。这也影响了decomposition.DictionaryLearning的输出形状。 #8086 by Andreas Müller。修复了
decomposition.PCA、decomposition.RandomizedPCA和decomposition.IncrementalPCA中explained_variance_的实现。 #9105 by Hanmin Qin。修复了
decomposition.PCA中noise_variance_的实现。 #9108 by Hanmin Qin。修复了当输入是预先计算的稀疏矩阵且初始行全为零时,
cluster.DBSCAN给出不正确结果的错误。 #8306 by Akshay Gupta修复了使用稀疏数组 X 和初始质心拟合
cluster.KMeans时的错误,其中 X 的均值被不必要地从质心中减去。 #7872 by Josh Karnofsky。修复了
covariance.EllipticEnvelope中的输入验证。 #8086 by Andreas Müller。修复了
covariance.MinCovDet中的一个错误,即输入产生奇异协方差矩阵的数据会导致辅助方法_c_step抛出异常。 #3367 by Jeremy Steward修复了
manifold.TSNE中影响梯度下降收敛的错误。 #8768 by David DeTomaso。修复了
manifold.TSNE中存储不正确的kl_divergence_的错误。 #6507 by Sebastian Saeger。修复了
cross_decomposition.PLSRegression中scale=True时的不当缩放。 #7819 by jayzed82。cluster.SpectralCoclustering和cluster.SpectralBiclustering的fit方法符合 API 要求,接受y并返回对象。 #6126, #7814 by Laurent Direr and Maniteja Nandana。修复了
sklearn.mixture的sample方法未返回所需样本数的错误。 #7702 by Levi John Wolf。修复了
neighbors.NearestCentroid中的收缩实现。 #9219 by Hanmin Qin。
预处理和特征选择
对于稀疏矩阵,
preprocessing.normalizewithreturn_norm=True在 norm 为 'l1' 或 'l2' 时将引发NotImplementedError,而在 norm 为 'max' 时返回的范数将与密集矩阵相同。 #7771 by Ang Lu。修复了
feature_selection.SelectFdr未严格执行 Benjamini-Hochberg 过程的错误。它以前可能会选择比应选择的特征少的特征。 #7490 by Peng Meng。修复了
linear_model.RandomizedLasso和linear_model.RandomizedLogisticRegression在稀疏输入时中断的错误。 #8259 by Aman Dalmia。修复了
feature_extraction.FeatureHasher强制对哈希特征应用稀疏随机投影的错误,这阻止了在管道中使用feature_extraction.text.HashingVectorizer和feature_extraction.text.TfidfTransformer。 #7565 by Roman Yurchak。修复了
feature_selection.mutual_info_regression未正确使用n_neighbors的错误。 #8181 by Guillaume Lemaitre。
模型评估和元估计器
修复了
model_selection.BaseSearchCV.inverse_transform返回self.best_estimator_.transform()而非self.best_estimator_.inverse_transform()的错误。 #8344 by Akshay Gupta and Rasmus Eriksson。为
model_selection.GridSearchCV,model_selection.RandomizedSearchCV,grid_search.GridSearchCV, 和grid_search.RandomizedSearchCV添加了classes_属性,该属性与best_estimator_的classes_属性匹配。 #7661 and #8295 by Alyssa Batula, Dylan Werner-Meier, and Stephen Hoover。修复了
model_selection.validation_curve为每个参数值重复使用同一估算器的错误。 #7365 by Aleksandr Sandrovskii。model_selection.permutation_test_score现在可与 Pandas 类型一起使用。 #5697 by Stijn Tonk。修复了
multiclass.OutputCodeClassifier中的多项输入验证。 #8086 by Andreas Müller。multiclass.OneVsOneClassifier的partial_fit现在确保所有类都预先提供。 #6250 by Asish Panda。修复了
multioutput.MultiOutputClassifier.predict_proba以返回二维数组列表,而不是三维数组。在不同目标列具有不同数量类的情况下,尝试堆叠具有不同维度的矩阵时会引发ValueError。 #8093 by Peter Bull。交叉验证现在可与具有只读索引的 Pandas 数据类型一起使用。 #9507 by Loic Esteve。
度量
metrics.average_precision_score不再在操作点之间进行线性插值,而是根据自上一个操作点以来的召回率变化来衡量精度,如 Wikipedia 条目所述。 (#7356)。 By Nick Dingwall and Gael Varoquaux。修复了
metrics.classification._check_targets中的一个错误,该错误会在y_true和y_pred均为'binary'但y_true和y_pred的并集为'multiclass'时返回'binary'。 #8377 by Loic Esteve。修复了
metrics.confusion_matrix以及metrics.cohen_kappa_score中的整数溢出错误。 #8354, #7929 by Joel Nothman and Jon Crall。修复了将
gamma参数传递给metrics.pairwise.pairwise_kernels中的chi2核时的错误。 #5211 by Nick Rhinehart, Saurabh Bansod and Andreas Müller。
杂项
修复了当生成超过 30 个特征时
datasets.make_classification失败的错误。 #8159 by Herilalaina Rakotoarison。修复了当
n_samples为奇数时datasets.make_moons给出不正确结果的错误。 #8198 by Josh Levy。sklearn.datasets中的一些fetch_函数忽略了download_if_missing关键字。 #7944 by Ralf Gommers。修复了估算器在其
fit函数中接受类型为pandas.Series的sample_weight参数的错误。 #7825 by Kathleen Chen。修复了
numpy.cumsum可能在数值上不稳定,如果发现不稳定则引发异常的情况下的错误。 #7376 and #7331 by Joel Nothman and @yangarbiter。修复了
base.BaseEstimator.__getstate__在多重继承上下文中使用时阻碍子类 pickle 自定义的错误。 #8316 by Holger Peters。更新 Sphinx-Gallery 从 0.1.4 到 0.1.7,以解决与 Sphinx>1.5 一起构建文档中的链接问题。 #8010, #7986 by Oscar Najera
向
sklearn.datasets.fetch_kddcup99添加data_home参数。 #9289 by Loic Esteve。修复了使用 Python 3 版本 makedirs 的数据集加载器在 Python 2 中也能工作的错误。 #9284 by Sebastin Santy。
在 lgtm.com 的提醒下修复了一些小问题。 #9278 by Jean Helie,以及其他人。
API 更改摘要#
树和集成
梯度提升基础模型不再是估算器。 By Andreas Müller。
所有基于树的估算器现在都接受
min_impurity_decrease参数,以代替现已弃用的min_impurity_split。min_impurity_decrease有助于停止拆分,其中拆分带来的加权杂质减少量不再至少为min_impurity_decrease。 #8449 by Raghav RV。
线性、核化和相关模型
n_iter参数在linear_model.SGDClassifier,linear_model.SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressor和linear_model.Perceptron中已弃用。 By Tom Dupre la Tour。
其他预测器
neighbors.LSHForest已弃用,并将在 0.21 版本中删除,因为它性能不佳。 #9078 by Laurent Direr。neighbors.NearestCentroid不再声称支持metric='precomputed',现在会引发错误。 #8515 by Sergul Aydore。semi_supervised.LabelPropagation的alpha参数现在无效,并已弃用,将在 0.21 版本中删除。 #9239 by Andre Ambrosio Boechat, Utkarsh Upadhyay, and Joel Nothman。
分解、流形学习和聚类
弃用
decomposition.LatentDirichletAllocation中perplexity方法的doc_topic_distr参数,因为用户无法再访问计算困惑度所需的未规范化文档主题分布。 #7954 by Gary Foreman。decomposition.LatentDirichletAllocation的n_topics参数已重命名为n_components,并将在 0.21 版本中删除。 #8922 by @Attractadore。decomposition.SparsePCA.transform的ridge_alpha参数已弃用,以支持类参数。 #8137 by Naoya Kanai。cluster.DBSCAN现在有一个metric_params参数。 #8139 by Naoya Kanai。
预处理和特征选择
feature_selection.SelectFromModel现在只有在底层估算器具有partial_fit方法时才具有该方法。 By Andreas Müller。feature_selection.SelectFromModel现在在调用fit期间验证threshold参数并设置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_stepsdict替换为utils.Bunch,以在交互式环境中启用 tab 补全。如果named_steps和dict属性的值发生冲突,则优先考虑dict行为。 #8481 by Herilalaina Rakotoarison。
杂项
弃用
transform和inverse_transform中的y参数。该方法不应接受y参数,因为它在预测时使用。 #8174 by Tahar Zanouda, Alexandre Gramfort and Raghav RV。SciPy >= 0.13.3 和 NumPy >= 1.8.2 现在是 scikit-learn 支持的最低版本。
sklearn.utils中的以下向后移植函数已相应删除或弃用。 #8854 and #8874 by Naoya Kanaidiscriminant_analysis.QuadraticDiscriminantAnalysis的store_covariances和covariances_参数已重命名为store_covariance和covariance_,以与discriminant_analysis.LinearDiscriminantAnalysis的相应参数名称保持一致。它们将在 0.21 版本中删除。 #7998 by 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方法的估算器现在需要它们之间具有单调关系。已在 utils.estimator_checks 中添加方法check_decision_proba_consistency来检查它们的一致性。 #7578 by Shubham Bhardwaj。utils.estimator_checks中的所有检查,特别是utils.estimator_checks.check_estimator,现在接受估算器实例。大多数其他检查不再接受估算器类。 #9019 by Andreas Müller。确保估算器中以
_结尾的属性不在构造函数中设置,而只在fit方法中设置。最值得注意的是,集成估算器(派生自ensemble.BaseEnsemble)现在只有在fit之后才具有self.estimators_。 #7464 by Lars Buitinck and 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