版本 0.22#
有关此版本主要亮点的简短描述,请参阅scikit-learn 0.22 版本亮点。
更新日志图例
重大功能 以前无法实现的大功能。
功能 以前无法实现的功能。
效率提升 现有功能现在可能不需要那么多计算或内存。
增强 一般性的小改进。
修复 以前无法按文档或合理预期工作的问题现在应该可以了。
API 变更 未来你需要更改代码才能达到相同的效果;或者未来某个功能将被移除。
版本 0.22.2.post1#
2020 年 3 月 3 日
0.22.2.post1 版本包含对源分发版的打包修复,但包的内容与 0.22.2 版本(不带 .post1 后缀)的 wheel 包内容相同。两者都包含以下更改。
更新日志#
sklearn.impute#
效率 通过分块进行成对距离计算,减少
impute.KNNImputer的渐进内存使用量。 #16397 by Joel Nothman。
sklearn.metrics#
修复 修复了
metrics.plot_roc_curve中的一个错误,该错误将估计器的名称传递给metrics.RocCurveDisplay,而不是参数name。这导致在后续调用metrics.RocCurveDisplay.plot时生成不同的图。 #16500 by Guillaume Lemaitre。修复 修复了
metrics.plot_precision_recall_curve中的一个错误,该错误将估计器的名称传递给metrics.PrecisionRecallDisplay,而不是参数name。这导致在后续调用metrics.PrecisionRecallDisplay.plot时生成不同的图。 #16505 by Guillaume Lemaitre。
sklearn.neighbors#
修复 修复了一个错误,该错误将数组列表转换为二维对象数组,而不是包含NumPy数组的一维数组。此错误影响了
neighbors.NearestNeighbors.radius_neighbors。 #16076 by Guillaume Lemaitre and Alex Shacked。
版本 0.22.1#
2020 年 1 月 2 日
这是一个错误修复版本,主要解决了 0.22.0 版本中的一些打包问题。它还包括次要的文档改进和一些错误修复。
更新日志#
sklearn.cluster#
修复 使用
algorithm="elkan"的cluster.KMeans现在使用与默认algorithm="full"相同的停止准则。 #15930 by @inder128。
sklearn.inspection#
修复 在共享内存后端(线程安全)和隔离内存、基于进程的后端中,当
random_state给定且n_jobs=1或n_jobs>1时,inspection.permutation_importance将返回相同的importances。同时避免将数据转换为对象dtype,并避免在n_jobs>1时出现大型数据帧的只读错误,如#15810中报告。这是#15898 by Shivam Gargsya的后续。 #15933 by Guillaume Lemaitre and Olivier Grisel。修复
inspection.plot_partial_dependence和inspection.PartialDependenceDisplay.plot现在一致地检查传入的轴数量。 #15760 by Thomas Fan。
sklearn.metrics#
修复
metrics.plot_confusion_matrix现在在normalize无效时引发错误。以前,它在没有归一化的情况下运行正常。 #15888 by Hanmin Qin。修复
metrics.plot_confusion_matrix现在正确地为标签颜色着色,以最大化与背景的对比度。 #15936 by Thomas Fan and @DizietAsahi。修复
metrics.classification_report不再忽略zero_division关键字参数的值。 #15879 by Bibhash Chandra Mitra。修复 修复了
metrics.plot_confusion_matrix中的一个错误,该错误无法将values_format参数正确传递给metrics.ConfusionMatrixDisplay的plot()调用。 #15937 by Stephen Blystone。
sklearn.model_selection#
修复
model_selection.GridSearchCV和model_selection.RandomizedSearchCV接受在fit_params中提供的标量值。0.22 中的更改破坏了向后兼容性。 #15863 by Adrin Jalali and Guillaume Lemaitre。
sklearn.naive_bayes#
修复 移除了
naive_bayes.BaseNB中_check_X方法的abstractmethod装饰器,该装饰器可能会破坏继承自此已弃用公共基类的下游项目。 #15996 by Brigitta Sipőcz。
sklearn.preprocessing#
修复
preprocessing.QuantileTransformer现在保证quantiles_属性以非递减方式完全排序。 #15751 by Tirth Patel。
sklearn.semi_supervised#
修复
semi_supervised.LabelPropagation和semi_supervised.LabelSpreading现在允许可调用核函数返回稀疏权重矩阵。 #15868 by Niklas Smedemark-Margulies。
sklearn.utils#
修复
utils.check_array现在可以正确地将带有布尔列的 Pandas DataFrame 转换为浮点数。 #15797 by Thomas Fan。修复
utils.validation.check_is_fitted接受显式attributes参数以检查特定属性作为拟合估计器的显式标记。当未提供显式attributes时,只有以下划线结尾且不以下划线开头两次的属性才用作“已拟合”标记。all_or_any参数也不再弃用。此更改旨在恢复与 0.21 版本中此实用程序的行为的某些向后兼容性。 #15947 by Thomas Fan。
版本 0.22.0#
2019 年 12 月 3 日
网站更新#
我们的网站已重新设计,焕然一新。 #14849 by Thomas Fan。
公共 API 的清晰定义#
Scikit-learn 有一个公共 API 和一个私有 API。
我们尽最大努力不破坏公共 API,并且只引入不要求任何用户操作的向后兼容的更改。然而,在不可能的情况下,对公共 API 的任何更改都将经历两个次要版本的弃用周期。私有 API 未公开文档化,不服从任何弃用周期,因此用户不应依赖其稳定性。
如果一个函数或对象在API 参考中已文档化,并且可以通过不带前导下划线的导入路径导入,则它是公共的。例如,sklearn.pipeline.make_pipeline是公共的,而sklearn.pipeline._name_estimators是私有的。sklearn.ensemble._gb.BaseEnsemble也是私有的,因为整个_gb模块都是私有的。
直到0.22版本,一些工具实际上是公共的(没有前导下划线),而它们本应是私有的。在0.22版本中,这些工具已正确地设为私有,公共API空间也已清理。此外,从大多数子模块导入现在已弃用:例如,您应该使用from sklearn.cluster import Birch,而不是from sklearn.cluster.birch import Birch(实际上,birch.py已移动到_birch.py)。
注意
公共API中的所有工具都应在API 参考中进行文档说明。如果您发现一个公共工具(没有前导下划线)未在API参考中列出,这意味着它要么应该是私有的,要么应该被文档说明。请通过开一个issue告诉我们!
弃用:从现在起使用 FutureWarning#
在弃用某个功能时,scikit-learn 的早期版本通常会引发 DeprecationWarning。由于 Python 默认不显示 DeprecationWarnings,scikit-learn 需要借助自定义警告过滤器来始终显示警告。该过滤器有时会干扰用户的自定义警告过滤器。
从 0.22 版本开始,scikit-learn 将对弃用显示 FutureWarnings,如 Python 文档所建议。FutureWarnings 默认总是由 Python 显示,因此已删除自定义过滤器,scikit-learn 不再妨碍用户过滤器。 #15080 by Nicolas Hug。
变更模型#
以下估计器和函数在用相同数据和参数拟合时,可能会产生与上一个版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机采样过程的更改所致。
当
n_jobs=1时cluster.KMeans。 修复decomposition.SparseCoder、decomposition.DictionaryLearning和decomposition.MiniBatchDictionaryLearning修复decomposition.SparseCoder且algorithm='lasso_lars'修复decomposition.SparsePCA,其中normalize_components由于弃用而无效。ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor修复 、功能 、增强 。impute.IterativeImputer当X具有无缺失值特征时。 功能linear_model.Ridge当X是稀疏的。 修复model_selection.StratifiedKFold和任何使用cv=int和分类器的情况。 修复cross_decomposition.CCA在使用 scipy >= 1.3 时 修复
详细信息列在下面的更改日志中。
(虽然我们正试图通过提供此信息来更好地告知用户,但我们不能保证此列表完整。)
更改日志#
sklearn.base#
API 变更 从 0.24 版本开始,
base.BaseEstimator.get_params将会引发 AttributeError,而不是为那些在估计器构造函数中但未作为实例属性存储的参数返回 None。 #14464 by Joel Nothman。
sklearn.calibration#
修复 修复了
calibration.CalibratedClassifierCV在给定sample_weight参数为list类型(在包装的估计器不支持sample_weights的情况下)时失败的错误。 #13575 by William de Vazelhes。
sklearn.cluster#
功能
cluster.SpectralClustering现在接受预计算的稀疏邻居图作为输入。 #10482 by Tom Dupre la Tour and Kumar Ashutosh。增强
cluster.SpectralClustering现在接受n_components参数。此参数扩展了SpectralClustering类功能,以匹配cluster.spectral_clustering。 #13726 by Shuzhe Xiao。修复 修复了
cluster.KMeans由于随机状态处理导致n_jobs=1和n_jobs>1之间产生不一致结果的错误。 #9288 by Bryan Yang。修复 修复了
cluster.KMeans中elkan算法在大数组上由于整数索引溢出而导致分段错误的问题。 #15057 by Vladimir Korolev。修复
MeanShift现在接受具有默认值 300 的 max_iter,而不是始终使用默认值 300。它现在还公开了一个n_iter_,表示在每个种子处执行的最大迭代次数。 #15120 by Adrin Jalali。修复
cluster.AgglomerativeClustering和cluster.FeatureAgglomeration现在在affinity='cosine'且X具有全零样本时引发错误。 #7943 by @mthorrell。
sklearn.compose#
功能 添加了
compose.make_column_selector,它与compose.ColumnTransformer一起使用,根据名称和数据类型选择 DataFrame 列。 #12303 by Thomas Fan。修复 修复了
compose.ColumnTransformer中的一个错误,该错误在使用布尔列表且NumPy版本低于1.12时无法选择正确的列。 #14510 by Guillaume Lemaitre。修复 修复了
compose.TransformedTargetRegressor未将**fit_params传递给底层回归器的错误。 #14890 by Miguel Cabrera。修复
compose.ColumnTransformer现在要求fit和transform之间特征数量保持一致。现在会引发FutureWarning,这将在 0.24 版本中引发错误。如果特征数量不一致且使用了负索引,则会引发错误。 #14544 by Adrin Jalali。
sklearn.cross_decomposition#
功能
cross_decomposition.PLSCanonical和cross_decomposition.PLSRegression有了一个新函数inverse_transform,可以将数据转换回原始空间。 #15304 by Jaime Ferrando Huertas。增强
decomposition.KernelPCA现在正确检查求解器发现的特征值是否存在数值或条件问题。这确保了求解器之间(eigen_solver的不同选择)结果的一致性,包括近似求解器,如'randomized'和'lobpcg'(参见#12068)。 #12145 by Sylvain Marié修复 修复了
cross_decomposition.PLSCanonical和cross_decomposition.PLSRegression在目标矩阵Y的第一列为常数时拟合会引发错误的bug。 #13609 by Camila Williamson。修复
cross_decomposition.CCA现在在使用 scipy 1.3 和以前的 scipy 版本时产生相同的结果。 #15661 by Thomas Fan。
sklearn.datasets#
功能
datasets.fetch_openml现在通过设置as_frame=True支持使用 pandas 处理异构数据。 #13902 by Thomas Fan。功能
datasets.fetch_openml现在在返回的 Bunch 中包含target_names。 #15160 by Thomas Fan。增强 参数
return_X_y已添加到datasets.fetch_20newsgroups和datasets.fetch_olivetti_faces。 #14259 by Sourav Singh。增强
datasets.make_classification现在接受类数组weights参数,即列表或 numpy.array,而不仅仅是列表。 #14764 by Cat Chenal。- 增强 参数
normalize已添加到 datasets.fetch_20newsgroups_vectorized。 #14740 by Stéphan Tulkens
- 增强 参数
修复 修复了
datasets.fetch_openml中的一个错误,该错误在加载包含被忽略特征的OpenML数据集时失败。 #14623 by Sarra Habchi。
sklearn.decomposition#
效率
solver="mu"的decomposition.NMF在稀疏输入矩阵上拟合时,现在使用分批处理以避免暂时分配大小为(#非零元素,n_components)的数组。 #15257 by Mart Willocx。增强
decomposition.dict_learning和decomposition.dict_learning_online现在接受method_max_iter并将其传递给decomposition.sparse_encode。 #12650 by Adrin Jalali。增强
decomposition.SparseCoder、decomposition.DictionaryLearning和decomposition.MiniBatchDictionaryLearning现在接受transform_max_iter参数并将其传递给decomposition.dict_learning或decomposition.sparse_encode。 #12650 by Adrin Jalali。增强
decomposition.IncrementalPCA现在接受稀疏矩阵作为输入,将其分批转换为密集矩阵,从而避免一次存储整个密集矩阵。 #13960 by Scott Gigante。修复 当
algorithm='lasso_lars'时,decomposition.sparse_encode现在将max_iter传递给底层linear_model.LassoLars。 #12650 by Adrin Jalali。
sklearn.dummy#
修复
dummy.DummyClassifier现在处理在多输出情况下检查提供的常数是否存在。 #14908 by Martina G. Vilas。API 变更
dummy.DummyClassifier中strategy参数的默认值将从 0.22 版本的'stratified'更改为 0.24 版本的'prior'。当使用默认值时会引发FutureWarning。 #15382 by Thomas Fan。API 变更
dummy.DummyClassifier和dummy.DummyRegressor中的outputs_2d_属性已弃用。它等效于n_outputs > 1。 #14933 by Nicolas Hug
sklearn.ensemble#
重大功能 添加了
ensemble.StackingClassifier和ensemble.StackingRegressor,以使用最终分类器或回归器堆叠预测器。 #11047 by Guillaume Lemaitre and Caio Oliveira and #15138 by Jon Cusick。重大功能
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor进行了许多改进功能 估计器现在原生支持具有缺失值的密集数据,用于训练和预测。它们还支持无限值。 #13911 and #14406 by Nicolas Hug, Adrin Jalali and Olivier Grisel。
功能 估计器现在有一个额外的
warm_start参数,支持热启动。 #14012 by Johann Faouzi。功能
inspection.partial_dependence和inspection.plot_partial_dependence现在支持两种估计器的快速“递归”方法。 #13769 by Nicolas Hug。增强 对于
ensemble.HistGradientBoostingClassifier,现在在类别分层的子样本上监控训练损失或得分,以保留原始训练集的类别平衡。 #14194 by Johann Faouzi。增强
ensemble.HistGradientBoostingRegressor现在支持“最小绝对偏差”损失。 #13896 by Nicolas Hug。修复 估计器现在分别对训练数据和验证数据进行分箱,以避免任何数据泄露。 #13933 by Nicolas Hug。
修复 修复了早期停止会因字符串目标而中断的错误。 #14710 by Guillaume Lemaitre。
修复 如果二分类问题给定
categorical_crossentropy损失,则ensemble.HistGradientBoostingClassifier现在将引发错误。 #14869 by Adrin Jalali。
请注意,0.21 中的 pickle 在 0.22 中将无法工作。
增强 添加了
max_samples参数,允许将引导样本的大小限制为小于数据集大小。已添加到ensemble.RandomForestClassifier、ensemble.RandomForestRegressor、ensemble.ExtraTreesClassifier、ensemble.ExtraTreesRegressor。 #14682 by Matt Hancock and #5963 by Pablo Duboue。修复 当
voting='hard'时,ensemble.VotingClassifier.predict_proba将不再存在。 #14287 by Thomas Fan。修复
ensemble.VotingClassifier和ensemble.VotingRegressor中的named_estimators_属性现在正确映射到已删除的估计器。以前,当其中一个估计器被删除时,named_estimators_映射是错误的。 #15375 by Thomas Fan。修复 默认在
ensemble.VotingClassifier和ensemble.VotingRegressor上运行utils.estimator_checks.check_estimator。这解决了predict期间形状一致性问题,该问题在底层估计器未输出一致数组维度时会失败。请注意,将来应通过重构通用测试来替换它。 #14305 by Guillaume Lemaitre。修复
ensemble.AdaBoostClassifier根据决策函数计算概率,与文献中一致。因此,predict和predict_proba提供一致的结果。 #14114 by Guillaume Lemaitre。修复 堆叠和投票估计器现在确保其底层估计器要么全是分类器,要么全是回归器。
ensemble.StackingClassifier、ensemble.StackingRegressor、ensemble.VotingClassifier和ensemble.VotingRegressor现在会引发一致的错误消息。 #15084 by Guillaume Lemaitre。修复
ensemble.AdaBoostRegressor,其中损失应由具有非空权重的样本的最大值进行归一化。 #14294 by Guillaume Lemaitre。API 变更
presort在ensemble.GradientBoostingClassifier和ensemble.GradientBoostingRegressor中已弃用,并且该参数无效。建议用户改用ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor。 #14907 by Adrin Jalali。
sklearn.feature_extraction#
增强 现在,如果参数选择意味着在调用
feature_extraction.text.HashingVectorizer、feature_extraction.text.CountVectorizer和feature_extraction.text.TfidfVectorizer的 fit() 方法时另一个参数将未使用,则会引发警告。 #14602 by Gaurav Chawla。修复
feature_extraction.text.VectorizerMixin的build_preprocessor和build_analyzer创建的函数现在可以被序列化。 #14430 by Dillon Niederhut。修复
feature_extraction.text.strip_accents_unicode现在可以正确地从 NFKD 规范化形式的字符串中删除重音。 #15100 by Daniel Grady。修复 修复了
feature_extraction.DictVectorizer在大型输入数据上生成scipy.sparse矩阵时,在transform操作期间引发OverflowError的错误。 #15463 by Norvan Sahiner。API 变更
feature_extraction.text.TfidfVectorizer.transform中未使用的copy参数已弃用,它将在 v0.24 中移除。 #14520 by Guillem G. Subies。
sklearn.feature_selection#
增强 更新了以下
sklearn.feature_selection估计器,以允许transform和fit中的 NaN/Inf 值:feature_selection.RFE、feature_selection.RFECV、feature_selection.SelectFromModel和feature_selection.VarianceThreshold。请注意,如果特征选择器底层估计器不允许 NaN/Inf,它仍然会报错,但特征选择器本身不再不必要地强制执行此限制。 #11635 by Alec Peters。修复 修复了
feature_selection.VarianceThreshold在threshold=0时由于数值不稳定性而未能移除常数特征的错误,在这种情况下改用范围而非方差。 #13704 by Roddy MacSween。
sklearn.gaussian_process#
功能 结构化数据的高斯过程模型:
gaussian_process.GaussianProcessRegressor和gaussian_process.GaussianProcessClassifier现在可以接受通用对象列表(例如字符串、树、图等)作为其训练/预测方法的X参数。应提供用户定义的核函数以计算通用对象之间的核矩阵,并且应继承自gaussian_process.kernels.GenericKernelMixin,以通知 GPR/GPC 模型它处理非向量样本。 #15557 by Yu-Hang Tang。效率
gaussian_process.GaussianProcessClassifier.log_marginal_likelihood和gaussian_process.GaussianProcessRegressor.log_marginal_likelihood现在接受clone_kernel=True关键字参数。当设置为False时,核属性会被修改,但这可能会带来性能提升。 #14378 by Masashi Shibata。API 变更 从 0.24 版本开始,
gaussian_process.kernels.Kernel.get_params将会引发AttributeError,而不是为那些在估计器构造函数中但未作为实例属性存储的参数返回None。 #14464 by Joel Nothman。
sklearn.impute#
重大功能 添加了
impute.KNNImputer,用于使用k最近邻居填充缺失值。 #12852 by Ashim Bhattarai and Thomas Fan and #15010 by Guillaume Lemaitre。功能
impute.IterativeImputer有新的skip_compute标志,默认为 False,当设置为 True 时,将在拟合阶段跳过对没有缺失值的特征的计算。 #13773 by Sergey Feldman。效率
impute.MissingIndicator.fit_transform避免重复计算掩码矩阵。 #14356 by Harsh Soni。修复
impute.IterativeImputer现在在只有一个特征时也能工作。 By Sergey Feldman。修复 修复了
impute.IterativeImputer中的一个错误,该错误在imputation_order为"ascending"或"descending"时,特征以反向预期顺序进行插补。 #15393 by Venkatachalam N。
sklearn.inspection#
重大功能 已添加
inspection.permutation_importance,用于衡量任意训练模型中每个特征相对于给定评分函数的重要性。 #13146 by Thomas Fan。功能
inspection.partial_dependence和inspection.plot_partial_dependence现在支持ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor的快速“递归”方法。 #13769 by Nicolas Hug。增强
inspection.plot_partial_dependence已扩展为现在支持用户指南中描述的新可视化API。 #14646 by Thomas Fan。增强
inspection.partial_dependence接受 pandas DataFrame 和 包含compose.ColumnTransformer的pipeline.Pipeline。此外,当传入数据框时,inspection.plot_partial_dependence将默认使用列名。 #14028 and #15429 by Guillaume Lemaitre。
sklearn.kernel_approximation#
修复 修复了
kernel_approximation.Nystroem在使用kernel="precomputed"时引发KeyError的错误。 #14706 by Venkatachalam N。
sklearn.linear_model#
效率 “liblinear”逻辑回归求解器现在更快且所需内存更少。 #14108、#14170、#14296 by Alex Henrie。
增强
linear_model.BayesianRidge现在接受超参数alpha_init和lambda_init,可用于设置 fit 中最大化过程的初始值。 #13618,作者:Yoshihiro Uchida。修复
linear_model.Ridge现在在X稀疏、solver="auto"且fit_intercept=True时正确拟合截距,因为此配置中的默认求解器已更改为sparse_cg,它可以使用稀疏数据拟合截距。 #13995,作者:Jérôme Dockès。修复 具有
solver='sag'的linear_model.Ridge现在接受 F 顺序和非连续数组,并进行转换而不是失败。 #14458,作者:Guillaume Lemaitre。修复
linear_model.LassoCV在拟合最终模型时不再强制precompute=False。 #14591,作者:Andreas Müller。修复
linear_model.RidgeCV和linear_model.RidgeClassifierCV现在在cv=None时正确评分。 #14864,作者:Venkatachalam N。修复 修复了
linear_model.LogisticRegressionCV中的一个错误,当penalty='elastic-net'时,scores_、n_iter_和coefs_paths_属性的顺序错误。 #15044,作者:Nicolas Hug修复
linear_model.MultiTaskLassoCV和linear_model.MultiTaskElasticNetCV,当 X 的 dtype 为 int 且fit_intercept=True时。 #15086,作者:Alex Gramfort。修复 liblinear 求解器现在支持
sample_weight。 #15038,作者:Guillaume Lemaitre。
sklearn.manifold#
特性
manifold.Isomap、manifold.TSNE和manifold.SpectralEmbedding现在接受预计算的稀疏邻居图作为输入。 #10482,作者:Tom Dupre la Tour 和 Kumar Ashutosh。特性 在
manifold.TSNE中暴露了n_jobs参数,用于邻居图的多核计算。当metric="precomputed"或 (metric="euclidean"且method="exact") 时,此参数没有影响。 #15082,作者:Roman Yurchak。效率 通过并行计算梯度,提高了
manifold.TSNE在method="barnes-hut"时的效率。 #13213,作者:Thomas Moreau修复 修复了
manifold.spectral_embedding(因此也影响manifold.SpectralEmbedding和cluster.SpectralClustering)的一个错误,即当n_samples < 5 * n_components时,使用eigen_solver='amg'计算的特征值错误。 #14647,作者:Andreas Müller。修复 修复了在
manifold.SpectralEmbedding和cluster.SpectralClustering中使用的manifold.spectral_embedding中的一个错误,即eigen_solver="amg"有时会导致 LinAlgError。 #13393,作者:Andrew Knyazev #13707,作者:Scott WhiteAPI 变更 弃用
manifold.Isomap中未使用的属性training_data_。 #10482,作者:Tom Dupre la Tour。
sklearn.metrics#
主要特性 添加了
metrics.plot_roc_curve以绘制 ROC 曲线。此函数引入了 用户指南 中描述的可视化 API。 #14357,作者:Thomas Fan。特性 为多个分类指标添加了新参数
zero_division:metrics.precision_score、metrics.recall_score、metrics.f1_score、metrics.fbeta_score、metrics.precision_recall_fscore_support、metrics.classification_report。这允许为未定义的指标设置返回值。 #14900,作者:Marc Torrellas Socastro。特性 添加了
metrics.pairwise.nan_euclidean_distances指标,它在存在缺失值的情况下计算欧几里得距离。 #12852,作者:Ashim Bhattarai 和 Thomas Fan。特性 添加了新的排名指标
metrics.ndcg_score和metrics.dcg_score,用于计算折损累积增益 (Discounted Cumulative Gain) 和归一化折损累积增益 (Normalized Discounted Cumulative Gain)。 #9951,作者:Jérôme Dockès。特性 添加了
metrics.plot_precision_recall_curve以绘制精确召回曲线。 #14936,作者:Thomas Fan。特性 添加了
metrics.plot_confusion_matrix以绘制混淆矩阵。 #15083,作者:Thomas Fan。特性
metrics.roc_auc_score添加了多类支持,以及相应的评分器'roc_auc_ovr'、'roc_auc_ovo'、'roc_auc_ovr_weighted'和'roc_auc_ovo_weighted'。 #12789 和 #15274,作者:Kathy Chen、Mohamed Maskani 和 Thomas Fan。特性 添加了
metrics.mean_tweedie_deviance,用于测量给定power参数的 Tweedie 偏差。还添加了均值泊松偏差metrics.mean_poisson_deviance和均值伽马偏差metrics.mean_gamma_deviance,它们分别是power=1和power=2的 Tweedie 偏差的特例。 #13938,作者:Christian Lorentzen 和 Roman Yurchak。效率 改进了稀疏矩阵情况下
metrics.pairwise.manhattan_distances的性能。 #15049,作者:Paolo Toccaceli <ptocca>。增强
metrics.fbeta_score中的参数beta已更新为接受零和float('+inf')值。 #13231,作者:Dong-hee Na。增强 在
metrics.mean_squared_error中添加了参数squared,用于返回均方根误差。 #13467,作者:Urvang Patel。增强 允许在没有真正例的情况下计算平均指标。 #14595,作者:Andreas Müller。
增强 多标签指标现在支持列表的列表作为输入。 #14865,作者:Srivatsan Ramesh、Herilalaina Rakotoarison、Léonard Binet。
增强
metrics.median_absolute_error现在支持multioutput参数。 #14732,作者:Agamemnon Krasoulis。增强 “roc_auc_ovr_weighted” 和 “roc_auc_ovo_weighted” 现在可以用作模型选择工具的 scoring 参数。 #14417,作者:Thomas Fan。
增强
metrics.confusion_matrix接受参数normalize,允许按列、按行或整体归一化混淆矩阵。 #15625,作者:Guillaume Lemaitre <glemaitre>。修复 在
metrics.silhouette_score中,当预计算的距离矩阵包含非零对角线项时,引发 ValueError。 #12258,作者:Stephen Tierney。API 变更 应使用
scoring="neg_brier_score",而不是现在已弃用的scoring="brier_score_loss"。 #14898,作者:Stefan Matcovici。
sklearn.model_selection#
效率 提高了
model_selection.cross_validate、model_selection.GridSearchCV和model_selection.RandomizedSearchCV中多指标评分的性能。 #14593,作者:Thomas Fan。增强
model_selection.learning_curve现在接受参数return_times,可用于检索计算时间以绘制模型可伸缩性(参见 learning_curve 示例)。 #13938,作者:Hadrien Reboul。增强
model_selection.RandomizedSearchCV现在接受参数分布列表。 #14549,作者:Andreas Müller。修复 重新实现了
model_selection.StratifiedKFold,以修复一个测试集可能比另一个测试集大n_classes的问题。现在测试集的大小应该近似相等。 #14704,作者:Joel Nothman。修复
model_selection.GridSearchCV和model_selection.RandomizedSearchCV的cv_results_属性现在只包含未拟合的估计器。这可能会节省大量内存,因为估计器的状态不会被存储。 ##15096,作者:Andreas Müller。API 变更 如果设置了
random_state但shuffle为 False,model_selection.KFold和model_selection.StratifiedKFold现在会发出警告。这将在 0.24 版本中引发错误。
sklearn.multioutput#
修复
multioutput.MultiOutputClassifier现在具有属性classes_。 #14629,作者:Agamemnon Krasoulis。修复
multioutput.MultiOutputClassifier现在将predict_proba作为属性,并且可以使用hasattr进行检查。 #15488 #15490,作者:Rebekah Kim
sklearn.naive_bayes#
主要特性 添加了
naive_bayes.CategoricalNB,它实现了分类朴素贝叶斯分类器。 #12569,作者:Tim Bicker 和 Florian Wilhelm。
sklearn.neighbors#
主要特性 添加了
neighbors.KNeighborsTransformer和neighbors.RadiusNeighborsTransformer,它们将输入数据集转换为稀疏邻居图。它们对最近邻计算提供了更精细的控制,并支持方便的管道缓存以供多次使用。 #10482,作者:Tom Dupre la Tour。特性
neighbors.KNeighborsClassifier、neighbors.KNeighborsRegressor、neighbors.RadiusNeighborsClassifier、neighbors.RadiusNeighborsRegressor和neighbors.LocalOutlierFactor现在接受预计算的稀疏邻居图作为输入。 #10482,作者:Tom Dupre la Tour 和 Kumar Ashutosh。特性
neighbors.RadiusNeighborsClassifier现在通过使用predict_proba支持预测概率,并支持更多异常值标签选项:“most_frequent”或针对多输出的不同异常值标签。 #9597,作者:Wenbo Zhao。效率 提高了
neighbors.RadiusNeighborsClassifier.predict的效率。 #9597,作者:Wenbo Zhao。修复
neighbors.KNeighborsRegressor现在当metric='precomputed'且在非方数据上拟合时会抛出错误。 #14336,作者:Gregory Dexter。
sklearn.neural_network#
特性 在
neural_network.BaseMultilayerPerceptron、neural_network.MLPRegressor和neural_network.MLPClassifier中添加了max_fun参数,用于控制最大函数评估次数,以避免不满足tol改进。 #9274,作者:Daniel Perry。
sklearn.pipeline#
增强
pipeline.Pipeline现在支持 score_samples,如果最终估计器支持的话。 #13806,作者:Anaël Beaugnon。修复
FeatureUnion中的fit现在接受fit_params以传递给底层转换器。 #15119,作者:Adrin Jalali。API 变更
pipeline.FeatureUnion中已弃用将None作为转换器使用。请改用'drop'。 #15053,作者:Thomas Fan。
sklearn.preprocessing#
效率 当输入数据是密集时,
preprocessing.PolynomialFeatures现在更快。 #13290,作者:Xavier Dupré。增强 在拟合预处理器
preprocessing.StandardScaler、preprocessing.MinMaxScaler、preprocessing.MaxAbsScaler、preprocessing.RobustScaler和preprocessing.QuantileTransformer时避免不必要的数据复制,从而略微提高了性能。 #13987,作者:Roman Yurchak。修复 KernelCenterer 在拟合非方形
preprocessing.KernelCenterer时会抛出错误。 #14336,作者:Gregory Dexter。
sklearn.model_selection#
修复
model_selection.GridSearchCV和model_selection.RandomizedSearchCV现在支持_pairwise属性,这可以防止在交叉验证期间,对于具有成对输入(例如当 metric 设置为“precomputed”时的neighbors.KNeighborsClassifier)的估计器出现错误。 #13925,作者:Isaac S. Robson,以及 #15524,作者:Xun Tang。
sklearn.svm#
增强
svm.SVC和svm.NuSVC现在接受break_ties参数。如果decision_function_shape='ovr'且目标类别数 > 2,此参数会导致 predict 根据 decision_function 的置信度值打破平局。 #12557,作者:Adrin Jalali。增强 SVM 估计器现在在
kernel='precomputed'且在非方数据上拟合时,会抛出更具体的错误。 #14336,作者:Gregory Dexter。修复
svm.SVC、svm.SVR、svm.NuSVR和svm.OneClassSVM在方法 fit() 中收到sample_weight参数的负值或零值时,会生成无效模型。此行为仅在某些边界情况下发生。现在在这些情况下,fit() 将因异常而失败。 #14286,作者:Alex Shacked。修复
svm.SVR和svm.OneClassSVM的n_support_属性以前未初始化,大小为 2。现在它的大小为 1,并具有正确的值。 #15099,作者:Nicolas Hug。修复 修复了
BaseLibSVM._sparse_fit中的一个错误,其中 n_SV=0 会引发 ZeroDivisionError。 #14894,作者:Danna Naser。修复 liblinear 求解器现在支持
sample_weight。 #15038,作者:Guillaume Lemaitre。
sklearn.tree#
特性 向
tree.DecisionTreeClassifier、tree.DecisionTreeRegressor、tree.ExtraTreeClassifier、tree.ExtraTreeRegressor、ensemble.RandomForestClassifier、ensemble.RandomForestRegressor、ensemble.ExtraTreesClassifier、ensemble.ExtraTreesRegressor、ensemble.GradientBoostingClassifier和ensemble.GradientBoostingRegressor添加了由ccp_alpha控制的最小代价复杂度剪枝。 #12887,作者:Thomas Fan。API 变更
tree.DecisionTreeClassifier和tree.DecisionTreeRegressor中的presort现已弃用,并且该参数不起作用。 #14907,作者:Adrin Jalali。API 变更
tree.DecisionTreeRegressor的classes_和n_classes_属性现已弃用。 #15028,作者:Mei Guan、Nicolas Hug 和 Adrin Jalali。
sklearn.utils#
特性
check_estimator现在可以通过设置generate_only=True生成检查。以前,运行check_estimator会在第一次检查失败时停止。使用generate_only=True,所有检查都可以独立运行并报告失败的检查。在 自定义估计器 中阅读更多内容。 #14381,作者:Thomas Fan。特性 添加了一个 pytest 专用装饰器
parametrize_with_checks,用于参数化估计器列表的估计器检查。 #14381,作者:Thomas Fan。特性 一个新的随机变量
utils.fixes.loguniform实现了一个对数均匀随机变量(例如,用于 RandomizedSearchCV)。例如,对于loguniform(1, 100),结果1、10和100的可能性都相同。参见 #11232,作者:Scott Sievert 和 Nathaniel Saul,以及 SciPy PR 10815。增强
utils.safe_indexing(现已弃用)接受axis参数,用于在行和列上索引类数组。列索引可以在 NumPy 数组、SciPy 稀疏矩阵和 Pandas DataFrame 上完成。还进行了一项额外的重构。 #14035 和 #14475,作者:Guillaume Lemaitre。增强
utils.extmath.safe_sparse_dot适用于 3D+ ndarray 和稀疏矩阵之间。 #14538,作者:Jérémie du Boisberranger。修复
utils.check_array现在会引发错误而不是将 NaN 转换为整数。 #14872,作者:Roman Yurchak。修复
utils.check_array现在将正确检测 pandas 数据框中的数字 dtype,修复了float32不必要地向上转换为float64的错误。 #15094,作者:Andreas Müller。API 变更 以下实用程序已被弃用,现在是私有的
choose_check_classifiers_labelsenforce_estimator_tags_ymocking.MockDataFramemocking.CheckingClassifieroptimize.newton_cgrandom.random_choice_cscutils.choose_check_classifiers_labelsutils.enforce_estimator_tags_yutils.optimize.newton_cgutils.random.random_choice_cscutils.safe_indexingutils.mockingutils.fast_dictutils.seq_datasetutils.weight_vectorutils.fixes.parallel_helper(已移除)所有
utils.testing,除了all_estimators,后者现在位于utils中。
sklearn.isotonic#
修复 修复了
isotonic.IsotonicRegression.fit在X.dtype == 'float32'且X.dtype != y.dtype时引发错误的 bug。 #14902,作者:Lucas。
杂项#
修复 从 SciPy 移植了
lobpcg,它实现了一些 bug 修复,但仅在 1.3+ 版本中可用。 #13609 和 #14971,作者:Guillaume Lemaitre。API 变更 Scikit-learn 现在将任何实现 duck 数组的输入数据结构转换为 numpy 数组(使用
__array__),以确保一致的行为,而不是依赖__array_function__(参见 NEP 18)。 #14702,作者:Andreas Müller。API 变更 将手动检查替换为
check_is_fitted。现在,使用未拟合的估计器时抛出的错误更加统一。 #13013,作者:Agamemnon Krasoulis。
估计器检查的更改#
这些更改主要影响库开发人员。
现在,如果
predict或transform在fit之前被调用,估计器应引发NotFittedError;以前AttributeError或ValueError是可接受的。 #13013,作者:Agamemnon Krasoulis。估计器检查现在支持仅二进制分类器。此类分类器需要具有
binary_only=True估计器标签。 #13875,作者:Trevor Stephens。估计器应将输入数据(
X、y、sample_weights)转换为numpy.ndarray,并且永远不要在传递的原始数据类型上调用__array_function__(参见 NEP 18)。 #14702,作者:Andreas Müller。requires_positive_X估计器标签(适用于要求 X 非负的模型)现在由utils.estimator_checks.check_estimator使用,以确保如果 X 包含负值,则会引发适当的错误消息。 #14680,作者:Alex Gramfort。添加了对成对估计器在非方形数据上引发错误的检查 #14336,作者:Gregory Dexter。
添加了两个常见的多输出估计器测试
utils.estimator_checks.check_classifier_multioutput和utils.estimator_checks.check_regressor_multioutput。 #13392,作者:Rok Mihevc。修复 添加了
check_transformer_data_not_an_array到缺失的检查中修复 估计器标签解析现在遵循常规 MRO。以前它们只能被覆盖一次。 #14884,作者:Andreas Müller。
代码和文档贡献者
感谢自 0.21 版本以来为项目的维护和改进做出贡献的每个人,包括
Aaron Alphonsus, Abbie Popa, Abdur-Rahmaan Janhangeer, abenbihi, Abhinav Sagar, Abhishek Jana, Abraham K. Lagat, Adam J. Stewart, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Alec Peters, Alessandro Surace, Alexandre de Siqueira, Alexandre Gramfort, alexgoryainov, Alex Henrie, Alex Itkes, alexshacked, Allen Akinkunle, Anaël Beaugnon, Anders Kaseorg, Andrea Maldonado, Andrea Navarrete, Andreas Mueller, Andreas Schuderer, Andrew Nystrom, Angela Ambroz, Anisha Keshavan, Ankit Jha, Antonio Gutierrez, Anuja Kelkar, Archana Alva, arnaudstiegler, arpanchowdhry, ashimb9, Ayomide Bamidele, Baran Buluttekin, barrycg, Bharat Raghunathan, Bill Mill, Biswadip Mandal, blackd0t, Brian G. Barkley, Brian Wignall, Bryan Yang, c56pony, camilaagw, cartman_nabana, catajara, Cat Chenal, Cathy, cgsavard, Charles Vesteghem, Chiara Marmo, Chris Gregory, Christian Lorentzen, Christos Aridas, Dakota Grusak, Daniel Grady, Daniel Perry, Danna Naser, DatenBergwerk, David Dormagen, deeplook, Dillon Niederhut, Dong-hee Na, Dougal J. Sutherland, DrGFreeman, Dylan Cashman, edvardlindelof, Eric Larson, Eric Ndirangu, Eunseop Jeong, Fanny, federicopisanu, Felix Divo, flaviomorelli, FranciDona, Franco M. Luque, Frank Hoang, Frederic Haase, g0g0gadget, Gabriel Altay, Gabriel do Vale Rios, Gael Varoquaux, ganevgv, gdex1, getgaurav2, Gideon Sonoiya, Gordon Chen, gpapadok, Greg Mogavero, Grzegorz Szpak, Guillaume Lemaitre, Guillem García Subies, H4dr1en, hadshirt, Hailey Nguyen, Hanmin Qin, Hannah Bruce Macdonald, Harsh Mahajan, Harsh Soni, Honglu Zhang, Hossein Pourbozorg, Ian Sanders, Ingrid Spielman, J-A16, jaehong park, Jaime Ferrando Huertas, James Hill, James Myatt, Jay, jeremiedbb, Jérémie du Boisberranger, jeromedockes, Jesper Dramsch, Joan Massich, Joanna Zhang, Joel Nothman, Johann Faouzi, Jonathan Rahn, Jon Cusick, Jose Ortiz, Kanika Sabharwal, Katarina Slama, kellycarmody, Kennedy Kang’ethe, Kensuke Arai, Kesshi Jordan, Kevad, Kevin Loftis, Kevin Winata, Kevin Yu-Sheng Li, Kirill Dolmatov, Kirthi Shankar Sivamani, krishna katyal, Lakshmi Krishnan, Lakshya KD, LalliAcqua, lbfin, Leland McInnes, Léonard Binet, Loic Esteve, loopyme, lostcoaster, Louis Huynh, lrjball, Luca Ionescu, Lutz Roeder, MaggieChege, Maithreyi Venkatesh, Maltimore, Maocx, Marc Torrellas, Marie Douriez, Markus, Markus Frey, Martina G. Vilas, Martin Oywa, Martin Thoma, Masashi SHIBATA, Maxwell Aladago, mbillingr, m-clare, Meghann Agarwal, m.fab, Micah Smith, miguelbarao, Miguel Cabrera, Mina Naghshhnejad, Ming Li, motmoti, mschaffenroth, mthorrell, Natasha Borders, nezar-a, Nicolas Hug, Nidhin Pattaniyil, Nikita Titov, Nishan Singh Mann, Nitya Mandyam, norvan, notmatthancock, novaya, nxorable, Oleg Stikhin, Oleksandr Pavlyk, Olivier Grisel, Omar Saleem, Owen Flanagan, panpiort8, Paolo, Paolo Toccaceli, Paresh Mathur, Paula, Peng Yu, Peter Marko, pierretallotte, poorna-kumar, pspachtholz, qdeffense, Rajat Garg, Raphaël Bournhonesque, Ray, Ray Bell, Rebekah Kim, Reza Gharibi, Richard Payne, Richard W, rlms, Robert Juergens, Rok Mihevc, Roman Feldbauer, Roman Yurchak, R Sanjabi, RuchitaGarde, Ruth Waithera, Sackey, Sam Dixon, Samesh Lakhotia, Samuel Taylor, Sarra Habchi, Scott Gigante, Scott Sievert, Scott White, Sebastian Pölsterl, Sergey Feldman, SeWook Oh, she-dares, Shreya V, Shubham Mehta, Shuzhe Xiao, SimonCW, smarie, smujjiga, Sönke Behrends, Soumirai, Sourav Singh, stefan-matcovici, steinfurt, Stéphane Couvreur, Stephan Tulkens, Stephen Cowley, Stephen Tierney, SylvainLan, th0rwas, theoptips, theotheo, Thierno Ibrahima DIOP, Thomas Edwards, Thomas J Fan, Thomas Moreau, Thomas Schmitt, Tilen Kusterle, Tim Bicker, Timsaur, Tim Staley, Tirth Patel, Tola A, Tom Augspurger, Tom Dupré la Tour, topisan, Trevor Stephens, ttang131, Urvang Patel, Vathsala Achar, veerlosar, Venkatachalam N, Victor Luzgin, Vincent Jeanselme, Vincent Lostanlen, Vladimir Korolev, vnherdeiro, Wenbo Zhao, Wendy Hu, willdarnell, William de Vazelhes, wolframalpha, xavier dupré, xcjason, x-martian, xsat, xun-tang, Yinglr, yokasre, Yu-Hang “Maxin” Tang, Yulia Zamriy, Zhao Feng