版本 0.21#
变更日志图例
主要功能 以前无法实现的重要功能。
功能 以前无法实现的功能。
效率提升 现有功能现在可能不需要那么多的计算或内存。
增强 各种各样的次要改进。
修复 以前未按文档说明或合理预期工作的内容现在应该可以工作了。
API 变更 您需要更改代码才能在将来获得相同的效果;或者某个功能将在将来被移除。
版本 0.21.3#
2019年7月30日
已更改的模型#
使用相同数据和参数拟合的以下估计器和函数,可能会产生与先前版本不同的模型。这通常是由于建模逻辑的更改(错误修复或增强)或随机抽样程序造成的。
v0.20.0 版本说明未能提及
metrics.make_scorer
在needs_proba=True
和y_true
为二元时的向后不兼容性。现在,评分器函数应该接受一维y_pred
(即正类的概率,形状(n_samples,)
),而不是二维y_pred
(即形状(n_samples, 2)
)。
变更日志#
sklearn.cluster
#
修复 修复了
cluster.KMeans
中的一个错误,其中使用init='random'
的计算对于n_jobs > 1
或n_jobs = -1
是单线程的。 #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
中的一个问题,其中使用列顺序在 :func:fit
和 :func:transform
之间不同的 DataFrame 可能会导致将不正确的列静默传递给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 by Adrin Jalali。
sklearn.ensemble
#
修复 修复了
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
中的零除错误。 #14024 byNicolas Hug <NicolasHug>
。
sklearn.impute
#
修复 修复了
impute.SimpleImputer
和impute.IterativeImputer
中的一个错误,以便在训练数据中存在缺失值时不会抛出错误。 #13974 byFrank Hoang <fhoang7>
。
sklearn.inspection
#
修复 修复了
inspection.plot_partial_dependence
中的一个错误,其中在多分类问题中未考虑target
参数。 #14393 by Guillem G. Subies。
sklearn.linear_model
#
修复 修复了
linear_model.LogisticRegressionCV
中的一个错误,其中refit=False
会根据'multiclass'
和'penalty'
参数而失败(在 0.21 版本中引入的回归)。 #14087 by Nicolas Hug。修复
linear_model.ARDRegression
与 Scipy>=1.3.0 的兼容性修复。适应上游对默认pinvh
截断阈值的更改,否则在某些情况下会导致精度下降。 #14067 by Tim Staley。
sklearn.neighbors
#
修复 修复了
neighbors.NeighborhoodComponentsAnalysis
中的一个错误,其中初始参数n_components
、max_iter
和tol
的验证类型要求过于严格。 #14092 by Jérémie du Boisberranger。
sklearn.tree
#
修复 修复了
tree.export_text
中的一个错误,当树只有一个特征并且只传递了一个特征名称时。 #14053 byThomas Fan
。修复 修复了
tree.plot_tree
中的一个问题,即使对于 DecisionTreeClassifiers 中的gini
标准,它也会显示熵计算结果。 #13947 by Frank Hoang。
版本 0.21.2#
2019年5月24日
变更日志#
sklearn.decomposition
#
修复 修复了
cross_decomposition.CCA
中的一个bug,提高了当Y
接近于零时的数值稳定性。 #13903 by Thomas Fan.
sklearn.metrics
#
修复 修复了
metrics.pairwise.euclidean_distances
中的一个bug,该bug导致对于足够大的float32数据集,距离矩阵的一部分未被初始化(在0.21版本中引入的回归问题)。 #13910 by Jérémie du Boisberranger.
sklearn.preprocessing
#
修复 修复了
preprocessing.OneHotEncoder
中的一个bug,其中新的drop
参数未反映在get_feature_names
中。 #13894 by James Myatt.
sklearn.utils.sparsefuncs
#
修复 修复了一个bug,该bug导致
min_max_axis
在某些大型输入的32位系统上会失败。这会影响preprocessing.MaxAbsScaler
,preprocessing.normalize
和preprocessing.LabelBinarizer
。 #13741 by Roddy MacSween.
版本 0.21.1#
2019年5月17日
这是一个错误修复版本,主要用于解决0.21.0版本中的一些打包问题。它还包括一些次要的文档改进和一些错误修复。
变更日志#
sklearn.inspection
#
修复 修复了
inspection.partial_dependence
中的一个bug,使其只检查分类器而不检查多类别多输出情况下的回归器。 #14309 by Guillaume Lemaitre.
sklearn.metrics
#
修复 修复了
metrics.pairwise_distances
中的一个bug,当X
具有布尔类型并且Y == None
时,对于布尔度量会引发AttributeError
。 #13864 by Paresh Mathur.修复 修复了
metrics.pairwise_distances
中的两个bug,当n_jobs > 1
时。首先,它过去会返回与输入相同数据类型的距离矩阵,即使对于整数数据类型也是如此。然后,当Y
为X
时,欧几里得度量的对角线不是零。 #13877 by Jérémie du Boisberranger.
sklearn.neighbors
#
修复 修复了
neighbors.KernelDensity
中的一个bug,如果使用了sample_weight
,则无法从pickle文件中恢复。 #13772 by Aditya Vyas.
版本 0.21.0#
2019年5月
模型变更#
使用相同数据和参数拟合的以下估计器和函数,可能会产生与先前版本不同的模型。这通常是由于建模逻辑的更改(错误修复或增强)或随机抽样程序造成的。
discriminant_analysis.LinearDiscriminantAnalysis
使用‘eigen’求解器。 修复同时设置
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
。已修复
详细信息列在下面的变更日志中。
(虽然我们正在努力通过提供这些信息来更好地告知用户,但我们不能保证此列表完整无缺。)
已知主要错误#
对于许多给定默认
tol
值的求解器而言,linear_model.LogisticRegression
的默认max_iter
值太小。特别是,我们在#3591(0.16版本中发布)中意外地将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
一致。这将影响所有多输出回归器的score
方法(除了multioutput.MultiOutputRegressor
)。#13157,由秦汉民贡献。
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、秦汉民和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 由 秦汉民 完成。
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()
现在产生正确的输出(与fit_transform()
相同),如果存在未移除的零特征值(remove_zero_eig=False
)。fit_inverse_transform
也通过使用与fit_transform
相同的技巧来计算X
的变换而得到了加速。#12143 由 Sylvain Marié 完成。修复 修复了
decomposition.NMF
中的一个错误,其中当n_components < n_features
时,允许使用init = 'nndsvd'
、init = 'nndsvda'
和init = 'nndsvdar'
,而不是n_components <= min(n_samples, n_features)
。#11650 由 Hossein Pourbozorg 和 Zijie (ZJ) Poh 完成。API变更 在0.23版本中,
decomposition.non_negative_factorization
中init
参数的默认值将从random
更改为None
,以使其与decomposition.NMF
保持一致。使用默认值时会引发FutureWarning警告。#12988 由Zijie (ZJ) Poh提交。
sklearn.discriminant_analysis
#
增强
discriminant_analysis.LinearDiscriminantAnalysis
现在保留float32
和float64
数据类型。#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
中的一个bug,该bug会导致在多分类情况下预测概率计算错误。#6848,由Agamemnon Krasoulis和Guillaume Lemaitre <glemaitre>
提交。修复 修复了
discriminant_analysis.LinearDiscriminantAnalysis
中的一个bug,该bug会导致使用eigen
求解器时预测概率计算错误。#11727,由Agamemnon Krasoulis提交。
sklearn.dummy
#
修复 修复了
dummy.DummyClassifier
中的一个bug,该bug会导致predict_proba
方法对于stratified
策略返回int32数组而不是float64。#13266 由 Christos Aridas提交。修复 修复了
dummy.DummyClassifier
中的一个bug,该bug会导致在预测时如果给定形状为shape=(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 完成。修复 当其中一个估计器设置为
None
且sample_weight
不为None
时,ensemble.VotingClassifier
和ensemble.VotingRegressor
在fit
过程中会失败。由Guillaume Lemaitre提交。#13779API变更 为了与其他估计器(例如
pipeline.FeatureUnion
和compose.ColumnTransformer
)保持一致,ensemble.VotingClassifier
和ensemble.VotingRegressor
现在除了接受None
之外,还接受'drop'
来禁用估计器。由Guillaume Lemaitre提交。#13780
sklearn.externals
#
sklearn.feature_extraction
#
修复 如果
input='file'
或input='filename'
,并且使用可调用对象作为analyzer
,sklearn.feature_extraction.text.HashingVectorizer
,sklearn.feature_extraction.text.TfidfVectorizer
和sklearn.feature_extraction.text.CountVectorizer
现在会先从文件读取数据,然后将其传递给指定的analyzer
,而不是将文件名或文件对象传递给analyzer
。由Adrin Jalali提交。#13641
sklearn.impute
#
主要功能 添加了
impute.IterativeImputer
,这是一种通过循环的方式将每个具有缺失值的特征建模为其他特征的函数来估算缺失值的方法。由Sergey Feldman和Ben Lawson提交。#8478 和 #12177IterativeImputer
的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
变换堆叠到估算器的变换输出中。这允许预测估计器考虑缺失值。由Danylo Baibak提交。#12583,#13601修复 在
impute.MissingIndicator
中,如果输入是稀疏的并且missing_values
属性设置为0,则通过抛出异常来避免隐式致密化。由Bartosz Telenczuk提交。#13240修复 修复了
impute.MissingIndicator
中的两个bug。首先,当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
中使用不同的数据类型(例如float32)。 #8769 由 Vlad Niculae贡献。
sklearn.linear_model
#
增强
linear_model.Ridge
现在保留float32
和float64
数据类型。 #8769 和 #11000 由 Guillaume Lemaitre和 Joan Massich贡献。特性
linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
现在支持使用'saga'求解器的Elastic-Net惩罚项。 #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
和float64
数据类型,减少了随机梯度下降、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’ 求解器时的一个bug,在某些情况下权重不会被正确更新。 #11646 由 Tom Dupre la Tour 完成。修复 修复了
linear_model.BayesianRidge
中的后验均值、后验协方差和返回的正则化参数。后验均值和后验协方差不是使用正则化参数的最后一次更新计算的,并且返回的正则化参数也不是最终的。还修复了当compute_score=True
时用于计算分数的对数边际似然的公式。 #12174 由 Albert Thomas 完成。修复 修复了
linear_model.LassoLarsIC
中的一个bug,其中在实例创建时用户输入copy_X=False
会被fit
中的默认参数值copy_X=True
覆盖。 #12972 由 Lucio Fernandez-Arjona 完成。修复 修复了
linear_model.LinearRegression
中的一个bug,该bug在稀疏和密集情况下,使用fit_intercept=True
时,返回的系数和截距不一致。 #13279 由 Alexandre Gramfort 完成。修复 修复了
linear_model.HuberRegressor
中的一个bug,当X
的数据类型为 bool 时,该bug会导致程序崩溃。 #13328 由 Alexandre Gramfort 完成。修复 修复了在
joblib.Parallel
设置中使用n_jobs > 1
和backend="threading"
调用saga
和sag
求解器的性能问题,导致它们的性能比顺序情况更差。 #13389 由 Pierre Glaser 完成。修复 修复了
linear_model.stochastic_gradient.BaseSGDClassifier
中的一个bug,该bug在多类别设置下使用多个线程训练时不确定性。 #13422 由 Clément Doumouro 完成。修复 修复了
linear_model.ridge_regression
、linear_model.Ridge
和linear_model.RidgeClassifier
中的一个bug,该bug导致对于参数return_intercept=True
和solver=auto
(默认值)或任何其他与sag
不同的求解器出现未处理的异常。 #13363 由 Bartosz Telenczuk 完成。修复 如果
return_intercept=True
且求解器不同于sag
,linear_model.ridge_regression
现在将引发异常。以前只会发出警告。 #13363 由 Bartosz Telenczuk 完成。修复 当
solver=auto
且提供sample_weight
时,linear_model.ridge_regression
将为稀疏输入选择sparse_cg
求解器(以前选择的是cholesky
求解器)。 #13363 由 Bartosz Telenczuk 完成。API变更 在0.21版本中,使用
linear_model.lars_path
时,同时设置X=None
和Gram
已弃用,将在0.23版本中移除。请改用linear_model.lars_path_gram
。 #11699 由 Yu Kuai贡献。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
,可以通过metric='pairwise'
在metrics.pairwise_distances
和估计器中访问。(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
中只有一类时有时会返回不正确结果的错误。 #13628 由 Hanmin Qin 完成。修复 修复了
metrics.label_ranking_average_precision_score
中的一个错误,该错误导致样本权重未被考虑在具有退化标签的样本中。 #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 完成。增强 类
GridSearchCV
、RandomizedSearchCV
和方法cross_val_score
、cross_val_predict
、cross_validate
,现在在return_train_scores
为 True 且verbose
> 2 时打印训练分数。对于learning_curve
和validation_curve
,只需要后者即可。#12613 和 #12669 由 Marc Torrellas 完成。增强 一些 交叉验证分割器 类和
model_selection.train_test_split
现在在生成的训练集为空时引发ValueError
。#12861 由 Nicolas Hug 完成。修复 修复了一个错误,该错误会导致
model_selection.StratifiedKFold
使用相同的random_state
对每个类的样本进行混洗,从而使shuffle=True
无效。#13124 由 秦汉民 完成。修复 使
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 是否单独在样本上评估或在包含此相同样本的批次上评估,这是由于 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
现在引发NotFittedError
,而不是AttributeError
,在调用fit
之前。#12279 由 Krishna Sangeeth 完成。
sklearn.neural_network
#
修复 修复了
neural_network.MLPClassifier
和neural_network.MLPRegressor
中的一个bug,其中shuffle=False
选项被忽略了。#12582 由 Sam Waterbury 完成。修复 修复了
neural_network.MLPClassifier
中的一个bug,其中用于提前停止的验证集没有分层抽样。然而,在多标签情况下,分割仍然没有分层。#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)
返回pipeline中步骤的数量。#13439 由 Lakshya KD 完成。
sklearn.preprocessing
#
功能
preprocessing.OneHotEncoder
现在支持使用新的drop参数丢弃每个类别的一个特征。#12908 由 Drew Johnston 完成。效率
preprocessing.OneHotEncoder
和preprocessing.OrdinalEncoder
现在可以更高效地处理pandas DataFrame。#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 完成。修复 修复了在使用 float16 数据类型和
preprocessing.StandardScaler
时发生的计算溢出问题。 #13007 由 Raffaello Baluyot 完成。修复 修复了
preprocessing.QuantileTransformer
和preprocessing.quantile_transform
中的一个错误,强制 `n_quantiles` 最多等于 `n_samples`。大于 `n_samples` 的 `n_quantiles` 值要么无用,要么导致累积分布函数估计器的错误近似。 #13333 由 Albert Thomas 完成。API 变更 为了使其与
sklearn.preprocessing
中其他函数的默认 `copy` 值更一致,并防止通过就地修改X
的值产生意外的副作用,preprocessing.quantile_transform
中 `copy` 的默认值将在 0.23 版本中从 False 变为 True。 #13459 由 Hunter McGushion 完成。
sklearn.svm
#
修复 修复了当
decision_function_shape='ovr'
时,svm.SVC.decision_function
中的一个问题。由于 `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_depth
值1。请注意,这也影响了所有使用决策树的集成方法。#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,Gaël Varoquaux,GauravAhlawat,Giuseppe Vettigli,Greg Gandenberger,Guillaume Fournier,Guillaume Lemaître,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,Loïc 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,^__^