版本 0.21#
更新日志图例
重大功能 以前无法实现的大功能。
功能 以前无法实现的功能。
效率提升 现有功能现在可能不需要那么多计算或内存。
增强 一般性的小改进。
修复 以前无法按文档或合理预期工作的问题现在应该可以了。
API 变更 未来你需要更改代码才能达到相同的效果;或者未来某个功能将被移除。
版本 0.21.3#
2019年7月30日
变更模型#
以下估计器和函数在用相同数据和参数拟合时,可能会产生与上一个版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机采样过程的更改所致。
v0.20.0 发行说明未能提及
metrics.make_scorer在needs_proba=True且y_true是二元时存在的向后不兼容性。现在,评分器函数应该接受一维y_pred(即正类的概率,形状为(n_samples,)),而不是二维y_pred(即形状为(n_samples, 2))。
更新日志#
sklearn.cluster#
修复 修复了
cluster.KMeans中的一个错误,当n_jobs > 1或n_jobs = -1时,使用init='random'进行计算是单线程的。#12955 由 Prabakaran Kumaresshan 提交。修复 修复了
cluster.OPTICS中的一个错误,用户无法传递浮点数min_samples和min_cluster_size。#14496 由 Fabian Klopfer 和 Hanmin Qin 提交。修复 修复了
cluster.KMeans中的一个错误,KMeans++ 初始化偶尔会导致 IndexError。#11756 由 Joel Nothman 提交。
sklearn.compose#
修复 修复了
compose.ColumnTransformer中的一个问题,即在fit和transform之间列顺序不同的 DataFrames 可能导致将不正确的列静默传递给remainder转换器。#14237 由Andreas Schuderer <schuderer>提交。
sklearn.datasets#
修复
datasets.fetch_california_housing、datasets.fetch_covtype、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#
修复 修复了
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor中的零除错误。#14024 由Nicolas Hug <NicolasHug>提交。
sklearn.impute#
修复 修复了
impute.SimpleImputer和impute.IterativeImputer中的一个错误,以便在训练数据中存在缺失值时不会抛出错误。#13974 由Frank Hoang <fhoang7>提交。
sklearn.inspection#
修复 修复了
inspection.plot_partial_dependence中的一个错误,其中target参数未被多分类问题考虑在内。#14393 由 Guillem G. Subies 提交。
sklearn.linear_model#
修复 修复了
linear_model.LogisticRegressionCV中的一个错误,其中refit=False会根据'multiclass'和'penalty'参数而失败(0.21 中引入的回归)。#14087 由 Nicolas Hug 提交。修复
linear_model.ARDRegression和 Scipy>=1.3.0 的兼容性修复。适应了上游对默认pinvh截止阈值的更改,否则在某些情况下会导致精度不佳。#14067 由 Tim Staley 提交。
sklearn.neighbors#
修复 修复了
neighbors.NeighborhoodComponentsAnalysis中的一个错误,其中初始参数n_components、max_iter和tol的验证要求过于严格的类型。#14092 由 Jérémie du Boisberranger 提交。
sklearn.tree#
修复 修复了
tree.export_text中的一个错误,当树有一个特征并传入单个特征名时。#14053 由Thomas Fan提交。修复 修复了
tree.plot_tree中的一个问题,即使对于 DecisionTreeClassifiers 中的gini准则,它也显示熵计算。#13947 由 Frank Hoang 提交。
版本 0.21.2#
2019年5月24日
更新日志#
sklearn.decomposition#
修复 修复了
cross_decomposition.CCA中的一个错误,当Y接近零时提高了数值稳定性。#13903 由 Thomas Fan 提交。
sklearn.metrics#
修复 修复了
metrics.pairwise.euclidean_distances中的一个错误,对于足够大的 float32 数据集,距离矩阵的一部分未被实例化(0.21 中引入的回归)。#13910 由 Jérémie du Boisberranger 提交。
sklearn.preprocessing#
修复 修复了
preprocessing.OneHotEncoder中的一个错误,其中新的drop参数未在get_feature_names中体现。#13894 由 James Myatt 提交。
sklearn.utils.sparsefuncs#
修复 修复了
min_max_axis在 32 位系统上对某些大型输入失败的错误。这影响了preprocessing.MaxAbsScaler、preprocessing.normalize和preprocessing.LabelBinarizer。#13741 由 Roddy MacSween 提交。
版本 0.21.1#
2019年5月17日
这是一个错误修复版本,主要解决了 0.21.0 版本中的一些打包问题。它还包括次要的文档改进和一些错误修复。
更新日志#
sklearn.inspection#
修复 修复了
inspection.partial_dependence中的一个错误,仅在多分类多输出情况下检查分类器而非回归器。#14309 由 Guillaume Lemaitre 提交。
sklearn.metrics#
修复 修复了
metrics.pairwise_distances中的一个错误,当X具有布尔 dtype 且Y == None时,布尔度量会引发AttributeError。#13864 由 Paresh Mathur 提交。修复 修复了
metrics.pairwise_distances中当n_jobs > 1时的两个错误。首先,它曾经返回与输入相同 dtype 的距离矩阵,即使是整数 dtype。其次,当Y是X时,欧几里得度量的对角线不是零。#13877 由 Jérémie du Boisberranger 提交。
sklearn.neighbors#
修复 修复了
neighbors.KernelDensity中的一个错误,如果在sample_weight已使用的情况下,无法从 pickle 恢复。#13772 由 Aditya Vyas 提交。
版本 0.21.0#
2019年5月
更改的模型#
以下估计器和函数在用相同数据和参数拟合时,可能会产生与上一个版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机采样过程的更改所致。
使用“eigen”求解器的
discriminant_analysis.LinearDiscriminantAnalysis。修复当同时设置了
max_depth和max_leaf_nodes时的决策树和派生集成。修复使用“saga”求解器的
linear_model.LogisticRegression和linear_model.LogisticRegressionCV。修复sklearn.feature_extraction.text.HashingVectorizer、sklearn.feature_extraction.text.TfidfVectorizer和sklearn.feature_extraction.text.CountVectorizer。修复svm.SVC.decision_function和multiclass.OneVsOneClassifier.decision_function。修复linear_model.SGDClassifier和任何派生分类器。修复任何使用
linear_model._sag.sag_solver函数且0种子的模型,包括linear_model.LogisticRegression、linear_model.LogisticRegressionCV、linear_model.Ridge和使用“sag”求解器的linear_model.RidgeCV。修复当使用留一交叉验证和稀疏输入时的
linear_model.RidgeCV。修复
详细信息列在下面的更改日志中。
(虽然我们正试图通过提供此信息来更好地告知用户,但我们不能保证此列表完整。)
已知的主要错误#
对于许多求解器来说,
linear_model.LogisticRegression的默认max_iter太小,考虑到默认的tol。特别是,我们在 0.16 版本中发布到 #3591 的 liblinear 求解器的默认max_iter从 1000 次迭代意外更改为 100 次迭代。在未来的版本中,我们希望根据求解器启发式地选择更好的默认max_iter和tol(参见 #13317)。
更新日志#
对 Python 3.4 及以下版本的支持已正式终止。
sklearn.base#
API 更改 从 0.23 版本开始,在回归器上调用
score时使用的 R2 分数将使用multioutput='uniform_average',以与metrics.r2_score保持一致。这将影响所有多输出回归器(除了multioutput.MultiOutputRegressor)的score方法。#13157 由 Hanmin Qin 提交。
sklearn.calibration#
增强 添加了对通过分位数而非在 0 和 1 之间均匀分箱传递到
calibration.calibration_curve的数据的支持。#13086 由 Scott Cole 提交。增强 允许 n 维数组作为
calibration.CalibratedClassifierCV的输入。#13485 由 William de Vazelhes 提交。
sklearn.cluster#
主要功能 新的聚类算法:
cluster.OPTICS:一种与cluster.DBSCAN相关的算法,具有更容易设置的超参数,并且更好地扩展,由 Shane、Adrin Jalali、Erich Schubert、Hanmin Qin 和 Assia Benbihi 提交。修复 修复了
cluster.Birch偶尔会引发 AttributeError 的错误。#13651 由 Joel Nothman 提交。修复 修复了
cluster.KMeans中的一个错误,当使用样本权重时,空簇未能正确重新定位。#13486 由 Jérémie du Boisberranger 提交。API 更改
cluster.AgglomerativeClustering和cluster.FeatureAgglomeration中的n_components_属性已更名为n_connected_components_。#13427 由 Stephane Couvreur 提交。增强
cluster.AgglomerativeClustering和cluster.FeatureAgglomeration现在接受一个distance_threshold参数,可用于查找簇而不是n_clusters。#9069 由 Vathsala Achar 和 Adrin Jalali 提交。
sklearn.compose#
API 更改
compose.ColumnTransformer不再是实验性功能。#13835 由 Hanmin Qin 提交。
sklearn.datasets#
修复 添加了对 SVMLight 文件中 64 位组 ID 和指针的支持。#10727 由 Bryan K Woods 提交。
修复
datasets.load_sample_images返回具有确定性顺序的图像。#13250 由 Thomas Fan 提交。
sklearn.decomposition#
增强
decomposition.KernelPCA现在具有确定性输出(解决了核矩阵特征值分解中的符号模糊性)。#13241 由 Aurélien Bellet 提交。修复 修复了
decomposition.KernelPCA中的一个错误,fit().transform()现在在未移除零特征值(remove_zero_eig=False)的情况下产生正确的输出(与fit_transform()相同)。fit_inverse_transform也通过使用与fit_transform相同的技巧计算X的变换而加速。#12143 由 Sylvain Marié 提交。修复 修复了
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 更改
decomposition.non_negative_factorization中init参数的默认值将在 0.23 版本中从random更改为None,以使其与decomposition.NMF保持一致。当使用默认值时,会引发 FutureWarning。#12988 由 Zijie (ZJ) Poh 提交。
sklearn.discriminant_analysis#
增强
discriminant_analysis.LinearDiscriminantAnalysis现在保留float32和float64dtypes。#8769 和 #11000 由 Thibault Sejourne 提交。修复 当
discriminant_analysis.LinearDiscriminantAnalysis给出参数n_components > min(n_features, n_classes - 1)时,现在会引发ChangedBehaviourWarning,并且n_components会更改为min(n_features, n_classes - 1)。以前的更改是静默进行的。#11526 由 William de Vazelhes 提交。修复 修复了
discriminant_analysis.LinearDiscriminantAnalysis中的一个错误,其中在多分类情况下预测概率的计算不正确。#6848,由 Agamemnon Krasoulis 和Guillaume Lemaitre <glemaitre>提交。修复 修复了
discriminant_analysis.LinearDiscriminantAnalysis中的一个错误,其中使用eigen求解器时预测概率的计算不正确。#11727,由 Agamemnon Krasoulis 提交。
sklearn.dummy#
修复 修复了
dummy.DummyClassifier中的一个错误,其中predict_proba方法为stratified策略返回 int32 数组而不是 float64。#13266 由 Christos Aridas 提交。修复 修复了
dummy.DummyClassifier中的一个错误,如果在fit时给出了形状为(n, 1)的列向量y,则在预测时会抛出维度不匹配错误。#13545 由 Nick Sorros 和 Adrin Jalali 提交。
sklearn.ensemble#
主要功能 添加了两种新的梯度提升树实现:
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor。这些估计器的实现灵感来自 LightGBM,当样本数量达到数万时,可以比ensemble.GradientBoostingRegressor和ensemble.GradientBoostingClassifier快几个数量级。这些新估计器的 API 略有不同,并且ensemble.GradientBoostingClassifier和ensemble.GradientBoostingRegressor的某些功能尚未支持。这些新估计器是实验性的,这意味着它们的结果或 API 可能会在没有任何弃用周期的情况下发生变化。要使用它们,您需要显式导入
enable_hist_gradient_boosting>>> # explicitly require this experimental feature >>> from sklearn.experimental import enable_hist_gradient_boosting # noqa >>> # now you can import normally from sklearn.ensemble >>> from sklearn.ensemble import HistGradientBoostingClassifier
注意
更新:从 1.0 版本开始,这些估计器不再是实验性的,您不需要使用
from sklearn.experimental import enable_hist_gradient_boosting。#12807 由 Nicolas Hug 提交。
功能 添加了
ensemble.VotingRegressor,它为回归问题提供了与ensemble.VotingClassifier等价的功能。#12513 由 Ramil Nugmanov 和 Mohamed Ali Jamaoui 提交。效率 在
n_jobs > 1时,使ensemble.IsolationForest倾向于使用线程而不是进程,因为底层决策树拟合调用会释放 GIL。此更改减少了内存使用和通信开销。#12543 由 Isaac Storch 和 Olivier Grisel 提交。效率 使
ensemble.IsolationForest更节省内存,避免在内存中保留每个树的预测。#13260 由 Nicolas Goix 提交。效率
ensemble.IsolationForest现在在预测步骤使用数据块,从而限制了内存使用。#13283 由 Nicolas Goix 提交。效率
sklearn.ensemble.GradientBoostingClassifier和sklearn.ensemble.GradientBoostingRegressor现在将输入y保留为float64,以避免其在树内部被复制。#13524 由 Adrin Jalali 提交。增强 最小化了
ensemble.AdaBoostClassifier和ensemble.AdaBoostRegressor中 X 的验证。#13174 由 Christos Aridas 提交。增强
ensemble.IsolationForest现在公开了warm_start参数,允许迭代地向隔离森林添加树。#13496 由 Peter Marko 提交。修复 所有基于随机森林的模型(即
ensemble.RandomForestClassifier、ensemble.RandomForestRegressor、ensemble.ExtraTreesClassifier、ensemble.ExtraTreesRegressor、ensemble.RandomTreesEmbedding、ensemble.GradientBoostingClassifier和ensemble.GradientBoostingRegressor)中的feature_importances_值现在总和为
1特征重要性计算中忽略所有单节点树
如果所有树都只有一个单节点(即根节点),则特征重要性将是一个全为零的数组。
#13636 和 #13620 由 Adrin Jalali 提交。
修复 修复了
ensemble.GradientBoostingClassifier和ensemble.GradientBoostingRegressor中的一个错误,它们不支持将 scikit-learn 估计器作为初始估计器。还添加了对不支持样本权重的初始估计器的支持。#12436 由 Jérémie du Boisberranger 和 #12983 由 Nicolas Hug 提交。修复 修复了当输入为 0、1 或 2 时,
ensemble.IsolationForest中计算的平均路径长度的输出。#13251 由 Albert Thomas 和 joshuakennethjones 提交。修复 修复了
ensemble.GradientBoostingClassifier中的一个错误,其中在多分类问题中梯度计算不正确。#12715 由 Nicolas Hug 提交。修复 修复了
ensemble.GradientBoostingClassifier中的一个错误,其中用于早期停止的验证集未进行分层抽样。#13164 由 Nicolas Hug 提交。修复 修复了
ensemble.GradientBoostingClassifier中的一个错误,其中多分类分类器的默认初始预测将预测类别先验而不是先验的对数。#12983 由 Nicolas Hug 提交。修复 修复了
ensemble.RandomForestClassifier中的一个错误,其中如果任何目标是字符串,则predict方法会为多分类多输出森林模型报错。#12834 由 Elizabeth Sander 提交。修复 修复了
ensemble.gradient_boosting.LossFunction和ensemble.gradient_boosting.LeastSquaresError中的一个错误,其中update_terminal_regions中learning_rate的默认值与文档和调用函数不一致。但请注意,直接使用这些损失函数已被弃用。#6463 由 movelikeriver 提交。修复
ensemble.partial_dependence(以及随后的新版本sklearn.inspection.partial_dependence)现在在梯度提升模型使用样本权重训练时,会将样本权重考虑在内进行部分依赖计算。#13193 由 Samuel O. Ronsin 提交。API 更改
ensemble.partial_dependence和ensemble.plot_partial_dependence已弃用,取而代之的是inspection.partial_dependence和inspection.plot_partial_dependence<sklearn.inspection.plot_partial_dependence>。#12599 由 Trevor Stephens 和 Nicolas Hug 提交。修复
ensemble.VotingClassifier和ensemble.VotingRegressor在fit期间失败,如果其中一个估计器设置为None且sample_weight不是None。#13779 由 Guillaume Lemaitre 提交。API 更改
ensemble.VotingClassifier和ensemble.VotingRegressor接受'drop'以禁用估计器,除了None以与其他估计器(即pipeline.FeatureUnion和compose.ColumnTransformer)保持一致。#13780 由 Guillaume Lemaitre 提交。
sklearn.externals#
API 更改 弃用了
externals.six,因为我们已放弃对 Python 2.7 的支持。#12916 由 Hanmin Qin 提交。
sklearn.feature_extraction#
修复 如果
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#
主要功能 添加了
impute.IterativeImputer,这是一种通过将每个具有缺失值的特征建模为其他特征的函数,以循环方式插补缺失值的策略。#8478 和 #12177 由 Sergey Feldman 和 Ben Lawson 提交。IterativeImputer 的 API 是实验性的,可能会在没有任何弃用周期的情况下发生变化。要使用它们,您需要显式导入
enable_iterative_imputer>>> from sklearn.experimental import enable_iterative_imputer # noqa >>> # now you can import normally from sklearn.impute >>> from sklearn.impute import IterativeImputer
功能
impute.SimpleImputer和impute.IterativeImputer有一个新的参数'add_indicator',它只是将impute.MissingIndicator变换堆叠到插补器变换的输出中。这允许预测估计器考虑缺失。#12583、#13601 由 Danylo Baibak 提交。修复 在
impute.MissingIndicator中,通过在输入稀疏且missing_values属性设置为 0 时引发异常来避免隐式致密化。#13240 由 Bartosz Telenczuk 提交。修复 修复了
impute.MissingIndicator中的两个错误。首先,当X稀疏时,所有非零非缺失值在转换后的数据中都变为显式的 False。然后,当features='missing-only'时,如果完全没有缺失值,所有特征都会被保留。#13562 由 Jérémie du Boisberranger 提交。
sklearn.inspection#
(新子包)
功能 部分依赖图(
inspection.plot_partial_dependence)现在支持任何回归器或分类器(只要它们具有predict_proba方法)。#12599 由 Trevor Stephens 和 Nicolas Hug 提交。
sklearn.isotonic#
功能 允许在
isotonic.IsotonicRegression中使用不同的 dtypes(例如 float32)。#8769 由 Vlad Niculae 提交。
sklearn.linear_model#
增强
linear_model.Ridge现在保留float32和float64dtypes。#8769 和 #11000 由 Guillaume Lemaitre 和 Joan Massich 提交。功能
linear_model.LogisticRegression和linear_model.LogisticRegressionCV现在支持 Elastic-Net 惩罚,使用 'saga' 求解器。#11646 由 Nicolas Hug 提交。功能 添加了
linear_model.lars_path_gram,它是处于足够统计量模式的linear_model.lars_path,允许用户在不提供X和y的情况下计算linear_model.lars_path。#11699 由 Kuai Yu 提交。效率
linear_model.make_dataset现在保留float32和float64dtypes,从而减少了随机梯度、SAG 和 SAGA 求解器中的内存消耗。#8769 和 #11000 由 Nelle Varoquaux、Arthur Imbert、Guillaume Lemaitre 和 Joan Massich 提交。增强
linear_model.LogisticRegression现在在传入penalty='none'时支持无正则化目标。这等同于使用 l2 正则化设置C=np.inf。liblinear 求解器不支持此功能。#12860 由 Nicolas Hug 提交。增强
linear_model.Ridge中的sparse_cg求解器现在支持在输入稀疏时拟合截距(即fit_intercept=True)。#13336 由 Bartosz Telenczuk 提交。改进
Lasso、ElasticNet等中使用的坐标下降求解器,在未达到所需容差而完成时,现在会发出ConvergenceWarning。 #11754 和 #13397 由 Brent Fagan 和 Adrin Jalali 贡献。修复 修复了
linear_model.LogisticRegression和linear_model.LogisticRegressionCV中使用 'saga' 求解器时的一个错误,即在某些情况下权重未正确更新。 #11646 由 Tom Dupre la Tour 贡献。修复 修复了
linear_model.BayesianRidge中的后验均值、后验协方差和返回的正则化参数。后验均值和后验协方差不是用正则化参数的最后更新计算的,并且返回的正则化参数也不是最终的。还修复了当compute_score=True时用于计算分数的对数边际似然的公式。 #12174 由 Albert Thomas 贡献。修复 修复了
linear_model.LassoLarsIC中的一个错误,即用户在实例创建时输入的copy_X=False会被fit中的默认参数值copy_X=True覆盖。 #12972 由 Lucio Fernandez-Arjona 贡献修复 修复了
linear_model.LinearRegression中的一个错误,该错误在稀疏和密集情况下,当fit_intercept=True时,没有返回相同的系数和截距。 #13279 由 Alexandre Gramfort 贡献修复 修复了
linear_model.HuberRegressor中的一个错误,该错误在X的 dtype 为布尔值时会崩溃。 #13328 由 Alexandre Gramfort 贡献。修复 修复了
saga和sag求解器在joblib.Parallel设置中,当n_jobs > 1且backend="threading"时,性能下降的问题,导致它们比顺序执行时表现更差。 #13389 由 Pierre Glaser 贡献。修复 修复了
linear_model.stochastic_gradient.BaseSGDClassifier中的一个错误,该错误在多类别设置中多线程训练时不是确定性的。 #13422 由 Clément Doumouro 贡献。修复 修复了
linear_model.ridge_regression、linear_model.Ridge和linear_model.RidgeClassifier中的错误,该错误在参数return_intercept=True和solver=auto(默认)或任何其他与sag不同的求解器时导致未处理的异常。 #13363 由 Bartosz Telenczuk 贡献修复 如果
linear_model.ridge_regression的return_intercept=True且求解器与sag不同,它现在将引发异常。以前,只发出警告。 #13363 由 Bartosz Telenczuk 贡献修复 当
solver=auto且提供了sample_weight时,linear_model.ridge_regression将为稀疏输入选择sparse_cg求解器(以前选择的是cholesky求解器)。 #13363 由 Bartosz Telenczuk 贡献API 变更 在版本 0.21 中,使用
X=None并传递Gram的linear_model.lars_path已被弃用,并将在版本 0.23 中移除。请改用linear_model.lars_path_gram。 #11699 由 Kuai Yu 贡献。API 变更
linear_model.logistic_regression_path在 0.21 版本中已弃用,并将在 0.23 版本中移除。 #12821 由 Nicolas Hug 贡献。修复
linear_model.RidgeCV在留一法交叉验证中,当fit_intercept=True且设计矩阵稀疏时,现在可以正确拟合截距。 #13350 由 Jérôme Dockès 贡献
sklearn.manifold#
效率 使
manifold.trustworthiness使用倒排索引而不是np.where查找来查找输入空间中邻居的秩。这尤其在计算大量邻居和/或小型数据集时提高了效率。 #9907 由 William de Vazelhes 贡献。
sklearn.metrics#
新特性 添加了
metrics.max_error指标以及相应的'max_error'单输出回归评分器。 #12232 由 Krishna Sangeeth 贡献。新特性 添加了
metrics.multilabel_confusion_matrix,它为每个类别计算包含真阳性、假阳性、假阴性和真阴性计数的混淆矩阵。这有助于计算集合式指标,如召回率、特异性、误报率和漏报率。 #11179 由 Shangwu Yao 和 Joel Nothman 贡献。新特性 添加了
metrics.jaccard_score,用于计算 Jaccard 系数作为二元、多标签和多类别任务的评估指标,其接口类似于metrics.f1_score。 #13151 由 Gaurav Dhingra 和 Joel Nothman 贡献。新特性 添加了
metrics.pairwise.haversine_distances,可以通过metrics.pairwise_distances和估计器以metric='pairwise'访问。(Haversine 距离以前可用于最近邻计算。) #12568 由 Wei Xue、 Emmanuel Arias 和 Joel Nothman 贡献。效率 通过使用基于线程的后端,而不是基于进程的后端,加速了
metrics.pairwise_distances在n_jobs> 1 时的情况。 #8216 由 Pierre Glaser 和 Romuald Menuet 贡献效率 稀疏输入的成对曼哈顿距离现在使用 scipy 附带的 BLAS,而不是捆绑的 BLAS。 #12732 由 Jérémie du Boisberranger 贡献
改进 在
metrics.classification_report上使用标签accuracy而不是micro-average以避免混淆。micro-average仅在多标签或多类别且包含部分类别时显示,因为否则它与准确率相同。 #12334 由 Emmanuel Arias、 Joel Nothman 和 Andreas Müller 贡献改进 为
metrics.homogeneity_completeness_v_measure和metrics.v_measure_score添加了beta参数,用于配置同质性和完整性之间的权衡。 #13607 由 Stephane Couvreur 和 Ivan Sanchez 贡献。修复 当只有一个样本时,指标
metrics.r2_score是退化的,现在它返回 NaN 并引发exceptions.UndefinedMetricWarning。 #12855 由 Pawel Sendyk 贡献。修复 修复了
metrics.brier_score_loss在y_true中只有一个类别时有时会返回错误结果的 bug。 #13628 由 Hanmin Qin 贡献。修复 修复了
metrics.label_ranking_average_precision_score中的一个错误,即对于具有退化标签的样本,未考虑sample_weight。 #13447 由 Dan Ellis 贡献。API 变更
metrics.hamming_loss中的参数labels在 0.21 版本中已弃用,并将在 0.23 版本中移除。 #10580 由 Reshama Shaikh 和 Sandra Mitrovic 贡献。修复 函数
metrics.pairwise.euclidean_distances以及因此带有metric='euclidean'的多个估计器,在使用float32特征时存在数值精度问题。现在精度已提高,但性能略有下降。 #13554 由 @Celelibi 和 Jérémie du Boisberranger 贡献。API 变更
metrics.jaccard_similarity_score已被弃用,转而使用更一致的metrics.jaccard_score。前者对于二元和多类别目标的行为已损坏。 #13151 由 Joel Nothman 贡献。
sklearn.mixture#
修复 修复了
mixture.BaseMixture以及基于它的估计器(即mixture.GaussianMixture和mixture.BayesianGaussianMixture)中的一个错误,即fit_predict和fit.predict不等价。 #13142 由 Jérémie du Boisberranger 贡献。
sklearn.model_selection#
新特性
GridSearchCV和RandomizedSearchCV类现在允许refit=callable,以增加确定最佳估计器的灵活性。参见 平衡模型复杂度和交叉验证分数。 #11354 由 Wenhao Zhang、 Joel Nothman 和 Adrin Jalali 贡献。改进 当
return_train_scores为 True 且verbose> 2 时,GridSearchCV、RandomizedSearchCV类以及cross_val_score、cross_val_predict、cross_validate方法现在会打印训练分数。对于learning_curve和validation_curve,只需要后者。 #12613 和 #12669 由 Marc Torrellas 贡献。改进 一些 CV 分割器 类和
model_selection.train_test_split在结果训练集为空时现在会引发ValueError。 #12861 由 Nicolas Hug 贡献。修复 修复了
model_selection.StratifiedKFold中的一个错误,该错误会以相同的random_state对每个类别的样本进行洗牌,使得shuffle=True无效。 #13124 由 Hanmin Qin 贡献。修复 增加了
model_selection.cross_val_predict处理多标签(和多输出多类别)目标的能力,使用predict_proba类型的方法。 #8773 由 Stephen Hoover 贡献。修复 修复了
cross_val_predict中的一个问题,即当其中一个类别在交叉验证折叠中被排除时,method="predict_proba"总是返回0.0。 #13366 由 Guillaume Fournier 贡献
sklearn.multiclass#
修复 修复了
multiclass.OneVsOneClassifier.decision_function中的一个错误,其中由于在decision_function中使用的缩放,给定样本的 decision_function 值,在单独评估样本时与在包含该样本的批次上评估时不同。 #10440 由 Jonathan Ohayon 贡献。
sklearn.multioutput#
修复 修复了
multioutput.MultiOutputClassifier中的一个错误,其中predict_proba方法错误地检查了估计器对象中的predict_proba属性。 #12222 由 Rebekah Kim 贡献
sklearn.neighbors#
主要新特性 添加了
neighbors.NeighborhoodComponentsAnalysis用于度量学习,它实现了邻域成分分析算法。 #10058 由 William de Vazelhes 和 John Chiotellis 贡献。API 变更
neighbors.NearestNeighbors中的方法:kneighbors、radius_neighbors、kneighbors_graph、radius_neighbors_graph现在在调用fit之前被调用时,会引发NotFittedError,而不是AttributeError。 #12279 由 Krishna Sangeeth 贡献。
sklearn.neural_network#
修复 修复了
neural_network.MLPClassifier和neural_network.MLPRegressor中shuffle=False选项被忽略的错误。 #12582 由 Sam Waterbury 贡献。修复 修复了
neural_network.MLPClassifier中的一个错误,其中用于提前停止的验证集未进行分层抽样。但在多标签情况下,分割仍然未分层。 #13164 由 Nicolas Hug 贡献。
sklearn.pipeline#
新特性
pipeline.Pipeline现在可以使用索引表示法(例如my_pipeline[0:-1])提取步骤的子序列作为另一个 Pipeline 实例。Pipeline 也可以直接索引以提取特定步骤(例如my_pipeline['svc']),而不是访问named_steps。 #2568 由 Joel Nothman 贡献。新特性 在
pipeline.Pipeline、compose.ColumnTransformer和pipeline.FeatureUnion以及相应的make_辅助函数中添加了可选参数verbose,用于显示每个步骤的进度和时间。 #11364 由 Baze Petrushev、 Karan Desai、 Joel Nothman 和 Thomas Fan 贡献。改进
pipeline.Pipeline现在支持使用'passthrough'作为转换器,效果与None相同。 #11144 由 Thomas Fan 贡献。改进
pipeline.Pipeline实现了__len__,因此len(pipeline)返回管道中的步骤数。 #13439 由 Lakshya KD 贡献。
sklearn.preprocessing#
新特性
preprocessing.OneHotEncoder现在支持使用新的drop参数为每个类别删除一个特征。 #12908 由 Drew Johnston 贡献。效率
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder现在更高效地处理 pandas DataFrames。 #13253 由 @maikia 贡献。效率 使
preprocessing.MultiLabelBinarizer缓存类别映射,而不是每次动态计算。 #12116 由 Ekaterina Krivich 和 Joel Nothman 贡献。效率
preprocessing.PolynomialFeatures现在支持将压缩稀疏行 (CSR) 矩阵作为度为 2 和 3 的输入。这通常比密集情况快得多,因为它随矩阵密度和展开度缩放(约为密度^度),并且比压缩稀疏列 (CSC) 情况快得多。 #12197 由 Andrew Nystrom 贡献。效率
preprocessing.PolynomialFeatures在密集情况下的速度有所提高。还添加了一个新的参数order,用于控制输出顺序以进一步提高性能。 #12251 由 Tom Dupre la Tour 贡献。修复 修复了使用
preprocessing.StandardScaler时 float16 dtype 的计算溢出问题。 #13007 由 Raffaello Baluyot 贡献修复 修复了
preprocessing.QuantileTransformer和preprocessing.quantile_transform中的一个错误,该错误强制 n_quantiles 最多等于 n_samples。大于 n_samples 的 n_quantiles 值要么无用,要么导致累积分布函数估计器的错误近似。 #13333 由 Albert Thomas 贡献。API 变更
preprocessing.quantile_transform中copy的默认值将在 0.23 版本中从 False 更改为 True,以使其与其他sklearn.preprocessing函数的默认copy值更一致,并防止通过就地修改X的值而产生意外的副作用。 #13459 由 Hunter McGushion 贡献。
sklearn.svm#
修复 修复了
svm.SVC.decision_function中当decision_function_shape='ovr'时的错误。由于在 decision_function 中使用的缩放,给定样本的 decision_function 值,在单独评估样本时与在包含该样本的批次上评估时不同。 #10440 由 Jonathan Ohayon 贡献。
sklearn.tree#
新特性 决策树现在可以使用
tree.plot_tree通过 matplotlib 绘制,无需依赖dot库,从而消除了一个难以安装的依赖项。 #8508 由 Andreas Müller 贡献。新特性 决策树现在可以使用
tree.export_text导出为人类可读的文本格式。 #6261 由Giuseppe Vettigli <JustGlowing>贡献。新特性
get_n_leaves()和get_depth()已添加到tree.BaseDecisionTree及其所有基于它的估计器中,包括tree.DecisionTreeClassifier、tree.DecisionTreeRegressor、tree.ExtraTreeClassifier和tree.ExtraTreeRegressor。 #12300 由 Adrin Jalali 贡献。修复 以前,树和森林在
fit中接受字符串标签后,无法predict多输出分类目标。 #11458 由 Mitar Milutinovic 贡献。修复 修复了
tree.BaseDecisionTree以及基于它的所有估计器(包括tree.DecisionTreeClassifier、tree.DecisionTreeRegressor、tree.ExtraTreeClassifier和tree.ExtraTreeRegressor)中的一个问题,即如果用户同时指定了max_leaf_nodes和max_depth,它们在扩展树时会超出给定的max_depth1。请注意,这也影响了所有使用决策树的集成方法。 #12344 由 Adrin Jalali 贡献。
sklearn.utils#
新特性
utils.resample现在接受stratify参数,用于根据类别分布进行采样。 #13549 由 Nicolas Hug 贡献。API 变更 弃用了
utils.check_array和utils.check_X_y中的warn_on_dtype参数。如果传入的metric是成对布尔度量,则在check_pairwise_arrays中添加了 dtype 转换的显式警告。 #13382 由 Prathmesh Savale 贡献。
多个模块#
主要新特性 所有估计器的
__repr__()方法(在调用print(estimator)时使用)已完全重写,基于 Python 的漂亮打印标准库。默认情况下打印所有参数,但这可以通过sklearn.set_config中的print_changed_only选项进行更改。 #11705 由 Nicolas Hug 贡献。主要新特性 添加了估计器标签:这些是对估计器的注释,允许以编程方式检查其功能,例如稀疏矩阵支持、支持的输出类型和支持的方法。估计器标签还决定了调用
check_estimator时在估计器上运行的测试。在 用户指南 中了解更多信息。 #8022 由 Andreas Müller 贡献。效率 在多个估计器中,将数组转换为不同的 dtype 时避免了内存复制。 #11973 由 Roman Yurchak 贡献。
修复 修复了
our_rand_r辅助函数实现中的一个错误,该函数在不同平台上的行为不一致。 #13422 由 Madhura Parikh 和 Clément Doumouro 贡献。
杂项#
改进 Joblib 不再作为 scikit-learn 的一部分,而是成为一个依赖项。最低支持版本是 joblib 0.11,但强烈建议使用 0.13 或更高版本。 #13531 由 Roman Yurchak 贡献。
估计器检查的更改#
这些更改主要影响库开发人员。
将
check_fit_idempotent添加到check_estimator,它检查当使用相同数据调用两次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, ^__^