版本 1.7#
有关此版本主要亮点的简要说明,请参阅scikit-learn 1.7 的发布亮点。
更新日志图例
主要功能 以前无法实现的重大功能。
功能 以前无法实现的功能。
效率 现有功能现在可能不需要那么多计算或内存。
增强 杂项小改进。
修复 以前未按文档说明或合理预期工作的功能现在应该可以工作了。
API 变更 未来您需要更改代码以达到相同效果;或者某个功能将在未来移除。
版本 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#
修复 当传入
cv="prefit” 时,CalibratedClassifierCV现在会引发FutureWarning而不是UserWarning。由 Olivier Grisel当传递
float64类型sample_weight以及输出float32类型预测的基础估计器时,使用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现在允许在特征选择的每次迭代和交叉验证步骤中访问排名和支持。由 Marie S. #30179修复 当估计器是
linear_model.ElasticNetCV的实例且其l1_ratio参数为类数组时,feature_selection.SelectFromModel现在能正确工作。由 Vasco Pereira。 #31107
sklearn.gaussian_process#
增强
gaussian_process.GaussianProcessClassifier现在包含一个latent_mean_and_variance方法,该方法公开了在拉普拉斯近似中使用的潜在函数 \(f\) 的均值和方差。由 Miguel González Duque #22227
sklearn.inspection#
增强 在
inspection.partial_dependence中添加custom_values参数。它允许用户传入自定义的值网格来计算偏依赖。由 Freddy A. Boulton 和 Stephen Pardy #26202增强 当
response_method为 ‘decision_function’、‘predict_proba’ 或 ‘auto’ 时,inspection.DecisionBoundaryDisplay现在支持绘制多类别问题的所有类别。由 Lucy Liu #29797修复 当将空列表作为
categorical_features参数传入时,inspection.partial_dependence现在会引发一个有信息量的错误。应使用None来指示不存在分类特征。由 Pedro Lopes。 #31146API 变更
inspection.partial_dependence不再接受数值特征列的整数数据类型。现在,在调用此工具之前(最好甚至在拟合要检查的模型之前)需要显式转换为浮点值。由 Olivier Grisel #30409
sklearn.linear_model#
增强 当
penalty不为"elasticnet"时,linear_model.SGDClassifier和linear_model.SGDRegressor现在接受l1_ratio=None。由 Marc Bresson。 #30730增强 使用
fit_intercept=True拟合linear_model.Lasso和linear_model.ElasticNet对于稀疏输入X来说更快,因为避免了残差和不必要的重新计算。由 Christian Lorentzen #31387修复 当使用
class_weight="balanced"进行拟合时,linear_model.LogisticRegression和linear_model.LogisticRegressionCV现在正确地将样本权重传递给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修复 当
n_samples < n_features时,linear_model.BayesianRidge现在使用完整的 SVD 来正确估计后验协方差矩阵sigma_。由 Antoine Baker #31094API 变更 参数
n_alphas已在以下类中弃用:linear_model.ElasticNetCV、linear_model.LassoCV、linear_model.MultiTaskElasticNetCV和linear_model.MultiTaskLassoCV,并将在 1.9 版本中移除。参数alphas现在支持整数和类数组,从而不再需要n_alphas。从现在开始,只应设置alphas,以指示要自动生成的 alphas 数量(整数)或提供一个 alphas 列表(类数组)以沿着正则化路径进行测试。由 Siddharth Bansal。 #30616API 变更 在
linear_model.LogisticRegression和linear_model.LogisticRegressionCV中,将"liblinear"求解器用于一对多(one-versus-rest)方案的多类别分类已弃用,并将在 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实现了多类别分类问题的布里尔分数,并添加了scale_by_half参数。该指标对于评估概率分类器的锐度和校准都非常有用。有关更多详细信息,请参阅文档字符串。由 Varun Aggarwal、Olivier Grisel 和 Antoine Baker。 #22046功能 在
metrics.RocCurveDisplay中添加了类方法from_cv_results,该方法允许从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只能是一维的,长度与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修复
neural_network.MLPRegressor现在在设置了early_stopping且计算得到的验证集过小时会引发一个信息性错误。作者:David Shumway。#24788
sklearn.pipeline#
改进 在
pipeline.make_union函数中暴露了verbose_feature_names_out参数,允许用户控制pipeline.FeatureUnion中特征名称的唯一性。作者:Abhijeetsingh Meena #30406
sklearn.preprocessing#
改进 使用
strategy="uniform"的preprocessing.KBinsDiscretizer现在接受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, Adrien Linares, Adrin Jalali, Agriya Khetarpal, Aiden Frank, Aitsaid Azzedine Idir, ajay-sentry, Akanksha Mhadolkar, Alfredo Saucedo, Anderson Chaves, Andres Guzman-Ballen, Aniruddha Saha, antoinebaker, Antony Lee, Arjun S, ArthurDbrn, Arturo, Arturo Amor, ash, Ashton Powell, ayoub.agouzoul, 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], Dimitri Papadopoulos Orfanos, Dmitry Kobak, Domenico, Elham Babaei, emelia-hdz, EmilyXinyi, Emma Carballal, Eric Larson, fabianhenning, Gael Varoquaux, Gil Ramot, Gordon Grey, Goutam, G Sreeja, Guillaume Lemaitre, Haesun Park, 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, Josh, Kevin Klein, Loic Esteve, Lucas Colley, Luc Rocher, Lucy Liu, Luis M. B. Varona, lunovian, Mamduh Zabidi, Marc Bresson, Marco Edward Gorelli, Marco Maggi, Maren Westermann, Marie Sacksick, Martin Jurča, Miguel González Duque, Mihir Waknis, Mohamed Ali SRIR, Mohamed DHIFALLAH, mohammed benyamna, Mohit Singh Thakur, Mounir Lbath, myenugula, Natalia Mokeeva, Olivier Grisel, omahs, Omar Salman, Pedro Lopes, Pedro Olivares, Preyas Shah, Radovenchyk, Rahil Parikh, Rémi Flamary, Reshama Shaikh, Rishab Saini, rolandrmgservices, SanchitD, Santiago Castro, Santiago Víquez, scikit-learn-bot, Scott Huberty, Shruti Nath, Siddharth Bansal, Simarjot Sidhu, Sortofamudkip, sotagg, Sourabh Kumar, Stefan, Stefanie Senger, Stefano Gaspari, Stephen Pardy, Success Moses, Sylvain Combettes, Tahar Allouche, Thomas J. Fan, Thomas Li, ThorbenMaa, Tim Head, Umberto Fasci, UV, Vasco Pereira, Vassilis Margonis, Velislav Babatchev, Victoria Shevchenko, viktor765, Vipsa Kamani, Virgil Chan, vpz, Xiao Yuan, Yaich Mohamed, Yair Shimony, Yao Xiao, Yaroslav Halchenko, Yulia Vilensky, Yuvi Panda