版本 0.21#
Legend for changelogs
Major Feature something big that you couldn’t do before.
Feature something that you couldn’t do before.
Efficiency an existing feature now may not require as much computation or memory.
Enhancement a miscellaneous minor improvement.
Fix something that previously didn’t work as documented – or according to reasonable expectations – should now work.
API Change you will need to change your code to have the same effect in the future; or a feature will be removed in the future.
版本 0.21.3#
2019年7月30日
变更的模型#
以下估计器和函数,在相同数据和参数下进行拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑的变更(错误修复或增强),或随机抽样过程的变化所导致。
v0.20.0 发布说明中未能提及当
needs_proba=True且y_true为二元时,metrics.make_scorer中的向后不兼容性。现在,评分器函数应接受一维y_pred(即,正类的概率,形状为(n_samples,)),而不是二维y_pred(即,形状为(n_samples, 2))。
变更日志#
sklearn.cluster#
Fix 修复了
cluster.KMeans中的一个错误,当init='random'且n_jobs > 1或n_jobs = -1时,计算是单线程的。#12955 由 Prabakaran Kumaresshan 贡献。Fix 修复了
cluster.OPTICS中的一个错误,用户无法传递浮点数min_samples和min_cluster_size。#14496 由 Fabian Klopfer 和 Hanmin Qin 贡献。Fix 修复了
cluster.KMeans中的一个错误,KMeans++ 初始化偶尔会导致 IndexError。#11756 由 Joel Nothman 贡献。
sklearn.compose#
Fix 修复了
compose.ColumnTransformer中的一个问题,当使用列顺序在 :func:fit和 :func:transform之间不同的 DataFrame 时,可能会导致将错误的列静默传递给remainder转换器。#14237 由Andreas Schuderer <schuderer>贡献。
sklearn.datasets#
datasets.fetch_kddcup99 , datasets.fetch_olivetti_faces ,
datasets.fetch_rcv1 , 以及 datasets.fetch_species_distributions
尝试使用新的 joblib 持久化先前缓存的数据,如果缓存数据是使用已弃用的 sklearn.externals.joblib 持久化的。此行为将被弃用,并在 v0.23 中移除。
#14197 由 Adrin Jalali 提交。
sklearn.ensemble#
Fix 修复了
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor中的零除错误。 #14024 由Nicolas Hug <NicolasHug>提交。
sklearn.impute#
Fix 修复了
impute.SimpleImputer和impute.IterativeImputer中的一个错误,使得在训练数据中存在缺失值时不会抛出错误。 #13974 由Frank Hoang <fhoang7>提交。
sklearn.inspection#
Fix 修复了
inspection.plot_partial_dependence中的一个错误,其中target参数在多类问题中未被考虑。 #14393 由 Guillem G. Subies 提交。
sklearn.linear_model#
Fix 修复了
linear_model.LogisticRegressionCV中的一个错误,其中refit=False会根据'multiclass'和'penalty'参数失败(在 0.21 版本中引入的回归问题)。 #14087 由 Nicolas Hug 提交。Fix 修复了
linear_model.ARDRegression与 Scipy>=1.3.0 的兼容性问题。适应上游对默认pinvh截止阈值的更改,否则在某些情况下会导致精度不佳。 #14067 由 Tim Staley 提交。
sklearn.neighbors#
Fix 修复了
neighbors.NeighborhoodComponentsAnalysis中的一个错误,其中初始参数n_components,max_iter和tol的验证需要过于严格的类型。 #14092 由
sklearn.tree#
Fix 修复了当树只有一个特征且传入单个特征名称时,
tree.export_text中的错误。#14053 由Thomas Fan提交。Fix 修复了
tree.plot_tree中的一个问题,该问题在 DecisionTreeClassifiers 中使用gini准则时仍显示熵计算。#13947 由 Frank Hoang 提交。
Version 0.21.2#
2019年5月24日
更新日志#
sklearn.decomposition#
Fix 修复了
cross_decomposition.CCA中的一个错误,提高了当Y接近零时的数值稳定性。#13903 由 Thomas Fan 提交。
sklearn.metrics#
Fix 修复了
metrics.pairwise.euclidean_distances中的一个错误,该错误导致对于足够大的 float32 数据集,部分距离矩阵未实例化(在 0.21 版本中引入的回归问题)。#13910 由 Jérémie du Boisberranger 提交。
sklearn.preprocessing#
Fix 修复了
preprocessing.OneHotEncoder中的一个错误,其中新的drop参数未反映在get_feature_names中。#13894 由 James Myatt 提交。
sklearn.utils.sparsefuncs
Fix 修复了一个错误,
min_max_axis在 32 位系统上对于某些大输入会失败。这影响了preprocessing.MaxAbsScaler、preprocessing.normalize和preprocessing.LabelBinarizer。#13741 由 Roddy MacSween 提交。
Version 0.21.1#
2019年5月17日
这是一个错误修复版本,主要是为了解决 0.21.0 版本中的一些打包问题。它还包括一些小的文档改进和一些错误修复。
更新日志#
sklearn.inspection#
Fix 修复了
inspection.partial_dependence中的一个错误,仅在多类-多输出情况下检查分类器而不是回归器。 #14309 由 Guillaume Lemaitre 提交。
sklearn.metrics#
Fix 修复了
metrics.pairwise_distances中的一个错误,当X具有布尔数据类型且Y == None时会引发AttributeError。 #13864 由 Paresh Mathur 提交。Fix 修复了
metrics.pairwise_distances中的两个错误,当n_jobs > 1时。首先,它以前会返回与输入相同数据类型的距离矩阵,即使是整数数据类型。然后,当Y是X时,欧几里得度量的对角线不是零。 #13877 由 Jérémie du Boisberranger 提交。
sklearn.neighbors#
Fix 修复了
neighbors.KernelDensity中的一个错误,如果使用了sample_weight,则无法从 pickle 中恢复。 #13772 由 Aditya Vyas 提交。
版本 0.21.0#
2019年5月
更改的模型#
以下估计器和函数,当使用相同的数据和参数进行拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑的变化(错误修复或增强)或随机抽样过程的变化。
discriminant_analysis.LinearDiscriminantAnalysis使用 ‘eigen’ 求解器。Fix决策树及其派生集成,当同时设置
max_depth和max_leaf_nodes时。Fixlinear_model.LogisticRegression和linear_model.LogisticRegressionCV使用 ‘saga’ 求解器。Fixsklearn.feature_extraction.text.HashingVectorizer,sklearn.feature_extraction.text.TfidfVectorizer, 以及sklearn.feature_extraction.text.CountVectorizerFixsvm.SVC.decision_function和multiclass.OneVsOneClassifier.decision_function. Fixlinear_model.SGDClassifier及其衍生分类器。 Fix任何使用
linear_model._sag.sag_solver函数且种子为0的模型,包括linear_model.LogisticRegression,linear_model.LogisticRegressionCV,linear_model.Ridge, 以及使用 ‘sag’ 求解器的linear_model.RidgeCV。 Fix当使用留一交叉验证和稀疏输入时,
linear_model.RidgeCV。 Fix
详细信息列在下面的变更日志中。
(虽然我们正努力通过提供这些信息来更好地告知用户,但我们不能保证此列表是完整的。)
已知重大错误#
linear_model.LogisticRegression的默认max_iter对于许多求解器来说太小,给定默认的tol。特别是,我们在版本 0.16 中发布的 #3591 中,意外地将 liblinear 求解器的默认max_iter从 1000 次迭代更改为 100 次迭代。在未来的版本中,我们希望根据求解器启发式地选择更好的默认max_iter和tol(参见 #13317 )。
变更日志#
已正式放弃对 Python 3.4 及以下版本的支持。
sklearn.base#
API Change 当在回归器上调用
score时使用的 R2 评分将从版本 0.23 开始使用multioutput='uniform_average'以保持与metrics.r2_score的一致性。这将影响所有多输出回归器的score方法(除了multioutput.MultiOutputRegressor)。 #13157 由 Hanmin Qin 提交。
sklearn.calibration#
Enhancement 增加了通过分位数而不是在 0 和 1 之间均匀分箱的方式对传递给
calibration.calibration_curve的数据进行分箱的支持。 #13086 由 Scott Cole 提交。Enhancement 允许
calibration.CalibratedClassifierCV接受 n 维数组作为输入。#13485 由 William de Vazelhes 提交。
sklearn.cluster#
Major Feature 一种新的聚类算法:
cluster.OPTICS:一种与cluster.DBSCAN相关的算法,其超参数更易于设置且扩展性更好,由 Shane 、 Adrin Jalali 、Erich Schubert 、 Hanmin Qin 和 Assia Benbihi 提交。Fix 修复了一个
cluster.Birch偶尔会引发 AttributeError 的错误。#13651 由 Joel Nothman 提交。Fix 修复了
cluster.KMeans中在使用样本权重时,空簇未正确重新定位的错误。#13486 由 Jérémie du Boisberranger 提交。API Change
cluster.AgglomerativeClustering和cluster.FeatureAgglomeration中的n_components_属性已重命名为n_connected_components_。 #13427 由 Stephane Couvreur 提交。Enhancement
cluster.AgglomerativeClustering和cluster.FeatureAgglomeration现在接受一个distance_threshold参数,该参数可用于查找簇而不是n_clusters。 #9069 由 Vathsala Achar 和 Adrin Jalali 提交。
sklearn.compose#
API Change
compose.ColumnTransformer不再是实验性功能。#13835 由 Hanmin Qin 提交。
sklearn.datasets#
Fix 增加了对 SVMLight 文件中 64 位组 ID 和指针的支持。#10727 由 Bryan K Woods 提交。
Fix
datasets.load_sample_images返回的图像具有确定性顺序。#13250 由 Thomas Fan 提交。
sklearn.decomposition#
Enhancement
decomposition.KernelPCA现在具有确定性输出(解决了核矩阵特征值分解中的符号歧义)。#13241 由 Aurélien Bellet 提交。Fix 修复了
decomposition.KernelPCA中的一个错误,fit().transform()现在在非移除零特征值(remove_zero_eig=False)的情况下产生正确的输出(与fit_transform()相同)。fit_inverse_transform也通过使用与fit_transform相同的技巧来计算X的变换,从而加速。#12143 由 Sylvain Marié 提交。Fix 修复了
decomposition.NMF中的一个错误,当init = 'nndsvd'、init = 'nndsvda'和init = 'nndsvdar'允许在n_components < n_features而不是n_components <= min(n_samples, n_features)时。#11650 由 Hossein Pourbozorg 和 Zijie (ZJ) Poh 提交。API Change
decomposition.non_negative_factorization中init参数的默认值将从random变为None(在版本 0.23 中),以使其与decomposition.NMF一致。当使用默认值时,会引发 FutureWarning。#12988 由 Zijie (ZJ) Poh 提交。
sklearn.discriminant_analysis#
Enhancement
discriminant_analysis.LinearDiscriminantAnalysis现在保留float32和float64数据类型。#8769 和 #11000 由 Thibault Sejourne 贡献。Fix 当
discriminant_analysis.LinearDiscriminantAnalysis的参数n_components大于min(n_features, n_classes - 1)时,现在会引发ChangedBehaviourWarning,并且如果需要,n_components会被更改为min(n_features, n_classes - 1)。之前这种更改是静默进行的。#11526 由 William de Vazelhes 贡献。Fix 修复了
discriminant_analysis.LinearDiscriminantAnalysis中的一个错误,该错误在多类情况下会错误地计算预测概率。#6848 ,由 Agamemnon Krasoulis 和Guillaume Lemaitre <glemaitre>贡献。Fix 修复了
discriminant_analysis.LinearDiscriminantAnalysis中的一个错误,该错误在使用eigen求解器时会错误地计算预测概率。#11727 ,由 Agamemnon Krasoulis 贡献。
sklearn.dummy#
Fix 修复了
dummy.DummyClassifier中的一个错误,该错误在stratified策略下predict_proba方法返回的是 int32 数组而不是 float64。#13266 由 Christos Aridas 贡献。Fix 修复了
dummy.DummyClassifier中的一个错误,该错误在预测时会抛出维度不匹配的错误,如果在fit时给定的是形状为(n, 1)的列向量y。#13545 由 Nick Sorros 和 Adrin Jalali 贡献。
sklearn.ensemble#
Major Feature 添加了两种新的梯度提升树实现:
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor。这些估计器的实现受到 LightGBM 的启发,并且可以有数量级的性能提升。
比 ensemble.GradientBoostingRegressor 和
ensemble.GradientBoostingClassifier 快得多,
当样本数量大于数万个样本时。这些新估计器的API略有不同,
并且 ensemble.GradientBoostingClassifier 和
ensemble.GradientBoostingRegressor 的一些功能尚未支持。
这些新估计器是实验性的,这意味着它们的结果或API可能会在没有任何弃用周期的情况下发生变化。要使用它们,您需要显式导入 enable_hist_gradient_boosting
>>> # 显式要求此实验性功能
>>> from sklearn.experimental import enable_hist_gradient_boosting # noqa
>>> # 现在可以从 sklearn.ensemble 正常导入
>>> from sklearn.ensemble import HistGradientBoostingClassifier
Note
更新:自版本1.0起,这些估计器不再是实验性的,您不需要使用 from sklearn.experimental import enable_hist_gradient_boosting 。
#12807 由 Nicolas Hug 贡献。
Feature 添加
ensemble.VotingRegressor, 为回归问题提供与ensemble.VotingClassifier等效的功能。 #12513 由 Ramil Nugmanov 和 Mohamed Ali Jamaoui 贡献。Efficiency 使
ensemble.IsolationForest在运行n_jobs > 1时优先使用线程而非进程,因为底层决策树拟合调用会释放GIL。这一更改减少了内存使用和通信开销。#12543 由 Isaac Storch 和 Olivier Grisel 贡献。Efficiency 通过避免在内存中保留每个树的预测,使
ensemble.IsolationForest更节省内存。#13260 由 Nicolas Goix 贡献。Efficiency
ensemble.IsolationForest现在在预测步骤中使用数据块,从而限制了内存使用。#13283 由 Nicolas Goix 贡献。 Nicolas Goix .Efficiency
sklearn.ensemble.GradientBoostingClassifier和sklearn.ensemble.GradientBoostingRegressor现在将输入y保持为float64,以避免内部树对其进行复制。 #13524 由 Adrin Jalali 提交。Enhancement 最小化了
ensemble.AdaBoostClassifier和ensemble.AdaBoostRegressor中对 X 的验证 #13174 由 Christos Aridas 提交。Enhancement
ensemble.IsolationForest现在暴露了warm_start参数,允许迭代地向隔离森林添加树。 #13496 由 Peter Marko 提交。Fix 所有基于随机森林的模型(即
ensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifier,ensemble.ExtraTreesRegressor,ensemble.RandomTreesEmbedding,ensemble.GradientBoostingClassifier, 和ensemble.GradientBoostingRegressor)中的feature_importances_值现在:总和为
1在特征重要性计算中忽略所有单节点树
如果所有树都只有一个节点(即根节点),特征重要性将是一个全零数组。
#13636 和 #13620 由 Adrin Jalali 提交。
Fix 修复了
ensemble.GradientBoostingClassifier和ensemble.GradientBoostingRegressor中的一个错误,该错误不支持将 scikit-learn 估计器作为初始估计器。还增加了对不支持样本权重的初始估计器的支持。 #12436 由 Jérémie du Boisberranger 提交,以及 #12983 由 Nicolas Hug 提交。Fix 修复了
ensemble.IsolationForest中计算的平均路径长度输出,当输入为 0、1 或 2 时。 #13251 由 Albert Thomas 和 joshuakennethjones 提交。Fix 修复了
ensemble.GradientBoostingClassifier中的一个错误,该错误在多类分类问题中会错误地计算梯度。#12715 由 Nicolas Hug 提交。Fix 修复了
ensemble.GradientBoostingClassifier中的一个错误,该错误在早停法的验证集采样时未进行分层采样。#13164 由 Nicolas Hug 提交。Fix 修复了
ensemble.GradientBoostingClassifier中的一个错误,该错误在多类分类器的默认初始预测中会预测类别的先验概率而不是先验概率的对数。#12983 由 Nicolas Hug 提交。Fix 修复了
ensemble.RandomForestClassifier中的一个错误,该错误在多类多输出森林模型中,如果任何目标为字符串,predict方法会出错。#12834 由 Elizabeth Sander 提交。Fix 修复了
ensemble.gradient_boosting.LossFunction和ensemble.gradient_boosting.LeastSquaresError中的一个错误,其中update_terminal_regions的learning_rate默认值与文档和调用函数不一致。但请注意,直接使用这些损失函数已被弃用。#6463 由 movelikeriver 提交。Fix
ensemble.partial_dependence(以及新的版本sklearn.inspection.partial_dependence)现在在计算部分依赖时会考虑样本权重,当梯度提升模型使用样本权重进行训练时。#13193 由 Samuel O. Ronsin 提交。API Change
ensemble.partial_dependence和ensemble.plot_partial_dependence现在已被弃用,取而代之的是inspection.partial_dependence和inspection.plot_partial_dependence<sklearn.inspection.plot_partial_dependence>。#12599 由 Trevor Stephens 和 Nicolas Hug 提交。Fix
ensemble.VotingClassifier和ensemble.VotingRegressor在其中一个估计器设置为None且sample_weight不为None时,在fit过程中会失败。 #13779 由 Guillaume Lemaitre 提交。API Change
ensemble.VotingClassifier和ensemble.VotingRegressor接受'drop'来禁用一个估计器,除了None之外,以与其他估计器(例如,pipeline.FeatureUnion和compose.ColumnTransformer)保持一致。 #13780 由 Guillaume Lemaitre 提交。
sklearn.externals
API Change 由于我们已放弃对 Python 2.7 的支持,因此弃用了
externals.six。 #12916 由 Hanmin Qin 提交。
sklearn.feature_extraction#
Fix 如果
input='file'或input='filename',并且将可调用对象作为analyzer传递,sklearn.feature_extraction.text.HashingVectorizer,sklearn.feature_extraction.text.TfidfVectorizer,以及sklearn.feature_extraction.text.CountVectorizer现在会从文件中读取数据,然后将数据传递给给定的analyzer,而不是将文件名或文件对象传递给分析器。 #13641 由 Adrin Jalali 提交。
sklearn.impute#
Major Feature 添加了
impute.IterativeImputer,这是一种通过循环方式将每个具有缺失值的特征建模为其他特征的函数来填补缺失值的策略。 #8478 和 #12177 由 Sergey Feldman 和 Ben Lawson 提交。IterativeImputer 的 API 是实验性的,可能会在没有任何弃用周期的情况下发生变化。要使用它们,您需要显式导入
enable_iterative_imputer>>> from sklearn.experimental import enable_iterative_imputer # noqa >>> # 现在您可以正常从 sklearn.impute 导入 >>> from sklearn.impute import IterativeImputer
Feature
impute.SimpleImputer和impute.IterativeImputer新增了一个参数'add_indicator', 该参数简单地将一个impute.MissingIndicator转换堆叠到 填补器的转换输出中。这允许预测估计器考虑缺失性。#12583 , #13601 由 Danylo Baibak 贡献。Fix 在
impute.MissingIndicator中,通过在输入为稀疏且missing_values属性 设置为 0 时抛出异常,避免隐式稠密化。#13240 由 Bartosz Telenczuk 贡献。Fix 修复了
impute.MissingIndicator中的两个错误。首先,当X是稀疏的,所有非零非缺失值在转换后的数据中变成了显式的 False。其次,当features='missing-only'时,如果完全没有缺失值,所有特征都会被保留。#13562 由 Jérémie du Boisberranger 贡献。
sklearn.inspection#
(新子包)
Feature 部分依赖图 (
inspection.plot_partial_dependence) 现在支持任何回归器或分类器(前提是它们有predict_proba方法)。#12599 由 Trevor Stephens 和 Nicolas Hug 贡献。
sklearn.isotonic#
Feature 允许在
isotonic.IsotonicRegression中使用不同的数据类型(如 float32)。 #8769 由 Vlad Niculae 贡献。
sklearn.linear_model#
Enhancement
linear_model.Ridge现在保留float32和float64数据类型。#8769 和 #11000 由 Guillaume Lemaitre 和 Joan Massich 贡献。Feature
linear_model.LogisticRegression和linear_model.LogisticRegressionCV现在支持弹性网络惩罚,
使用 ‘saga’ 求解器。#11646 由 Nicolas Hug 贡献。
Feature 添加了
linear_model.lars_path_gram,这是在充分统计模式下的linear_model.lars_path,允许用户在不提供X和y的情况下计算linear_model.lars_path。#11699 由 Kuai Yu 贡献。Efficiency
linear_model.make_dataset现在保留float32和float64数据类型,减少了随机梯度、SAG 和 SAGA 求解器中的内存消耗。#8769 和 #11000 由 Nelle Varoquaux 、Arthur Imbert 、Guillaume Lemaitre 和 Joan Massich 贡献。Enhancement
linear_model.LogisticRegression现在支持当传递penalty='none'时使用无正则化目标。这等效于使用 l2 正则化设置C=np.inf。liblinear 求解器不支持此功能。#12860 由 Nicolas Hug 贡献。Enhancement
linear_model.Ridge中的sparse_cg求解器现在支持在输入为稀疏时拟合截距(即fit_intercept=True)。#13336 由 Bartosz Telenczuk 贡献。Enhancement
Lasso、ElasticNet等中使用的坐标下降求解器现在在未达到所需容差的情况下完成时会发出ConvergenceWarning。#11754 和 #13397 由 Brent Fagan 和 Adrin Jalali 贡献。Fix 修复了
linear_model.LogisticRegression和linear_model.LogisticRegressionCV中使用 ‘saga’ 求解器时权重在某些情况下不会正确更新的错误。#11646 由 Tom Dupre la Tour 贡献。Fix 修复了
linear_model.BayesianRidge中的后验均值、后验协方差和返回的正则化参数。后验均值和后验协方差不是计算得到的值。 在最后一次更新正则化参数时,返回的正则化参数并非最终值。同时修复了在compute_score=True时用于计算分数的对数边际似然公式。#12174 由 Albert Thomas 贡献。Fix 修复了
linear_model.LassoLarsIC中的一个错误,其中用户在实例创建时输入的copy_X=False会被fit中的默认参数值copy_X=True覆盖。#12972 由 Lucio Fernandez-Arjona 贡献。Fix 修复了
linear_model.LinearRegression中的一个错误,该错误在fit_intercept=True时,稀疏和密集情况下返回的系数和截距不一致。#13279 由 Alexandre Gramfort 贡献。Fix 修复了
linear_model.HuberRegressor中的一个错误,当X为布尔类型时会失效。#13328 由 Alexandre Gramfort 贡献。Fix 修复了在
n_jobs > 1且backend="threading"的joblib.Parallel设置下调用saga和sag求解器时的性能问题,导致它们的表现比顺序情况下更差。#13389 由 Pierre Glaser 贡献。Fix 修复了
linear_model.stochastic_gradient.BaseSGDClassifier中的一个错误,该错误在多类设置下使用多个线程进行训练时不是确定性的。#13422 由 Clément Doumouro 贡献。Fix 修复了
linear_model.ridge_regression、linear_model.Ridge和linear_model.RidgeClassifier中的错误,这些错误在return_intercept=True和solver=auto(默认)或其他不同于sag的求解器时导致未处理的异常。#13363 由 Bartosz Telenczuk 贡献。Fix
linear_model.ridge_regression现在会在return_intercept=True且求解器不同于sag时抛出异常。之前仅发出警告。#13363 由 Bartosz Telenczuk 贡献。Fix
linear_model.ridge_regression在solver=auto且提供了sample_weight时,对于稀疏输入将选择sparse_cg求解器(之前选择了cholesky求解器)。#13363 由 Bartosz Telenczuk 贡献。API Change 在版本 0.21 中,使用
linear_model.lars_path时传入X=None并传递Gram已被弃用,并将在版本 0.23 中移除。请改用linear_model.lars_path_gram。#11699 由 Kuai Yu 贡献。API Change
linear_model.logistic_regression_path在版本 0.21 中已被弃用,并将在版本 0.23 中移除。#12821 由 Nicolas Hug 贡献。Fix
linear_model.RidgeCV在使用留一交叉验证时,当fit_intercept=True且设计矩阵为稀疏矩阵时,现在能正确拟合截距。#13350 由 Jérôme Dockès 贡献。
sklearn.manifold#
Efficiency 使
manifold.trustworthiness使用倒排索引而不是np.where查找来找到输入空间中邻居的排名。这在计算大量邻居和小数据集时提高了效率。#9907 由 William de Vazelhes 贡献。
sklearn.metrics#
Feature 添加了
metrics.max_error指标和相应的'max_error'回归单输出的评分器。#12232 由 Krishna Sangeeth 贡献。Feature 添加了
metrics.multilabel_confusion_matrix,它为每个类别计算一个包含真正例、假正例、假反例和真反例计数的混淆矩阵。这有助于计算集合级别的指标,如召回率、特异性、假阳性率和漏报率。#11179 由 Shangwu Yao 和 Joel Nothman 贡献。Feature 添加了
metrics.jaccard_score用于计算 Jaccard 相似系数。
Jaccard系数作为二元、多标签和多类任务的评估指标,具有类似于:func:metrics.f1_score 的接口。#13151 由 Gaurav Dhingra 和 Joel Nothman 贡献。
Feature 添加了
metrics.pairwise.haversine_distances,可以通过metric='pairwise'在metrics.pairwise_distances和估计器中访问。(Haversine距离之前可用于最近邻计算。):pr:12568由 Wei Xue 、Emmanuel Arias 和 Joel Nothman 贡献。Efficiency 通过使用基于线程的后端而不是基于进程的后端,当
n_jobs> 1 时,metrics.pairwise_distances更快。#8216 由 Pierre Glaser 和 Romuald Menuet 贡献。Efficiency 带有稀疏输入的成对曼哈顿距离现在使用随scipy提供的BLAS,而不是捆绑的BLAS。#12732 由 Jérémie du Boisberranger 贡献。
Enhancement 在
metrics.classification_report中使用标签accuracy而不是micro-average以避免混淆。micro-average仅在多标签或多类且子集类的情况下显示,因为它在其他情况下与准确度相同。#12334 由 Emmanuel Arias 、 Joel Nothman 和 Andreas Müller 贡献。Enhancement 在
metrics.homogeneity_completeness_v_measure和metrics.v_measure_score中添加了beta参数,以配置同质性和完整性之间的权衡。#13607 由 Stephane Couvreur 和 Ivan Sanchez 贡献。Fix 指标
metrics.r2_score在单个样本时退化,现在返回NaN并引发exceptions.UndefinedMetricWarning。#12855 由 Pawel Sendyk 贡献。Fix 修复了一个错误,即
metrics.brier_score_loss有时会 当y_true中只有一个类别时,返回错误的结果。 #13628 由 Hanmin Qin 提交。Fix 修复了
metrics.label_ranking_average_precision_score中的一个错误, 该错误在标签退化的情况下没有考虑 sample_weight。 #13447 由 Dan Ellis 提交。API Change
metrics.hamming_loss中的参数labels在版本 0.21 中已弃用, 并将在版本 0.23 中移除。#10580 由 Reshama Shaikh 和 Sandra Mitrovic 提交。Fix 函数
metrics.pairwise.euclidean_distances以及 因此使用metric='euclidean'的几个估计器,在float32特征上存在数值精度问题。 精度已提高,但性能略有下降。#13554 由 @Celelibi 和 Jérémie du Boisberranger 提交。API Change
metrics.jaccard_similarity_score已弃用,取而代之的是 更一致的metrics.jaccard_score。前者的二进制和多类目标行为已损坏。 #13151 由 Joel Nothman 提交。
sklearn.mixture#
Fix 修复了
mixture.BaseMixture中的一个错误,因此基于它的估计器, 即mixture.GaussianMixture和mixture.BayesianGaussianMixture,其中fit_predict和fit.predict不一致。#13142 由 Jérémie du Boisberranger 提交。
sklearn.model_selection#
Feature 类
GridSearchCV和RandomizedSearchCV现在允许 refit=callable, 以增加识别最佳估计器的灵活性。 参见 平衡模型复杂性和交叉验证得分 。 #11354 由 Wenhao Zhang 、 Joel Nothman 和 Adrin Jalali 提交。Enhancement 类
GridSearchCV,RandomizedSearchCV以及方法cross_val_score,cross_val_predict,cross_validate现在在return_train_scores为 True 且verbose> 2 时打印训练分数。对于learning_curve和validation_curve仅后者需要。 #12613 和 #12669 由 Marc Torrellas 贡献。Enhancement 一些 CV splitter 类和
model_selection.train_test_split现在在生成的训练集为空时抛出ValueError。 #12861 由 Nicolas Hug 贡献。Fix 修复了一个
model_selection.StratifiedKFold的 bug,该 bug 使得每个类的样本在相同的random_state下被打乱,导致shuffle=True无效。 #13124 由 Hanmin Qin 贡献。Fix 增加了
model_selection.cross_val_predict处理多标签(以及多输出-多类)目标与predict_proba类型方法的能力。 #8773 由 Stephen Hoover 贡献。Fix 修复了
cross_val_predict中的一个问题,其中method="predict_proba"在交叉验证折叠中排除某个类别时总是返回0.0。 #13366 由 Guillaume Fournier 贡献。
sklearn.multiclass#
Fix 修复了
multiclass.OneVsOneClassifier.decision_function中的一个问题,其中给定样本的 decision_function 值会因 decision_function 是在单个样本上评估还是在包含相同样本的批次上评估而不同,这是由于 decision_function 中使用的缩放导致的。 #10440 由 Jonathan Ohayon 贡献。
sklearn.multioutput#
Fix 修复了
multioutput.MultiOutputClassifier中的一个 bug,该 bug
predict_proba方法错误地检查了估计器对象中的predict_proba属性。
#12222 由 Rebekah Kim 提交。
sklearn.neighbors#
Major Feature 添加了
neighbors.NeighborhoodComponentsAnalysis用于度量学习,实现了邻域成分分析算法。#10058 由 William de Vazelhes 和 John Chiotellis 提交。API Change
neighbors.NearestNeighbors中的方法:kneighbors、radius_neighbors、kneighbors_graph、radius_neighbors_graph现在会在调用前未进行fit时引发NotFittedError,而不是AttributeError。#12279 由 Krishna Sangeeth 提交。
sklearn.neural_network#
Fix 修复了
neural_network.MLPClassifier和neural_network.MLPRegressor中的一个错误,其中选项shuffle=False被忽略。#12582 由 Sam Waterbury 提交。Fix 修复了
neural_network.MLPClassifier中的一个错误,其中早期停止的验证集未进行分层采样。然而,在多标签情况下,分割仍然不是分层的。#13164 由 Nicolas Hug 提交。
sklearn.pipeline#
Feature
pipeline.Pipeline现在可以使用索引表示法(例如my_pipeline[0:-1])提取步骤的子序列作为另一个 Pipeline 实例。Pipeline 也可以直接索引以提取特定步骤(例如my_pipeline['svc']),而不是访问named_steps。#2568 由 Joel Nothman 提交。Feature 在
pipeline.Pipeline、compose.ColumnTransformer和pipeline.FeatureUnion中添加了可选参数verbose。 以及相应的make_辅助函数,用于显示每个步骤的进度和时间。#11364 由 Baze Petrushev 、 Karan Desai 、 Joel Nothman 和 Thomas Fan 贡献。Enhancement
pipeline.Pipeline现在支持使用'passthrough'作为转换器,效果与None相同。 #11144 由 Thomas Fan 贡献。Enhancement
pipeline.Pipeline实现了__len__,因此len(pipeline)返回管道中的步骤数。 #13439 由 Lakshya KD 贡献。
sklearn.preprocessing#
Feature
preprocessing.OneHotEncoder现在支持通过新的 drop 参数每类别丢弃一个特征。#12908 由 Drew Johnston 贡献。Efficiency
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder现在更高效地处理 pandas DataFrame。 #13253 由 @maikia 贡献。Efficiency 使
preprocessing.MultiLabelBinarizer缓存类映射,而不是每次实时计算。 #12116 由 Ekaterina Krivich 和 Joel Nothman 贡献。Efficiency
preprocessing.PolynomialFeatures现在支持作为输入的压缩稀疏行(CSR)矩阵,适用于 2 和 3 次幂。这通常比密集情况快得多,因为它随矩阵密度和扩展度(密度^度)缩放,并且比压缩稀疏列(CSC)情况快得多。 #12197 由 Andrew Nystrom 贡献。Efficiency 在密集情况下,
preprocessing.PolynomialFeatures的速度提升。还添加了一个新的参数order,用于进一步控制输出顺序以提高性能。#12251 由 Tom Dupre la Tour 贡献。Fix 修复了使用 float16 dtype 时
preprocessing.StandardScaler的计算溢出问题。 #13007 由 Raffaello Baluyot 提交Fix 修复了
preprocessing.QuantileTransformer和preprocessing.quantile_transform中的一个错误,强制n_quantiles最多等于n_samples。n_quantiles大于n_samples的值要么是无用的,要么会导致累积分布函数估计器的错误近似。 #13333 由 Albert Thomas 提交。API Change
preprocessing.quantile_transform中copy的默认值将从 False 变为 True, 以使其与其他sklearn.preprocessing中的函数默认copy值更加一致,并防止通过原地修改X值而产生意外的副作用。 #13459 由 Hunter McGushion 提交。
sklearn.svm#
Fix 修复了
svm.SVC.decision_function在decision_function_shape='ovr'时的问题。 由于在 decision_function 中使用的缩放,给定样本的 decision_function 值会因评估是在单个样本上还是在包含相同样本的批次上而有所不同。 #10440 由 Jonathan Ohayon 提交。
sklearn.tree#
Feature 现在可以使用
tree.plot_tree通过 matplotlib 绘制决策树,而不依赖于dot库, 从而移除了一个难以安装的依赖项。#8508 由 Andreas Müller 提交。Feature 现在可以使用
tree.export_text以人类可读的文本格式导出决策树。 #6261 由Giuseppe Vettigli <JustGlowing>提交。Feature 已向
tree.BaseDecisionTree添加了get_n_leaves()和get_depth()方法, 因此所有基于它的估计器,包括tree.DecisionTreeClassifier、tree.DecisionTreeRegressor、tree.ExtraTreeClassifier和tree.ExtraTreeRegressor, 都可以使用这些方法。
#12300 由 Adrin Jalali 提交。
Fix 树和森林之前无法在
predict中预测带有字符串标签的多输出分类目标,尽管在fit中接受它们。#11458 由 Mitar Milutinovic 提交。Fix 修复了
tree.BaseDecisionTree及其所有基于它的估计器(包括tree.DecisionTreeClassifier、tree.DecisionTreeRegressor、tree.ExtraTreeClassifier和tree.ExtraTreeRegressor)的一个问题,即当用户同时指定max_leaf_nodes和max_depth时,它们在扩展树时会超出给定的max_depth1 层。请注意,这也影响所有使用决策树的集成方法。#12344 由 Adrin Jalali 提交。
sklearn.utils#
Feature
utils.resample现在接受一个stratify参数,用于根据类别分布进行采样。#13549 由 Nicolas Hug 提交。API Change 从
utils.check_array和utils.check_X_y中弃用了warn_on_dtype参数。在check_pairwise_arrays中添加了显式的数据类型转换警告,如果传递的metric是成对布尔度量。#13382 由 Prathmesh Savale 提交。
多个模块#
Major Feature 所有估计器的
__repr__()方法(在调用print(estimator)时使用)已完全重写,基于 Python 的漂亮打印标准库。默认情况下打印所有参数,但可以通过sklearn.set_config中的print_changed_only选项进行更改。#11705 由 Nicolas Hug 提交。Major Feature 添加估计器标签:这些是估计器的注解,允许程序化检查它们的功能,如稀疏矩阵支持、支持的输出类型和支持的方法。估计器
标签还决定了在调用 check_estimator 时对估计器运行的测试。更多信息请参阅 用户指南 。#8022 由 Andreas Müller 贡献。
Efficiency 在多个估计器中将数组转换为不同数据类型时,避免了内存复制。#11973 由 Roman Yurchak 贡献。
Fix 修复了
our_rand_r辅助函数实现中的一个错误,该错误在不同平台上行为不一致。#13422 由 Madhura Parikh 和 Clément Doumouro 贡献。
杂项#
Enhancement Joblib 不再嵌入在 scikit-learn 中,而是成为了一个依赖项。最低支持版本是 joblib 0.11,但强烈建议使用版本 >= 0.13。#13531 由 Roman Yurchak 贡献。
估计器检查的变更#
这些变更主要影响库的开发者。
向
check_estimator添加了check_fit_idempotent,该检查确保当fit使用相同数据调用两次时,predict、predict_proba、transform和decision_function的输出不会改变。#12328 由 Nicolas Hug 贡献。许多检查现在可以通过 估计器标签 禁用或配置。#8022 由 Andreas Müller 贡献。
代码和文档贡献者
感谢自版本 0.20 以来为项目的维护和改进做出贡献的所有人,包括:
adanhawth, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Albert Thomas, Alberto Torres, Alexandre Gramfort, amourav, Andrea Navarrete, Andreas Mueller, Andrew Nystrom, assiaben, Aurélien Bellet, Bartosz Michałowski, Bartosz Telenczuk, bauks, BenjaStudio, bertrandhaut, Bharat Raghunathan, brentfagan, Bryan Woods, Cat Chenal, Cheuk Ting Ho, Chris Choe, Christos Aridas, Clément Doumouro, Cole Smith, Connossor, Corey Levinson, Dan Ellis, Dan Stine, Danylo Baibak, daten-kieker, Denis Kataev, Didi Bar-Zev, Dillon Gardner, Dmitry Mottl, Dmitry Vukolov, Dougal J. Sutherland, Dowon, drewmjohnston, Dror Atariah, Edward J Brown, Ekaterina Krivich, Elizabeth Sander, Emmanuel Arias, Eric Chang, Eric Larson, Erich Schubert, esvhd, Falak, Feda Curic, Federico Caselli, Frank Hoang, Fibinse Xavier`, Finn O’Shea, Gabriel Marzinotto, Gabriel Vacaliuc, Gabriele Calvo, Gael Varoquaux, GauravAhlawat, Giuseppe Vettigli, Greg Gandenberger, Guillaume Fournier, Guillaume Lemaitre, Gustavo De Mari Pereira, Hanmin Qin, haroldfox, hhu-luqi, Hunter McGushion, Ian Sanders, JackLangerman, Jacopo Notarstefano, jakirkham, James Bourbeau, Jan Koch, Jan S, janvanrijn, Jarrod Millman, jdethurens, jeremiedbb, JF, joaak, Joan Massich, Joel Nothman, Jonathan Ohayon, Joris Van den Bossche, josephsalmon, Jérémie Méhault, Katrin Leinweber, ken, kms15, Koen, Kossori Aruku, Krishna Sangeeth, Kuai Yu, Kulbear, Kushal Chauhan, Kyle Jackson, Lakshya KD, Leandro Hermida, Lee Yi Jie Joel, Lily Xiong, Lisa Sarah Thomas, Loic Esteve, louib, luk-f-a, maikia, mail-liam, Manimaran, Manuel López-Ibáñez, Marc Torrellas, Marco Gaido, Marco Gorelli, MarcoGorelli, marineLM, Mark Hannel, Martin Gubri, Masstran, mathurinm, Matthew Roeschke, Max Copeland, melsyt, mferrari3, Mickaël Schoentgen, Ming Li, Mitar, Mohammad Aftab, Mohammed AbdelAal, Mohammed Ibraheem, Muhammad Hassaan Rafique, mwestt, Naoya Iijima, Nicholas Smith, Nicolas Goix, Nicolas Hug, Nikolay Shebanov, Oleksandr Pavlyk, Oliver Rausch, Olivier Grisel, Orestis, Osman, Owen Flanagan, Paul Paczuski, Pavel Soriano, pavlos kallis, Pawel Sendyk, peay, Peter, Peter Cock, Peter Hausamann, Peter Marko, Pierre Glaser, pierretallotte, Pim de Haan, Piotr Szymański, Prabakaran Kumaresshan, Pradeep Reddy Raamana, Prathmesh Savale, Pulkit Maloo, Quentin Batista, Radostin Stoyanov, Raf Baluyot, Rajdeep Dua, Ramil Nugmanov, Raúl García Calvo, Rebekah Kim, Reshama Shaikh, Rohan Lekhwani, Rohan Singh, Rohan Varma, Rohit Kapoor, Roman Feldbauer, Roman Yurchak, Romuald M, Roopam Sharma, Ryan, Rüdiger Busche, Sam Waterbury, Samuel O. Ronsin, SandroCasagrande, Scott Cole, Scott Lowe, Sebastian Raschka, Shangwu Yao, Shivam Kotwalia, Shiyu Duan, smarie, Sriharsha Hatwar, Stephen Hoover, Stephen Tierney, Stéphane Couvreur, surgan12, SylvainLan, TakingItCasual, Tashay Green, thibsej, Thomas Fan, Thomas J Fan, Thomas Moreau, Tom Dupré la Tour, Tommy, Tulio Casagrande, Umar Farouk Umar, Utkarsh Upadhyay, Vinayak Mehta, Vishaal Kapoor, Vivek Kumar, Vlad Niculae, vqean3, Wenhao Zhang, William de Vazelhes, xhan, Xing Han Lu, xinyuliu12, Yaroslav Halchenko, Zach Griffith, Zach Miller, Zayd Hammoudeh, Zhuyi Xue, Zijie (ZJ) Poh, ^__^