版本 1.7#
有关版本主要亮点的简要说明,请参阅scikit-learn 1.7 发布亮点。
更新日志图例
重大功能 以前无法实现的大功能。
功能 以前无法实现的功能。
效率提升 现有功能现在可能不需要那么多计算或内存。
增强 一般性的小改进。
修复 以前无法按文档或合理预期工作的问题现在应该可以了。
API 变更 未来你需要更改代码才能达到相同的效果;或者未来某个功能将被移除。
版本 1.7.2#
2025 年 9 月
sklearn.compose#
修复
compose.TransformedTargetRegressor现在将转换后的目标传递给回归器,其维度与原始目标相同。由 kryggird 提交。 #31563
sklearn.feature_extraction#
修复 为
feature_extraction.FeatureHasher和feature_extraction.text.HashingVectorizer类设置标签requires_fit=False。由 hakan çanakcı 提交。 #31851
sklearn.impute#
修复 修复了
impute.SimpleImputer中使用strategy="most_frequent"时的一个错误,该错误发生在最频繁值出现平局且输入数据类型混合的情况下。由 Alexandre Abraham 提交。 #31820
sklearn.linear_model#
修复 修复了
linear_model.LogisticRegressionCV和linear_model.LogisticRegression在多类问题中使用solver="newton-cholesky"且warm_start=True时的错误。该错误在fit_intercept=True或penalty=None时出现(两者都会导致求解器参数未受惩罚)。通过 warm start 提供的最后一类的系数和截距被错误地部分覆盖为零。由 Christian Lorentzen 提交。 #31866
sklearn.pipeline#
修复
pipeline.FeatureUnion现在验证所有转换器都返回 2D 输出,并在转换器返回 1D 输出时引发信息性错误,从而防止以前产生无意义的连接结果的静默失败。由 gguiomar 提交。 #31559
版本 1.7.1#
2025 年 7 月
sklearn.base#
修复 修复了 HTML 表示中检测非默认数组类型参数时的回归问题。由 Dea María Léon 提交 #31528
sklearn.compose#
修复
compose.ColumnTransformer现在在混合 pandas Series 和 Dataframe 时正确保留非默认索引。由 Nicolas Bolle 提交。 #31079
sklearn.datasets#
修复 修复了阻止在
datasets.fetch_20newsgroups,datasets.fetch_20newsgroups_vectorized,datasets.fetch_lfw_people和datasets.fetch_lfw_pairs中提取下载数据集的回归问题。这仅影响 Python 版本>=3.10.0,<=3.10.11和>=3.11.0,<=3.11.3。由 Jérémie du Boisberranger 提交。 #31685
sklearn.inspection#
修复 修复了
inspection.DecisionBoundaryDisplay多类设置中的多个问题contour绘图现在正确显示决策边界。cmap和colors现在被正确忽略,转而使用multiclass_colors。现在完全支持线性分段颜色图。
由 Yunjie Lin 提交 #31553
sklearn.naive_bayes#
修复
naive_bayes.CategoricalNB现在正确声明它接受在其__sklearn_tags__方法返回的标签中具有分类特征。由 Olivier Grisel 提交 #31556
sklearn.utils#
修复 修复了在将
classes传递给utils.multiclass.type_of_target时可能出现的虚假警告(关于唯一类别的数量大于样本数量的 50%)。由 Sascha D. Krauss 提交。 #31584
版本 1.7.0#
2025 年 6 月
变更模型#
修复 更改内部依赖
"lbfgs"优化器的估计器的ConvergenceWarning消息,使其更具信息性,并避免在最大迭代次数不可由用户设置或在达到最大迭代次数之前发生收敛问题时建议增加最大迭代次数。由 Olivier Grisel 提交。 #31316
影响多个模块的变更#
稀疏更新:作为 SciPy 从 spmatrix 到 sparray 的更改的一部分,所有内部稀疏使用现在都支持 sparray 和 spmatrix。稀疏对象的所有操作都应适用于 spmatrix 或 sparray。这是向 sparray 迁移的第一步(参见 SciPy 迁移到 sparray)。由 Dan Schult 提交 #30858
支持 Array API#
已更新其他估计器和函数以包含对所有 Array API 兼容输入的支持。
有关详细信息,请参阅 Array API 支持(实验性)。
特性
sklearn.utils.check_consistent_length现在支持 Array API 兼容输入。由 Stefanie Senger 提交 #29519特性
sklearn.metrics.explained_variance_score和sklearn.metrics.mean_pinball_loss现在支持 Array API 兼容输入。由 Virgil Chan 提交 #29978特性
sklearn.metrics.fbeta_score、sklearn.metrics.precision_score和sklearn.metrics.recall_score现在支持 Array API 兼容输入。由 Omar Salman 提交 #30395特性
sklearn.utils.extmath.randomized_svd现在支持 Array API 兼容输入。由 Connor Lane 和 Jérémie du Boisberranger 提交。 #30819特性
sklearn.metrics.hamming_loss现在支持 Array API 兼容输入。由 Thomas Li 提交 #30838特性
preprocessing.Binarizer现在支持 Array API 兼容输入。由 Yaroslav Korobko、Olivier Grisel 和 Thomas Li 提交。 #31190特性
sklearn.metrics.jaccard_score现在支持 Array API 兼容输入。由 Omar Salman 提交 #31204array-api-compat 和 array-api-extra 现在在 scikit-learn 源代码中包含。实验性 array API 标准支持的用户不再需要在其环境中安装 array-api-compat。由 Lucas Colley 提交 #30340
元数据路由#
有关更多详细信息,请参阅 元数据路由用户指南。
特性
ensemble.BaggingClassifier和ensemble.BaggingRegressor现在通过它们的predict、predict_proba、predict_log_proba和decision_function方法支持元数据路由,并将**params传递给底层估计器。由 Stefanie Senger 提交。 #30833
sklearn.base#
增强
base.BaseEstimator现在在估计器的 HTML 表示中添加了一个参数表,可以使用 jupyter 进行可视化。由 Guillaume Lemaitre 和 Dea María Léon 提交 #30763
sklearn.calibration#
修复
CalibratedClassifierCV在传递cv="prefit” 时现在会引发FutureWarning而不是UserWarning。由 Olivier Grisel 提交当传递
float64-dtypedsample_weight以及输出float32-dtyped 预测的基础估计器时,使用method="sigmoid"的CalibratedClassifierCV不再崩溃。由 Olivier Grisel 提交 #30873
sklearn.compose#
API 更改
compose.ColumnTransformer和compose.make_column_transformer的force_int_remainder_cols参数已弃用,并将在 1.9 版本中移除。它没有效果。由 Jérémie du Boisberranger 提交 #31167
sklearn.covariance#
修复 已恢复对
sklearn.covariance.MinCovDet中n_samples == n_features的支持。由 Antony Lee 提交。 #30483
sklearn.datasets#
增强
datasets.make_classification中添加了新参数return_X_y。该参数的默认值不会改变函数的行为。由 Success Moses 和 Adam Cooper 提交 #30196
sklearn.decomposition#
特性
DictionaryLearning、SparseCoder和MiniBatchDictionaryLearning现在有一个inverse_transform方法。由 Rémi Flamary 提交 #30443
sklearn.ensemble#
特性
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor允许对用于早期停止的验证集进行更多控制。您现在可以通过参数X_val、y_val和sample_weight_val直接将数据传递给fit进行验证。由 Christian Lorentzen 提交。 #27124修复
ensemble.VotingClassifier和ensemble.VotingRegressor验证estimators以确保它是一个元组列表。由 Thomas Fan 提交。 #30649
sklearn.feature_selection#
增强
feature_selection.RFECV现在可以访问特征选择的每次迭代和 CV 步骤中的排名和支持。由 Marie S. 提交 #30179修复 当估计器是
linear_model.ElasticNetCV的实例且其l1_ratio参数是数组类型时,feature_selection.SelectFromModel现在可以正常工作。由 Vasco Pereira 提交。 #31107
sklearn.gaussian_process#
增强
gaussian_process.GaussianProcessClassifier现在包含一个latent_mean_and_variance方法,该方法公开了在 Laplace 近似中使用的潜在函数 \(f\) 的均值和方差。由 Miguel González Duque 提交 #22227
sklearn.inspection#
增强 在
inspection.partial_dependence中添加custom_values参数。它允许用户传递自己的值网格,在该网格上计算部分依赖性。由 Freddy A. Boulton 和 Stephen Pardy 提交 #26202增强
inspection.DecisionBoundaryDisplay现在支持在response_method为“decision_function”、“predict_proba”或“auto”时绘制多类问题的所有类。由 Lucy Liu 提交 #29797修复
inspection.partial_dependence在将空列表作为categorical_features参数传递时现在会引发信息性错误。应使用None来指示不存在分类特征。由 Pedro Lopes 提交。 #31146API 更改
inspection.partial_dependence不再接受数值特征列的整数数据类型。现在,在调用此工具之前(最好甚至在拟合要检查的模型之前),需要显式转换为浮点值。由 Olivier Grisel 提交 #30409
sklearn.linear_model#
增强
linear_model.SGDClassifier和linear_model.SGDRegressor现在在penalty不是"elasticnet"时接受l1_ratio=None。由 Marc Bresson 提交。 #30730效率 使用
fit_intercept=True拟合linear_model.Lasso和linear_model.ElasticNet对于稀疏输入X来说更快,因为避免了不必要的残差和重新计算。由 Christian Lorentzen 提交 #31387修复
linear_model.LogisticRegression和linear_model.LogisticRegressionCV在使用class_weight="balanced"拟合时,现在正确地将样本权重传递给utils.class_weight.compute_class_weight。由 Shruti Nath 和 Olivier Grisel 提交 #30057修复 在
linear_model.LinearRegression中添加了一个新参数tol,该参数决定了拟合稀疏数据时解coef_的精度。由 Success Moses 提交 #30521修复 在
linear_model.BayesianRidge中,超参数的更新和初始化现在正确处理样本权重。由 Antoine Baker 提交。 #30644修复
linear_model.BayesianRidge现在使用完整的 SVD 来正确估计后验协方差矩阵sigma_,当n_samples < n_features时。由 Antoine Baker 提交 #31094API 更改
n_alphas参数已在以下类中弃用:linear_model.ElasticNetCV和linear_model.LassoCV以及linear_model.MultiTaskElasticNetCV和linear_model.MultiTaskLassoCV,并将在 1.9 版本中移除。参数alphas现在支持整数和数组类型,无需n_alphas。从现在开始,只能将alphas设置为指示自动生成的 alpha 数量(整数)或提供要沿正则化路径测试的 alpha 列表(数组类型)。由 Siddharth Bansal 提交。 #30616API 更改 在
linear_model.LogisticRegression和linear_model.LogisticRegressionCV中,使用"liblinear"求解器进行多类分类(采用一对多方案)已弃用,并将在 1.8 版本中引发错误。要么使用支持多项式损失的求解器,要么将估计器包装在sklearn.multiclass.OneVsRestClassifier中以继续应用一对多方案。由 Jérémie du Boisberranger 提交。 #31241
sklearn.manifold#
增强 从 1.9 版本开始,
manifold.MDS将默认切换为使用n_init=1。由 Dmitry Kobak 提交 #31117修复
manifold.MDS现在正确处理非度量 MDS。此外,返回的应力值现在与返回的嵌入对应,并且现在允许度量 MDS 的归一化应力。由 Dmitry Kobak 提交 #30514修复
manifold.MDS现在默认使用eps=1e-6,并且收敛准则已调整,使其对度量和非度量 MDS 都有效,并遵循参考 R 实现。归一化应力的公式已调整,以遵循 Kruskal 的原始定义。由 Dmitry Kobak 提交 #31117
sklearn.metrics#
特性
metrics.brier_score_loss实现了多类分类问题的 Brier 分数,并添加了scale_by_half参数。此指标对于评估概率分类器的清晰度和校准特别有用。有关更多详细信息,请参阅文档字符串。由 Varun Aggarwal、Olivier Grisel 和 Antoine Baker 提交。 #22046特性 将类方法
from_cv_results添加到metrics.RocCurveDisplay,该方法允许从model_selection.cross_validate结果中轻松绘制多个 ROC 曲线。由 Lucy Liu 提交 #30399增强
metrics.det_curve、metrics.DetCurveDisplay.from_estimator和metrics.DetCurveDisplay.from_estimator现在接受drop_intermediate选项,以删除真实阳性 (tp) 不变或与前一个/后一个阈值相同的阈值。所有具有相同 tp 值的点在 DET 曲线中具有相同的fnr,因此具有相同的 y 坐标。由 Arturo Amor 提交 #29151增强
class_likelihood_ratios现在有一个replace_undefined_by参数。当出现除以零时,指标是未定义的,并返回LR+和LR-的设定值。由 Stefanie Senger 提交 #29288修复 如果
labels中缺少y_true的值,metrics.log_loss现在会引发ValueError。由 Varun Aggarwal、Olivier Grisel 和 Antoine Baker 提交。 #22046修复
metrics.det_curve和metrics.DetCurveDisplay现在返回一个额外的无限阈值,分类器始终预测负类,即 tps = fps = 0。由 Arturo Amor 提交 #29151修复 当发生除以零时,
class_likelihood_ratios现在会引发UndefinedMetricWarning而不是UserWarning。由 Stefanie Senger 提交 #29288修复 当
line_kwargs和chance_level_kw中的label都为None时,metrics.RocCurveDisplay将不再设置图例。由 Arturo Amor 提交 #29727修复
metrics.mean_absolute_error、metrics.mean_pinball_loss、metrics.mean_absolute_percentage_error、metrics.mean_squared_error、metrics.root_mean_squared_error、metrics.mean_squared_log_error、metrics.root_mean_squared_log_error、metrics.explained_variance_score、metrics.r2_score、metrics.mean_tweedie_deviance、metrics.mean_poisson_deviance、metrics.mean_gamma_deviance和metrics.d2_tweedie_score已添加额外的sample_weight检查。sample_weight只能是 1D,其长度与y_true和y_pred一致或为标量。由 Lucy Liu 提交。 #30886修复
d2_log_loss_score现在正确处理了传递labels且并非所有标签都存在于y_true中的情况。由 Vassilis Margonis 提交 #30903修复 修复了
metrics.adjusted_mutual_info_score在类别和样本数量较少时的数值问题。由 Hleb Levitski 提交 #31065API 更改
metrics.fowlkes_mallows_score的sparse参数已弃用,并将在 1.9 版本中移除。它没有效果。由 Luc Rocher 提交。 #28981API 更改
metrics.class_likelihood_ratios的raise_warning参数已弃用,并将在 1.9 版本中移除。在除以零的情况下,将始终引发UndefinedMetricWarning。由 Stefanie Senger 提交。 #29288API 更改 在
sklearn.metrics.RocCurveDisplay.from_predictions中,参数y_pred已重命名为y_score以更好地反映其用途。y_pred将在 1.9 版本中移除。由 Bagus Tris Atmaja 在 #29865 提交
sklearn.mixture#
特性 在
mixture.BaseMixture类中添加了一个属性lower_bounds_,用于保存每次迭代的下限列表,从而提供对混合模型(如mixture.GaussianMixture)收敛行为的见解。由 Manideep Yenugula 提交 #28559效率 在
GaussianMixture中使用covariance_type="spherical"或covariance_type="diag"估计协方差时,简化了冗余计算。由 Leonce Mekinda 和 Olivier Grisel 提交 #30414效率
GaussianMixture现在在使用float32数据拟合时,始终以float32精度运行,以提高训练速度和内存效率。以前,部分计算会隐式转换为float64。由 Olivier Grisel 和 Omar Salman 提交。 #30415
sklearn.model_selection#
修复 即使未启用元数据路由,超参数优化器(如
model_selection.GridSearchCV)现在也会将sample_weight转发给评分器。由 Antoine Baker 提交 #30743
sklearn.multiclass#
修复 当所有内部估计器都从未预测其正类时,
sklearn.multiclass.OneVsRestClassifier的predict_proba方法现在返回所有类的零。由 Luis M. B. Varona、Marc Bresson 和 Jérémie du Boisberranger 提交。 #31228
sklearn.multioutput#
增强 在
multioutput.RegressorChain和multioutput.ClassifierChain中,参数base_estimator已弃用,取而代之的是estimator。由 Success Moses 和 dikraMasrour 提交 #30152
sklearn.neural_network#
特性 在
neural_network.MLPClassifier和neural_network.MLPRegressor中添加了对sample_weight的支持。由 Zach Shu 和 Christian Lorentzen 提交 #30155特性 在
neural_network.MLPRegressor中添加了loss参数,选项包括"squared_error"(默认)和"poisson"(新增)。由 Christian Lorentzen 提交 #30712修复 当设置
early_stopping且计算出的验证集过小时,neural_network.MLPRegressor现在会引发信息性错误。由 David Shumway 提交。 #24788
sklearn.pipeline#
增强 在
pipeline.make_union函数中公开verbose_feature_names_out参数,允许用户控制pipeline.FeatureUnion中的特征名称唯一性。由 Abhijeetsingh Meena 提交 #30406
sklearn.preprocessing#
增强
preprocessing.KBinsDiscretizer在使用strategy="uniform"时现在接受sample_weight。此外,在使用strategy="quantile"时,现在可以指定quantile_method(未来quantile_method="averaged_inverted_cdf"将成为默认值)。由 Shruti Nath 和 Olivier Grisel 提交 #29907修复
preprocessing.KBinsDiscretizer现在在给定样本权重并使用子采样时使用加权重采样。这可能会改变结果,即使不使用样本权重,尽管是绝对值而不是统计特性方面。由 Shruti Nath 和 Jérémie du Boisberranger 提交 #29907修复 现在使用
scipy.stats.yeojohnson而不是我们自己实现的 Yeo-Johnson 变换。修复了当 scipy 版本为>= 1.12时,使用PowerTransformer(method="yeo-johnson")的 Yeo-Johnson 变换的数值稳定性(主要是溢出)。初始 PR 由 Xuefeng Xu 完成,由 Mohamed Yaich、Oussama Er-rabie、Mohammed Yaslam Dlimi、Hamza Zaroual、Amine Hannoun 和 Sylvain Marié 提交。 #31227
sklearn.svm#
修复
svm.LinearSVC在使用class_weight="balanced"拟合时,现在正确地将样本权重传递给utils.class_weight.compute_class_weight。由 Shruti Nath 提交 #30057
sklearn.utils#
增强 当唯一类别的数量大于样本数量的 50% 时,
utils.multiclass.type_of_target会引发警告。此警告仅在y具有超过 20 个样本时引发。由 Rahil Parikh 提交。 #26335增强 :func:
resample现在处理样本权重,允许加权重采样。由 Shruti Nath 和 Olivier Grisel 提交 #29907增强
utils.class_weight.compute_class_weight现在在使用策略“balanced”计算类别权重时,正确考虑样本权重。由 Shruti Nath 提交 #30057增强 主进程的警告过滤器被传播到 joblib 工作器。由 Thomas Fan 提交 #30380
增强 私有辅助函数
utils._safe_indexing现在正式支持 pyarrow 数据。例如,现在可以将 pyarrowTable作为X传递给compose.ColumnTransformer。由 Christian Lorentzen 提交 #31040修复 在
utils.estimator_checks中,我们现在强制二进制分类器使用二进制y,通过将最小值作为负类而不是第一个元素,这使其对y随机化具有鲁棒性。它防止了两个检查在二进制分类器上错误失败。由 Antoine Baker 提交。 #30775修复
utils.extmath.randomized_svd和utils.extmath.randomized_range_finder现在验证其输入数组,以便在无效输入时尽早失败并显示信息性错误消息。由 Connor Lane 提交。 #30819
代码和文档贡献者
感谢自 1.6 版本以来为项目维护和改进做出贡献的每个人,包括
4hm3d, Aaron Schumacher, Abhijeetsingh Meena, Acciaro Gennaro Daniele, Achraf Tasfaout, Adriano Leão, Adrien Linares, Adrin Jalali, Agriya Khetarpal, Aiden Frank, Aitsaid Azzedine Idir, ajay-sentry, Akanksha Mhadolkar, Alexandre Abraham, Alfredo Saucedo, Anderson Chaves, Andres Guzman-Ballen, Aniruddha Saha, antoinebaker, Antony Lee, Arjun S, ArthurDbrn, Arturo, Arturo Amor, ash, Ashton Powell, ayoub.agouzoul, Ayrat, Bagus Tris Atmaja, Benjamin Danek, Boney Patel, Camille Troillard, Chems Ben, Christian Lorentzen, Christian Veenhuis, Christine P. Chai, claudio, Code_Blooded, Colas, Colin Coe, Connor Lane, Corey Farwell, Daniel Agyapong, Dan Schult, Dea María Léon, Deepak Saldanha, dependabot[bot], Dhyey Findoriya, Dimitri Papadopoulos Orfanos, Dmitry Kobak, Domenico, elenafillo, Elham Babaei, emelia-hdz, EmilyXinyi, Emma Carballal, Eric Larson, Eugen-Bleck, Evgeni Burovski, fabianhenning, Gael Varoquaux, GaetandeCast, Gil Ramot, Gonçalo Guiomar, Gordon Grey, Goutam, G Sreeja, Guillaume Lemaitre, Haesun Park, hakan çanakcı, Hanjun Kim, Helder Geovane Gomes de Lima, Henri Bonamy, Hleb Levitski, Hugo Boulenger, IlyaSolomatin, Irene, Jérémie du Boisberranger, Jérôme Dockès, JoaoRodriguesIST, Joel Nothman, Joris Van den Bossche, Josh, jshn9515, KALLA GANASEKHAR, Kevin Klein, Krishnan Vignesh, kryggird, Loic Esteve, Lucas Colley, Luc Rocher, Lucy Liu, Luis M. B. Varona, lunovian, Mamduh Zabidi, Marc Bresson, Marco Edward Gorelli, Marco Maggi, Marek Pokropiński, Maren Westermann, Marie Sacksick, Marija Vlajic, Martin Jurča, Mayank Raj, Michael Burkhart, Miguel González Duque, Mihir Waknis, Miro Hrončok, Mohamed Ali SRIR, Mohamed DHIFALLAH, mohammed benyamna, Mohit Singh Thakur, Mounir Lbath, myenugula, Natalia Mokeeva, Nicolas Bolle, Olivier Grisel, omahs, Omar Salman, Pedro Lopes, Pedro Olivares, Peter Holzer, Prashant Bansal, Preyas Shah, Radovenchyk, Rahil Parikh, Rémi Flamary, Reshama Shaikh, Richard Harris, Rishab Saini, rolandrmgservices, SanchitD, Santiago Castro, Santiago Víquez, saskra, scikit-learn-bot, Scott Huberty, Shashank S, Shaurya Bisht, Shivam, Shruti Nath, Siddharth Bansal, SIKAI ZHANG, Simarjot Sidhu, sisird864, SiyuJin-1, Somdutta Banerjee, Sortofamudkip, sotagg, Sourabh Kumar, Stefan, Stefanie Senger, Stefano Gaspari, Steffen Rehberg, Stephen Pardy, Success Moses, Sylvain Combettes, Tahar Allouche, Thomas J. Fan, Thomas Li, ThorbenMaa, Tim Head, Tingwei Zhu, TJ Norred, Umberto Fasci, UV, Vasco Pereira, Vassilis Margonis, Velislav Babatchev, Victoria Shevchenko, viktor765, Vipsa Kamani, VirenPassi, Virgil Chan, vpz, Xiao Yuan, Yaich Mohamed, Yair Shimony, Yao Xiao, Yaroslav Halchenko, Yulia Vilensky, Yuvi Panda