版本 1.4#
有关此版本主要亮点的简短说明,请参阅 scikit-learn 1.4 的版本亮点。
变更日志图例
主要功能 以前无法实现的重要功能。
功能 以前无法实现的功能。
效率 现有功能现在可能不需要那么多的计算或内存。
增强 各种各样的次要改进。
修复 以前无法按文档说明(或根据合理预期)工作的内容现在应该可以工作了。
API 变更 您需要更改代码才能在将来获得相同的效果;或者某个功能将在将来被移除。
版本 1.4.2#
2024年4月
此版本仅包含对 numpy 2 的支持。
版本 1.4.1#
2024年2月
已更改的模型#
API 变更 在
tree.DecisionTreeClassifier、tree.DecisionTreeRegressor、tree.ExtraTreeClassifier和tree.ExtraTreeRegressor中的tree_.value属性已从样本数量的加权绝对计数更改为样本总数的加权分数。#27639 by Samuel Ronsin。
元数据路由#
修复 修复在另一个元估计器内部使用
ColumnTransformer时的路由问题。#28188 by Adrin Jalali。修复 当没有元数据传递给包含不支持元数据路由的子估计器的元估计器时,不会引发错误。#28256 by Adrin Jalali。
修复 修复
multioutput.MultiOutputRegressor和multioutput.MultiOutputClassifier以使其在启用元数据路由时可与不使用任何元数据的估计器一起使用。#28240 by Adrin Jalali。
DataFrame 支持#
增强 修复 Pandas 和 Polars DataFrame 直接进行验证,无需鸭子类型检查。#28195 by Thomas Fan。
影响许多模块的更改#
效率 修复 部分撤销 #28191 以避免依赖于稀疏矩阵的欧几里德成对计算的估计器的性能下降。受影响的估计器为
修复 修复了在使用
set_output且transform设置为pandas或polars时所有 scikit-learn 变换器的一个 bug。此 bug 可能会导致返回的数据框列名错误。 #28262 由 Guillaume Lemaitre 提供。修复 当用户尝试使用
StackingClassifier、StackingClassifier、StackingClassifier、SelectFromModel、RFE、SelfTrainingClassifier、OneVsOneClassifier、OutputCodeClassifier或OneVsRestClassifier中其子估计器未实现的方法时,AttributeError现在会在回溯中重新引发。 #28167 由 Stefanie Senger 提供。
变更日志#
sklearn.calibration#
修复
calibration.CalibratedClassifierCV支持来自内部估计器的 float32 输出的 predict_proba。 #28247 由 Thomas Fan 提供。
sklearn.cluster#
修复
cluster.AffinityPropagation现在避免为相等点分配多个不同的聚类。 #28121 由 Pietro Peterlongo 和 Yao Xiao 提供。修复 避免
cluster.KMeans在聚类数量大于非重复样本数量时出现无限循环。 #28165 由 Jérémie du Boisberranger 提供。
sklearn.compose#
修复 当
verbose_feature_names_out=True且变换器在内部多次使用相同的列时,compose.ColumnTransformer现在会转换为 polars 数据框。之前,由于列名重复,它会引发错误。 #28262 由 Guillaume Lemaitre 提供。
sklearn.ensemble#
修复 当在具有扩展数据类型的
pandasDataFrame(例如pd.Int64Dtype)上拟合HistGradientBoostingClassifier和HistGradientBoostingRegressor时的错误。 #28385 由 Loïc Estève 提供。修复 修复了当目标是 DataFrame 格式的多标签或多类多输出时,
ensemble.VotingClassifier引发的错误消息。 #27702 由 Guillaume Lemaitre 提供。
sklearn.impute#
修复:如果
fill_value不能使用casting='same_kind'转换为输入值的 dtype,则impute.SimpleImputer现在会在.fit和.transform中引发错误。 #28365 由 Leo Grinsztajn 提供。
sklearn.inspection#
已修复
inspection.permutation_importance现在可以正确处理sample_weight和子采样(即max_features< 1.0)。 #28184 由 Michael Mayer 完成。
sklearn.linear_model#
已修复
linear_model.ARDRegression现在可以处理predict(X, return_std=True)的pandas输入类型。 #28377 由 Eddie Bergman 完成。
sklearn.preprocessing#
已修复 使
preprocessing.FunctionTransformer更宽松,并在以下情况下使用get_feature_names_out覆盖输出列名:(i)输入和输出列名保持不变(在使用 NumPyufunc时发生);(ii)输入列名是数字;(iii)输出将设置为 Pandas 或 Polars 数据框。 #28241 由 Guillaume Lemaitre 完成。已修复
preprocessing.FunctionTransformer现在也会在使用set_output调用transform="polars"且func不返回 Polars 数据框或未指定feature_names_out时发出警告。 #28263 由 Guillaume Lemaitre 完成。已修复
preprocessing.TargetEncoder在target_type="continuous"且输入为只读时不再失败。特别是,它现在可以与启用 pandas 写时复制模式一起使用。 #28233 由 John Hopfensperger 完成。
sklearn.tree#
已修复
tree.DecisionTreeClassifier和tree.DecisionTreeRegressor正确处理缺失值。当数据中不存在缺失值时,内部标准未初始化,这可能导致标准值错误。 #28295 由 Guillaume Lemaitre 完成,以及 #28327 由 Adam Li 完成。
sklearn.utils#
增强 已修复
utils.metaestimators.available_if现在会将check函数中的错误作为AttributeError的原因重新引发。 #28198 由 Thomas Fan 完成。已修复
utils._safe_indexing现在在X是 Python 列表且axis=1时引发ValueError,如文档字符串中所述。 #28222 由 Guillaume Lemaitre 完成。
版本 1.4.0#
2024年1月
模型变更#
使用相同数据和参数拟合的以下估计器和函数,可能产生与先前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机抽样过程中的更改引起的。
效率提升
linear_model.LogisticRegression和linear_model.LogisticRegressionCV现在对于求解器"lbfgs"和"newton-cg"具有更好的收敛性。这两个求解器现在可以根据指定的tol达到了更高的系数精度。此外,lbfgs 可以更好地利用tol,即更快停止或达到更高的精度。注意:lbfgs 是默认求解器,因此此更改可能会影响许多模型。此更改还意味着,使用此新版本的 scikit-learn,这些两个求解器的模型的最终系数coef_和intercept_将会改变(再次拟合相同数据时)。变化量取决于指定的tol,对于较小的值,您将获得更精确的结果。 #26721 由 Christian Lorentzen 完成。修复 修复了在使用 Cython 损失函数的估计器中 PyPy 中发现的内存泄漏问题。 #27670 由 Guillaume Lemaitre 贡献。
影响所有模块的更改#
主要功能 变换器现在支持使用
set_output(transform="polars")输出 polars 数据。 #27315 由 Thomas Fan 贡献。增强 所有估计器现在都能够识别采用 DataFrame 交换协议 的任何数据框的列名。 通过
np.asarray(df)返回正确表示的数据框应该可以与我们的估计器和函数一起使用。 #26464 由 Thomas Fan 贡献。增强 估计器的 HTML 表示现在包含一个指向文档的链接,并使用颜色编码来表示估计器是否已拟合(未拟合的估计器为橙色,已拟合的估计器为蓝色)。 #26616 由 Riccardo Cappuzzo,Ines Ibnukhsein,Gael Varoquaux,Joel Nothman 和 Lilian Boulard 贡献。
修复 修复了大多数估计器和函数中的一个错误,该错误是在将参数设置为一个很大的整数时会导致
TypeError。 #26648 由 Naoise Holohan 贡献。
元数据路由#
以下模型现在支持在其一种或多种方法中进行元数据路由。 有关更多详细信息,请参阅 元数据路由用户指南。
功能
LarsCV和LassoLarsCV现在支持在其fit方法中进行元数据路由,并将元数据路由到 CV 分割器。 #27538 由 Omar Salman 贡献。功能
multiclass.OneVsRestClassifier,multiclass.OneVsOneClassifier和multiclass.OutputCodeClassifier现在支持在其fit和partial_fit方法中进行元数据路由,并将元数据路由到底层估计器的fit和partial_fit方法。 #27308 由 Stefanie Senger 贡献。功能
pipeline.Pipeline现在根据 元数据路由用户指南 支持元数据路由。 #26789 由 Adrin Jalali 贡献。功能
cross_validate,cross_val_score和cross_val_predict现在支持元数据路由。 元数据被路由到估计器的fit方法、评分器和 CV 分割器的split方法。 元数据通过新的params参数接受。fit_params已弃用,将在 1.6 版本中移除。当启用元数据路由时,groups参数也不作为单独的参数接受,应通过params参数传递。 #26896 由 Adrin Jalali 贡献。功能
GridSearchCV、RandomizedSearchCV、HalvingGridSearchCV和HalvingRandomSearchCV现在支持在其fit和score方法中进行元数据路由,并将元数据路由到底层估计器的fit方法、交叉验证拆分器和评分器。 #27058 由 Adrin Jalali 完成。功能
ColumnTransformer现在根据 元数据路由用户指南 支持元数据路由。 #27005 由 Adrin Jalali 完成。功能
linear_model.LogisticRegressionCV现在支持元数据路由。linear_model.LogisticRegressionCV.fit现在接受**params,这些参数将传递到底层拆分器和评分器。linear_model.LogisticRegressionCV.score现在接受**score_params,这些参数将传递到底层评分器。 #26525 由 Omar Salman 完成。功能
feature_selection.SelectFromModel现在支持在fit和partial_fit方法中进行元数据路由。 #27490 由 Stefanie Senger 完成。功能
linear_model.OrthogonalMatchingPursuitCV现在支持元数据路由。其fit方法现在接受**fit_params,这些参数将传递到底层拆分器。 #27500 由 Stefanie Senger 完成。功能
ElasticNetCV、LassoCV、MultiTaskElasticNetCV和MultiTaskLassoCV现在支持元数据路由,并将元数据路由到交叉验证拆分器。 #27478 由 Omar Salman 完成。修复 对于尚未实现元数据路由的所有元估计器,如果启用了元数据路由并且任何元数据传递给它们,则现在会在
get_metadata_routing和fit方法上引发NotImplementedError异常。 #27389 由 Adrin Jalali 完成。
SciPy 稀疏数组的支持#
现在几个估计器支持 SciPy 稀疏数组。以下函数和类受到影响
函数
cluster.compute_optics_graph在 #27104 由 Maren Westermann 完成,并在 #27250 由 Yao Xiao 完成;decomposition.non_negative_factorization在 #27100 由 Isaac Virshup 完成;feature_selection.f_regression在 #27239 由 Yaroslav Korobko 完成;feature_selection.r_regression在 #27239 由 Yaroslav Korobko 完成;由 萧瑶 在 #27250 中提交的
manifold.trustworthiness;由 萧瑶 在 #27240 中提交的
manifold.spectral_embedding;由 萧瑶 在 #27250 中提交的
metrics.pairwise_distances;由 萧瑶 在 #27250 中提交的
metrics.pairwise_distances_chunked;由 萧瑶 在 #27250 中提交的
metrics.pairwise.pairwise_kernels;由 萧瑶 在 #27274 中提交的
utils.multiclass.type_of_target。
类
由 萧瑶 在 #27250 中提交的
cluster.HDBSCAN;由 Nurseit Kamchyev 在 #27179 中提交的
cluster.KMeans;由 Nurseit Kamchyev 在 #27179 中提交的
cluster.MiniBatchKMeans;由 Maren Westermann 在 #27104 和 萧瑶 在 #27250 中提交的
cluster.OPTICS;由 Bharat Raghunathan 在 #27161 中提交的
cluster.SpectralClustering;由 Isaac Virshup 在 #27100 中提交的
decomposition.MiniBatchNMF;由 Isaac Virshup 在 #27100 中提交的
decomposition.NMF;由 萧瑶 在 #27219 中提交的
feature_extraction.text.TfidfTransformer;由 萧瑶 在 #27250 中提交的
manifold.Isomap;由 萧瑶 在 #27240 中提交的
manifold.SpectralEmbedding;由 萧瑶 在 #27250 中提交的
manifold.TSNE;由 萧瑶 在 #27277 中提交的
impute.SimpleImputer;由 萧瑶 在 #27277 中提交的
impute.IterativeImputer;由 萧瑶 在 #27277 中提交的
impute.KNNImputer;由 Lohit SundaramahaLingam 在 #27301 中提交的
kernel_approximation.PolynomialCountSketch;由 萧瑶 在 #27252 中提交的
neural_network.BernoulliRBM;由 Mohit Joshi 在 #27166 中提交的
preprocessing.PolynomialFeatures;在 #27314 中由 Stefanie Senger 添加的
random_projection.GaussianRandomProjection;在 #27314 中由 Stefanie Senger 添加的
random_projection.SparseRandomProjection。
对 Array API 的支持#
一些估计器和函数支持 Array API。这些更改允许使用其他库(例如 JAX、CuPy 和 PyTorch)中的估计器和函数。因此,这使得一些 GPU 加速计算成为可能。
更多详情请参见 Array API 支持(实验性)。
函数
在 #27137 中由 Edoardo Abati 添加的
sklearn.metrics.accuracy_score和sklearn.metrics.zero_one_loss;在 #26855 中由 Tim Head 添加的
sklearn.model_selection.train_test_split;在 #27601 中由 Yaroslav Korobko 添加的
is_multilabel。
类
针对
full和randomized求解器(使用 QR 幂迭代)的decomposition.PCA,在 #26315、#27098 和 #27431 中由 Mateusz Sokół、Olivier Grisel 和 Edoardo Abati 完成;在 #27556 中由 Edoardo Abati 添加的
preprocessing.KernelCenterer;在 #27110 中由 Edoardo Abati 添加的
preprocessing.MaxAbsScaler;在 #26243 中由 Tim Head 添加的
preprocessing.MinMaxScaler;在 #27558 中由 Edoardo Abati 添加的
preprocessing.Normalizer。
私有损失函数模块#
修复 二项式对数损失的梯度计算现在对于非常大(绝对值)的输入(原始预测)在数值上更稳定。之前,它可能会导致
np.nan。受益于此更改的模型包括ensemble.GradientBoostingClassifier、ensemble.HistGradientBoostingClassifier和linear_model.LogisticRegression。 #28048 由 Christian Lorentzen 完成。
变更日志#
sklearn.base#
增强
base.ClusterMixin.fit_predict和base.OutlierMixin.fit_predict现在接受**kwargs,这些参数将传递给估计器的fit方法。 #26506 由 Adrin Jalali 完成。增强
base.TransformerMixin.fit_transform和base.OutlierMixin.fit_predict现在如果transform/predict消耗元数据,但类中没有定义相应的自定义fit_transform/fit_predict,则会发出警告。 #26831 由 Adrin Jalali 完成。增强功能
base.clone现在支持dict作为输入并创建副本。 #26786 由 Adrin Jalali 完成。API 变更
process_routing现在具有不同的签名。前两个参数(对象和方法)仅接受位置参数,所有元数据都作为关键字参数传递。 #26909 由 Adrin Jalali 完成。
sklearn.calibration#
增强功能
calibration.CalibratedClassifierCV的sigmoid方法的内部目标函数和梯度已被私有损失模块取代。 #27185 由 Omar Salman 完成。
sklearn.cluster#
修复
cluster.SpectralClustering构造函数中的degree参数现在接受实数值,而不仅仅是整数值,这与sklearn.metrics.pairwise.polynomial_kernel的degree参数一致。 #27668 由 Nolan McMahon 完成。修复 修复了
cluster.OPTICS中的一个错误,该错误在于基于前驱的聚类校正没有使用正确的索引。这会导致根据数据顺序产生不一致的结果。 #26459 由 Haoying Zhang 和 Guillaume Lemaitre 完成。修复 改进了在
cluster.HDBSCAN的fit方法中检查连通分量数量时的错误消息。 #27678 由 Ganesh Tata 完成。修复 在
cluster.DBSCAN的fit方法中创建预计算稀疏矩阵的副本,以避免对稀疏矩阵进行就地修改。 #27651 由 Ganesh Tata 完成。修复 当
metric="precomputed"并通过参数store_centers请求存储中心时,会引发正确的ValueError。 #27898 由 Guillaume Lemaitre 完成。API 变更
cluster.HDBSCAN的algorithm参数中的kdtree和balltree值已被弃用,并分别重命名为kd_tree和ball_tree,以确保命名约定的一致性。kdtree和balltree值将在 1.6 版本中移除。 #26744 由 Shreesha Kumar Bhat 完成。API 变更
cluster.AgglomerativeClustering和cluster.FeatureAgglomeration中的metric=None选项在 1.4 版本中已弃用,并将 在 1.6 版本中移除。请改用默认值。 #27828 由 Guillaume Lemaitre 完成。
sklearn.compose#
主要功能 通过 DataFrame 交换协议,向
compose.ColumnTransformer添加了对 polars 输入的支持。polars 的最低支持版本为0.19.12。 #26683 由 Thomas Fan 完成。修复
cluster.spectral_clustering和cluster.SpectralClustering现在会抛出一个明确的错误信息,指出不支持稀疏矩阵和索引为np.int64的数组。 #27240 by 肖瑶.API变更 使用 pandas 扩展数据类型并包含
pd.NA的ColumnTransformer输出现在会产生一个FutureWarning警告,并在 1.6 版本中导致ValueError错误,除非输出容器已使用set_output(transform="pandas")配置为 “pandas”。之前,此类输出会导致包含pd.NA的 dtype 为object的 numpy 数组,这些数组无法转换为 numpy 浮点数,并在传递给其他 scikit-learn 估计器时导致错误。 #27734 by Jérôme Dockès.
sklearn.covariance#
增强 通过处理多维数组,允许
covariance.shrunk_covariance同时处理多个协方差矩阵。 #25275 by Quentin Barthélemy.API变更 修复
ColumnTransformer现在在拟合的transformers_属性中用相应的FunctionTransformer替换"passthrough"。 #27204 by Adrin Jalali.
sklearn.datasets#
增强
datasets.make_sparse_spd_matrix现在使用更节省内存的稀疏布局。它还接受一个新的关键字sparse_format,允许指定稀疏矩阵的输出格式。默认情况下sparse_format=None,这与之前一样返回密集的 numpy ndarray。 #27438 by 肖瑶.修复
datasets.dump_svmlight_file现在当X为只读时(例如,numpy.memmap实例)不会抛出ValueError错误。 #28111 by 肖瑶.API变更
datasets.make_sparse_spd_matrix已弃用关键字参数dim,而支持n_dim。dim将在 1.6 版本中移除。 #27718 by Adam Li.
sklearn.decomposition#
特性
decomposition.PCA现在使用arpack求解器时支持scipy.sparse.sparray和scipy.sparse.spmatrix输入。当用于稀疏数据(如datasets.fetch_20newsgroups_vectorized)时,这可以带来 100 倍的加速(单线程)和 70 倍的内存使用降低。基于 Alexander Tarashansky 在 scanpy 中的实现。 #18689 by Isaac Virshup 和 Andrey Portnoy.增强 一个 “auto” 选项已添加到
decomposition.non_negative_factorization、decomposition.NMF和decomposition.MiniBatchNMF的n_components参数中,以便在使用自定义初始化时根据 W 或 H 的形状自动推断组件数量。此参数的默认值将在 1.6 版本中从None更改为auto。 #26634 by Alexandre Landeau 和 Alexandre Vigny.修复
decomposition.dict_learning_online不再忽略max_iter参数。 #27834 由 Guillaume Lemaitre贡献。修复
decomposition.KernelPCA构造函数中的degree参数现在接受实数值,而不再仅限于整数值,这与sklearn.metrics.pairwise.polynomial_kernel的degree参数一致。 #27668 由 Nolan McMahon贡献。API变更
decomposition.MiniBatchDictionaryLearning、decomposition.MiniBatchSparsePCA和decomposition.dict_learning_online中的max_iter=None选项已弃用,并将在1.6版本中移除。请改用默认值。 #27834 由 Guillaume Lemaitre贡献。
sklearn.ensemble#
主要功能
ensemble.RandomForestClassifier和ensemble.RandomForestRegressor在判别标准为gini、entropy或log_loss(分类)或squared_error、friedman_mse或poisson(回归)时,支持缺失值。 #26391 由 Thomas Fan贡献。主要功能
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor支持categorical_features="from_dtype",该选项将使用Pandas或Polars Categorical数据类型的列作为算法中的类别特征。categorical_features="from_dtype"将在1.6版本中成为默认值。类别特征不再需要使用数字编码。当类别特征为数字时,最大值不再需要小于max_bins;只需要(唯一)类别的数量小于max_bins即可。#26411 由 Thomas Fan和 #27835 由 Jérôme Dockès贡献。主要功能
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor新增了max_features参数,用于指定每次分割时随机选择的特征比例。 #27139 由 Christian Lorentzen贡献。功能
ensemble.RandomForestClassifier、ensemble.RandomForestRegressor、ensemble.ExtraTreesClassifier和ensemble.ExtraTreesRegressor现在支持单调性约束,这在特征被认为对目标具有正/负影响时非常有用。训练数据中的缺失值和多输出目标不受支持。 #13649 由 Samuel Ronsin贡献,由 Patrick O’Reilly发起。效率提升 通过在减法技巧中复用父节点的直方图作为子节点的直方图,
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor的速度略有提升。实际上,减少了内存分配和释放的次数。 #27865 由 Christian Lorentzen 完成。效率提升 由于使用了私有损失函数模块,
ensemble.GradientBoostingClassifier的速度更快,尤其是在二元分类和多类别分类问题上。 #26278 和 #28095 由 Christian Lorentzen 完成。效率提升 在使用稀疏数据进行训练时,
ensemble.GradientBoostingClassifier和ensemble.GradientBoostingRegressor的运行时间和内存使用得到了改进。 #26957 由 Thomas Fan 完成。效率提升 当
scoring为metrics.get_scorer_names中列出的预定义指标且启用了提前停止时,ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor的速度更快。 #26163 由 Thomas Fan 完成。增强功能 所有森林方法(包括
ensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifier和ensemble.ExtraTreesRegressor)都添加了一个拟合属性estimators_samples_,用于检索每个树估计器使用的训练样本索引。 #26736 由 Adam Li 完成。错误修复 修复了当输入为稀疏矩阵且
contamination设置为浮点值时,ensemble.IsolationForest中的错误。 #27645 由 Guillaume Lemaitre 完成。错误修复 当请求具有多输出模型的 OOB 分数且目标值都被四舍五入为整数时,
ensemble.RandomForestRegressor和ensemble.ExtraTreesRegressor现在会抛出ValueError异常。之前将其识别为多类别问题。 #27817 由 Daniele Ongari 完成。错误修复 更改估计器标签以确认如果所有
estimators支持缺失值,则ensemble.VotingClassifier,ensemble.VotingRegressor,ensemble.StackingClassifier,ensemble.StackingRegressor也支持缺失值。 #27710 由 Guillaume Lemaitre 完成。错误修复 支持加载在不同位数平台上生成的
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor的 pickle 文件。一个典型的例子是在 64 位机器上训练和保存模型,然后在 32 位机器上加载模型进行预测。 #28074 由 Christian Lorentzen 和 Loïc Estève 完成。API 变更 在
ensemble.AdaBoostClassifier中,algorithm参数SAMME.R已弃用,将在 1.6 版本中移除。 #26830 由 Stefanie Senger 完成。
sklearn.feature_extraction#
sklearn.feature_selection#
增强
feature_selection.SelectKBest,feature_selection.SelectPercentile和feature_selection.GenericUnivariateSelect现在支持无监督特征选择,方法是提供一个接受X和y=None的score_func。 #27721 由 Guillaume Lemaitre 完成。增强 当
k大于特征数量时,带有mode='k_best'的feature_selection.SelectKBest和feature_selection.GenericUnivariateSelect现在会显示警告。 #27841 由 Thomas Fan 完成。修复
feature_selection.RFE和feature_selection.RFECV在输入验证期间不检查 NaN 值。 #21807 由 Thomas Fan 完成。
sklearn.inspection#
增强
inspection.DecisionBoundaryDisplay现在接受参数class_of_interest,用于在绘制由response_method="predict_proba"或response_method="decision_function"提供的响应时选择感兴趣的类别。它允许绘制二元和多类别分类器的决策边界。 #27291 由 Guillaume Lemaitre 完成。修复
inspection.DecisionBoundaryDisplay.from_estimator和inspection.PartialDependenceDisplay.from_estimator现在为子类返回正确的类型。 #27675 由 John Cant 完成。API 变更 当估计器未实现请求的响应方法时,
inspection.DecisionBoundaryDisplay抛出AttributeError而不是ValueError。 #27291 由 Guillaume Lemaitre 完成。
sklearn.kernel_ridge#
修复
kernel_ridge.KernelRidge构造函数中的degree参数现在接受实数值,而不再仅仅接受整数值,这与sklearn.metrics.pairwise.polynomial_kernel的degree参数一致。 #27668 由 Nolan McMahon 完成。
sklearn.linear_model#
效率提升
linear_model.LogisticRegression和linear_model.LogisticRegressionCV现在对于求解器"lbfgs"和"newton-cg"具有更好的收敛性。这两个求解器现在可以根据指定的tol达成更高的系数精度。此外,lbfgs 可以更好地利用tol,即更快停止或达到更高的精度。这是通过更好地缩放目标函数实现的,即使用每个样本损失的平均值而不是每个样本损失的总和。 #26721 由 Christian Lorentzen 完成。效率提升 使用求解器
"newton-cg"的linear_model.LogisticRegression和linear_model.LogisticRegressionCV现在对于某些数据和参数设置可以更快。这是通过更好的线搜索收敛检查实现的,该检查考虑了梯度信息以应对可忽略的损失改进。 #26721 由 Christian Lorentzen 完成。效率提升
linear_model.LogisticRegression和linear_model.LogisticRegressionCV中的求解器"newton-cg"现在使用的内存略少。效果与系数数量成正比(n_features * n_classes)。 #27417 由 Christian Lorentzen 完成。修复 确保
linear_model.ARDRegression和linear_model.BayesianRidge的sigma_属性在使用float32数据拟合时始终具有float32数据类型,即使使用 NumPy 2 的类型提升规则也是如此。 #27899 由 Olivier Grisel 完成。API 变更
linear_model.SGDClassifier和linear_model.SGDOneClassSVM的属性loss_function_已弃用,将在 1.6 版本中删除。 #27979 由 Christian Lorentzen 完成。
sklearn.metrics#
效率提升 通过
metrics.DistanceMetric计算 CSR x CSR、Dense x CSR 和 CSR x Dense 数据集的成对距离现在快了 1.5 倍。 #26765 由 Meekail Zain 完成。效率提升 通过
metrics.DistanceMetric计算 CSR x CSR、Dense x CSR 和 CSR x Dense 距离现在使用的内存减少了约 50%,并且输出距离的数据类型与提供的数据相同。 #27006 由 Meekail Zain 完成。增强 改善了使用
metrics.PrecisionRecallDisplay和metrics.RocCurveDisplay类获得的绘图的呈现效果。x 轴和 y 轴的限制设置为 [0, 1],并且两个轴之间的纵横比设置为 1 以获得正方形绘图。 #26366 由 Mojdeh Rastgoo 完成。增强 添加了
neg_root_mean_squared_log_error_scorer作为评分器 #26734 由 Alejandro Martin Gil 完成。增强
metrics.confusion_matrix现在会在y_true和y_pred中只找到一个标签时发出警告。 #27650 by Lucy Liu.修复 使用
metrics.pairwise.euclidean_distances计算成对距离时,当X为float64数组且X_norm_squared为float32数组时,不再引发异常。 #27624 by Jérôme Dockès.修复
f1_score现在通过使用不依赖于精确率和召回率值的公式,在处理各种除零情况时提供正确的值。 #27577 by Omar Salman and Guillaume Lemaitre.修复
metrics.make_scorer现在在回归器上使用请求非阈值决策函数(来自decision_function或predict_proba)的评分器时会引发错误。此类评分器特定于分类。 #26840 by Guillaume Lemaitre.修复
metrics.DetCurveDisplay.from_predictions,metrics.PrecisionRecallDisplay.from_predictions,metrics.PredictionErrorDisplay.from_predictions和metrics.RocCurveDisplay.from_predictions现在为子类返回正确的类型。 #27675 by John Cant.API变更 已弃用
metrics.make_scorer中的needs_threshold和needs_proba。这些参数将在 1.6 版中删除。请改用接受"predict"、"predict_proba"或"decision_function"或此类值的列表的response_method。needs_proba=True等效于response_method="predict_proba",而needs_threshold=True等效于response_method=("decision_function", "predict_proba")。 #26840 by Guillaume Lemaitre.API变更
metrics.mean_squared_error和metrics.mean_squared_log_error的squared参数已弃用,并将在 1.6 版中删除。请改用新的函数metrics.root_mean_squared_error和metrics.root_mean_squared_log_error。 #26734 by Alejandro Martin Gil.
sklearn.model_selection#
增强
model_selection.learning_curve在每次交叉验证折叠都失败时会发出警告。 #26299 by Rahil Parikh.修复
model_selection.GridSearchCV,model_selection.RandomizedSearchCV和model_selection.HalvingGridSearchCV现在如果参数网格中的对象是估计器,则不会更改该对象。 #26786 by Adrin Jalali.
sklearn.multioutput#
增强 为
multioutput.ClassifierChain添加方法predict_log_proba。 #27720 由 Guillaume Lemaitre 贡献。
sklearn.neighbors#
效率提升
sklearn.neighbors.KNeighborsRegressor.predict和sklearn.neighbors.KNeighborsClassifier.predict_proba现在高效地支持稠密和稀疏数据集对。 #27018 由 Julien Jerphanion 贡献。效率提升 当
radius很大且使用非欧几里德度量时,algorithm="brute"的neighbors.RadiusNeighborsClassifier.predict和neighbors.RadiusNeighborsClassifier.predict_proba的性能得到了改进。 #26828 由 Omar Salman 贡献。修复 改进了
neighbors.LocalOutlierFactor在使用n_samples=n_neighbors时显示的错误信息。 #23317 由 Bharat Raghunathan 贡献。修复 当某个样本的所有邻居的权重都为零时,
neighbors.KNeighborsClassifier.predict和neighbors.KNeighborsClassifier.predict_proba现在会抛出异常。当weights是用户自定义函数时,可能会发生这种情况。 #26410 由 Yao Xiao 贡献。API变更
neighbors.KNeighborsRegressor现在通过metric关键字参数直接接受metrics.DistanceMetric对象,从而可以使用加速的第三方metrics.DistanceMetric对象。 #26267 由 Meekail Zain 贡献。
sklearn.preprocessing#
效率提升
preprocessing.OrdinalEncoder避免重复计算缺失索引以提高效率。 #27017 由 Xuefeng Xu 贡献。效率提升 提高了
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder中检查nan的效率。 #27760 由 Xuefeng Xu 贡献。增强 当
func返回 pandas 数据框并且输出配置为 pandas 时,改进了preprocessing.FunctionTransformer中的警告信息。 #26944 由 Thomas Fan 贡献。增强
preprocessing.TargetEncoder现在支持target_type‘multiclass’。 #26674 由 Lucy Liu 贡献。修复 当
nan是一个类别且不是用户提供的类别中的最后一个时,preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder会抛出异常。 #27309 由 Xuefeng Xu 贡献。修复 如果用户提供的类别包含重复项,
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder将引发异常。#27328 由 Xuefeng Xu 贡献。修复 如果
get_feature_names_out的输出与输出容器的列名不一致(如果已定义),则preprocessing.FunctionTransformer在transform阶段会引发错误。#27801 由 Guillaume Lemaitre 贡献。修复 在调用
transform之前未调用fit时,preprocessing.OrdinalEncoder中会引发NotFittedError,因为始终需要检查categories。#27821 由 Guillaume Lemaitre 贡献。
sklearn.tree#
特性
tree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifier和tree.ExtraTreeRegressor现在支持单调性约束,这在特征被认为对目标具有正/负影响时非常有用。训练数据中的缺失值和多输出目标不受支持。#13649 由 Samuel Ronsin 贡献,由 Patrick O’Reilly 发起。
sklearn.utils#
增强
sklearn.utils.estimator_html_repr会根据浏览器的prefers-color-scheme动态调整图表颜色,从而更好地适应暗模式环境。#26862 由 Andrew Goh Yisheng,Thomas Fan,Adrin Jalali 贡献。增强
MetadataRequest和MetadataRouter现在具有consumes方法,可用于检查是否会使用给定的参数集。#26831 由 Adrin Jalali 贡献。增强 如果非零条目的数量足够小,则使
sklearn.utils.check_array尝试在从 DIA 数组转换时输出int32索引的 CSR 和 COO 数组。这确保了用 Cython 实现且不接受int64索引的稀疏数据结构的估计器现在一致地接受 SciPy 稀疏矩阵和数组的相同稀疏输入格式。#27372 由 Guillaume Lemaitre 贡献。修复
sklearn.utils.check_array应该接受来自 SciPy 稀疏模块的矩阵和数组。之前的实现如果copy=True,则会通过调用特定的 NumPynp.may_share_memory函数失败,该函数不适用于 SciPy 稀疏数组,并且不会为 SciPy 稀疏矩阵返回正确的结果。#27336 由 Guillaume Lemaitre 贡献。修复 使用
readonly_memmap=True的check_estimators_pickle现在依赖于 joblib 自身在加载序列化估计器时分配对齐的内存映射数组的能力,而不是调用专用私有函数(当 OpenBLAS 错误检测 CPU 架构时会崩溃)。#27614 由 Olivier Grisel 贡献。修复 当传递稀疏矩阵但
accept_sparse为False时,check_array中的错误消息现在建议使用.toarray()而不是X.toarray()。#27757 由 Lucy Liu 贡献。修复 修复函数
check_array,使其在输入为 Series 而不是 DataFrame 时输出正确的错误消息。 #28090 由 Stan Furrer 和 姚晓 贡献。API变更
sklearn.extmath.log_logistic已弃用,将于 1.6 版本中移除。请使用-np.logaddexp(0, -x)代替。 #27544 由 Christian Lorentzen 贡献。
代码和文档贡献者
感谢自 1.3 版本以来为项目维护和改进做出贡献的每一个人,包括:
101AlexMartin,Abhishek Singh Kushwah,Adam Li,Adarsh Wase,Adrin Jalali,Advik Sinha,Alex,Alexander Al-Feghali,Alexis IMBERT,AlexL,Alex Molas,Anam Fatima,Andrew Goh,andyscanzio,Aniket Patil,Artem Kislovskiy,Arturo Amor,ashah002,avm19,Ben Holmes,Ben Mares,Benoit Chevallier-Mames,Bharat Raghunathan,Binesh Bannerjee,Brendan Lu,Brevin Kunde,Camille Troillard,Carlo Lemos,Chad Parmet,Christian Clauss,Christian Lorentzen,Christian Veenhuis,Christos Aridas,Cindy Liang,Claudio Salvatore Arcidiacono,Connor Boyle,cynthias13w,DaminK,Daniele Ongari,Daniel Schmitz,Daniel Tinoco,David Brochart,Deborah L. Haar,DevanshKyada27,Dimitri Papadopoulos Orfanos,Dmitry Nesterov,DUONG,Edoardo Abati,Eitan Hemed,Elabonga Atuo,Elisabeth Günther,Emma Carballal,Emmanuel Ferdman,epimorphic,Erwan Le Floch,Fabian Egli,Filip Karlo Došilović,Florian Idelberger,Franck Charras,Gael Varoquaux,Ganesh Tata,Gleb Levitski,Guillaume Lemaitre,Haoying Zhang,Harmanan Kohli,Ily,ioangatop,IsaacTrost,Isaac Virshup,Iwona Zdzieblo,Jakub Kaczmarzyk,James McDermott,Jarrod Millman,JB Mountford,Jérémie du Boisberranger,Jérôme Dockès,Jiawei Zhang,Joel Nothman,John Cant,John Hopfensperger,Jona Sassenhagen,Jon Nordby,Julien Jerphanion,Kennedy Waweru,kevin moore,Kian Eliasi,Kishan Ved,Konstantinos Pitas,Koustav Ghosh,Kushan Sharma,ldwy4,Linus,Lohit SundaramahaLingam,Loic Esteve,Lorenz,Louis Fouquet,Lucy Liu,Luis Silvestrin,Lukáš Folwarczný,Lukas Geiger,Malte Londschien,Marcus Fraaß,Marek Hanuš,Maren Westermann,Mark Elliot,Martin Larralde,Mateusz Sokół,mathurinm,mecopur,Meekail Zain,Michael Higgins,Miki Watanabe,Milton Gomez,MN193,Mohammed Hamdy,Mohit Joshi,mrastgoo,Naman Dhingra,Naoise Holohan,Narendra Singh dangi,Noa Malem-Shinitski,Nolan,Nurseit Kamchyev,Oleksii Kachaiev,Olivier Grisel,Omar Salman,partev,Peter Hull,Peter Steinbach,Pierre de Fréminville,Pooja Subramaniam,Puneeth K,qmarcou,Quentin Barthélemy,Rahil Parikh,Rahul Mahajan,Raj Pulapakura,Raphael,Ricardo Peres,Riccardo Cappuzzo,Roman Lutz,Salim Dohri,Samuel O. Ronsin,Sandip Dutta,Sayed Qaiser Ali,scaja,scikit-learn-bot,Sebastian Berg,Shreesha Kumar Bhat,Shubhal Gupta,Søren Fuglede Jørgensen,Stefanie Senger,Tamara,Tanjina Afroj,THARAK HEGDE,thebabush,Thomas J. Fan,Thomas Roehr,Tialo,Tim Head,tongyu,Venkatachalam N,Vijeth Moudgalya,Vincent M,Vivek Reddy P,Vladimir Fokow,Xiao Yuan,Xuefeng Xu,Yang Tao,Yao Xiao,Yuchen Zhou,Yuusuke Hiramatsu