有关此版本主要亮点简短描述,请参阅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 由 Samuel Ronsin 完成。
元数据路由#
修复 修复了 ColumnTransformer 在另一个元估计器内部使用时的路由问题。 #28188 由 Adrin Jalali 完成。
修复 当没有元数据传递给包含不支持元数据路由的子估计器的元估计器时,不会引发错误。 #28256 由 Adrin Jalali 完成。
修复 修复了
multioutput.MultiOutputRegressor和multioutput.MultiOutputClassifier,使其在启用元数据路由时,能与不消耗任何元数据的估计器一起工作。 #28240 由 Adrin Jalali 完成。DataFrame 支持#
改进 修复 Pandas 和 Polars dataframe 无需进行鸭子类型检查即可直接验证。 #28195 由 Thomas Fan 完成。
影响多个模块的变更#
效率 修复 部分恢复了 #28191,以避免依赖稀疏矩阵欧几里得成对计算的估计器出现性能回归。受影响的估计器有
sklearn.metrics.pairwise_distances_argmin
修复 修复了所有 scikit-learn 转换器在使用
set_output且transform设置为pandas或polars时的错误。该错误可能导致返回的数据框列命名错误。 #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 完成。
修复 cluster.AffinityPropagation 现在避免为相等点分配多个不同簇。 #28121 由 Pietro Peterlongo 和 Yao Xiao 完成。
修复 避免
cluster.KMeans在簇数量大于非重复样本数量时出现无限循环。 #28165 由 Jérémie du Boisberranger 完成。
修复 当 verbose_feature_names_out=True 且转换器内部多次使用相同列时,compose.ColumnTransformer 现在能转换为 Polars 数据框。以前,这会因重复的列名而引发错误。 #28262 由 Guillaume Lemaitre 完成。
修复 HistGradientBoostingClassifier 和 HistGradientBoostingRegressor 在使用带扩展数据类型(例如 pd.Int64Dtype)的 pandas DataFrame 进行拟合时的问题。 #28385 由 Loïc Estève 完成。
修复 修复了
ensemble.VotingClassifier在目标以 DataFrame 格式为多标签或多类别多输出时引发的错误消息。 #27702 由 Guillaume Lemaitre 完成。
修复 : impute.SimpleImputer 现在在 .fit 和 .transform 中,如果 fill_value 无法使用 casting='same_kind' 转换为输入值 dtype,则会引发错误。 #28365 由 Leo Grinsztajn 完成。
修复 inspection.permutation_importance 现在能正确处理 sample_weight 和子采样(即 max_features < 1.0)的情况。 #28184 由 Michael Mayer 完成。
修复 linear_model.ARDRegression 现在能处理 predict(X, return_std=True) 的 pandas 输入类型。 #28377 由 Eddie Bergman 完成。
修复 使 preprocessing.FunctionTransformer 更宽松,并在以下情况下用 get_feature_names_out 覆盖输出列名:(i) 输入和输出列名保持不变(在使用 NumPy ufunc 时发生);(ii) 输入列名为数字;(iii) 输出将设置为 Pandas 或 Polars 数据框。 #28241 由 Guillaume Lemaitre 完成。
修复 当
set_output调用时transform="polars"且func未返回 Polars 数据框或未指定feature_names_out时,preprocessing.FunctionTransformer现在也会发出警告。 #28263 由 Guillaume Lemaitre 完成。修复 当
target_type="continuous"且输入为只读时,preprocessing.TargetEncoder不再失败。特别是,它现在在启用 pandas 写时复制模式下也能工作。 #28233 由 John Hopfensperger 完成。
修复 tree.DecisionTreeClassifier 和 tree.DecisionTreeRegressor 现在能正确处理缺失值。当数据中没有缺失值时,内部准则未初始化,可能导致准则值错误。 #28295 由 Guillaume Lemaitre 和 #28327 由 Adam Li 完成。
改进 修复 utils.metaestimators.available_if 现在将 check 函数的错误作为 AttributeError 的原因重新引发。 #28198 由 Thomas Fan 完成。
修复 当
X是 Python 列表且axis=1时,utils._safe_indexing现在会引发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 完成。
修复 修复了 PyPy 中使用 Cython 损失函数的估计器出现的内存泄漏问题。 #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方法、CV 分割器和评分器。 #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现在支持元数据路由,并将元数据路由到 CV 分割器。 #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 完成;manifold.trustworthiness在 #27250 由 Yao Xiao 完成;metrics.pairwise_distances在 #27250 由 Yao Xiao 完成;类
cluster.HDBSCAN 在 #27250 由 Yao Xiao 完成;
cluster.KMeans在 #27179 由 Nurseit Kamchyev 完成;cluster.OPTICS在 #27104 由 Maren Westermann 完成,以及 #27250 由 Yao Xiao 完成;cluster.SpectralClustering在 #27161 由 Bharat Raghunathan 完成;decomposition.NMF在 #27100 由 Isaac Virshup 完成;feature_extraction.text.TfidfTransformer在 #27219 由 Yao Xiao 完成;manifold.Isomap在 #27250 由 Yao Xiao 完成;manifold.SpectralEmbedding在 #27240 由 Yao Xiao 完成;manifold.TSNE在 #27250 由 Yao Xiao 完成;impute.SimpleImputer在 #27277 由 Yao Xiao 完成;impute.IterativeImputer在 #27277 由 Yao Xiao 完成;impute.KNNImputer在 #27277 由 Yao Xiao 完成;kernel_approximation.PolynomialCountSketch在 #27301 由 Lohit SundaramahaLingam 完成;random_projection.GaussianRandomProjection在 #27314 由 Stefanie Senger 完成;random_projection.SparseRandomProjection在 #27314 由 Stefanie Senger 完成。支持 Array API#
一些估计器和函数支持 Array API。这些更改使得估计器和函数可以与其他库(如 JAX、CuPy 和 PyTorch)一起使用。因此,这能够实现一些 GPU 加速计算。
有关更多详细信息,请参阅Array API 支持(实验性)。
sklearn.metrics.accuracy_score 和 sklearn.metrics.zero_one_loss 在 #27137 由 Edoardo Abati 完成;
cluster.compute_optics_graph 在 #27104 由 Maren Westermann 完成,以及 #27250 由 Yao Xiao 完成;
sklearn.model_selection.train_test_split在 #26855 由 Tim Head 完成;is_multilabel在 #27601 由 Yaroslav Korobko 完成。decomposition.PCA对于full和randomized求解器(带 QR 幂迭代)在 #26315、#27098 和 #27431 由 Mateusz Sokół、Olivier Grisel 和 Edoardo Abati 完成;
cluster.HDBSCAN 在 #27250 由 Yao Xiao 完成;
preprocessing.MinMaxScaler在 #26243 由 Tim Head 完成;私有损失函数模块#
修复 二项式对数损失的梯度计算对于绝对值非常大的输入(原始预测)现在在数值上更稳定。在此之前,它可能导致 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 完成。
改进 如果
transform/predict消耗元数据,但继承自它们的类中没有相应地定义自定义fit_transform/fit_predict,则base.TransformerMixin.fit_transform和base.OutlierMixin.fit_predict现在会发出警告。 #26831 由 Adrin Jalali 完成。改进
base.clone现在支持将dict作为输入并创建副本。 #26786 由 Adrin Jalali 完成。API 变更
process_routing现在具有不同的签名。前两个参数(对象和方法)仅为位置参数,所有元数据均作为关键字参数传递。 #26909 由 Adrin Jalali 完成。
改进 calibration.CalibratedClassifierCV 的 sigmoid 方法的内部目标和梯度已由私有损失模块替换。 #27185 由 Omar Salman 完成。
修复 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 完成。
主要新功能 通过 DataFrame 交换协议,为 compose.ColumnTransformer 添加了 polars 输入支持。Polars 的最低支持版本为 0.19.12。 #26683 由 Thomas Fan 完成。
修复
cluster.spectral_clustering和cluster.SpectralClustering现在会引发明确的错误消息,指示不支持带np.int64索引的稀疏矩阵和数组。 #27240 由 Yao Xiao 完成。API 变更 在
ColumnTransformer中,使用 pandas 扩展数据类型并包含pd.NA的输出现在会引发FutureWarning,并将在 1.6 版本中导致ValueError,除非输出容器已通过set_output(transform="pandas")配置为“pandas”。之前,此类输出会导致 dtype 为object的 numpy 数组包含pd.NA,这无法转换为 numpy 浮点数,并在传递给其他 scikit-learn 估计器时引发错误。 #27734 由 Jérôme Dockès 完成。
改进 允许 covariance.shrunk_covariance 通过处理 nd-数组一次性处理多个协方差矩阵。 #25275 由 Quentin Barthélemy 完成。
API 变更 修复
ColumnTransformer现在在其已拟合的transformers_属性中将"passthrough"替换为相应的FunctionTransformer。 #27204 由 Adrin Jalali 完成。
改进 datasets.make_sparse_spd_matrix 现在使用更节省内存的稀疏布局。它还接受一个新的关键字 sparse_format,允许指定稀疏矩阵的输出格式。默认情况下,sparse_format=None,这会像以前一样返回一个密集 numpy ndarray。 #27438 由 Yao Xiao 完成。
修复 当
X为只读(例如numpy.memmap实例)时,datasets.dump_svmlight_file现在不会引发ValueError。 #28111 由 Yao Xiao 完成。API 变更
datasets.make_sparse_spd_matrix弃用了关键字参数dim,转而使用n_dim。dim将在 1.6 版本中移除。 #27718 由 Adam Li 完成。
sklearn.decomposition#
功能
decomposition.PCA现在支持在arpack求解器下使用scipy.sparse.sparray和scipy.sparse.spmatrix输入。当用于datasets.fetch_20newsgroups_vectorized等稀疏数据时,这可以将(单线程)速度提高 100 倍,并降低 70 倍的内存使用。基于Alexander Tarashansky在scanpy中的实现。#18689 由Isaac Virshup和Andrey Portnoy贡献。改进 在
decomposition.non_negative_factorization、decomposition.NMF和decomposition.MiniBatchNMF的n_components参数中添加了一个“auto”选项,以便在使用自定义初始化时从 W 或 H 形状自动推断组件数量。此参数的默认值将在 1.6 版本中从None更改为auto。#26634 由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 dtype 的列视为类别。categorical_features="from_dtype"将在 v1.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贡献。修复 当使用多输出模型且目标值全部四舍五入为整数时,在
ensemble.RandomForestRegressor和ensemble.ExtraTreesRegressor中请求 OOB 分数会引发ValueError。它被识别为多分类问题。#27817 由Daniele Ongari贡献。修复 更改了估计器标签,以确认
ensemble.VotingClassifier、ensemble.VotingRegressor、ensemble.StackingClassifier、ensemble.StackingRegressor支持缺失值,前提是所有estimators都支持缺失值。#27710 由Guillaume Lemaitre贡献。修复 支持加载
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor的 pickle 文件,即使该 pickle 文件是在不同位数的平台上生成的。一个典型的例子是在 64 位机器上训练并 pickle 模型,然后在 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贡献。改进 在
mode='k_best'模式下,当k大于特征数量时,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数据时始终具有float32dtype,即使在 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%,并以与提供数据相同的 dtype 输出距离。#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 由Lucy Liu贡献。修复 当
X以float64数组形式提供,X_norm_squared以float32数组形式提供时,使用metrics.pairwise.euclidean_distances计算成对距离不再引发异常。#27624 由Jérôme Dockès贡献。修复
f1_score现在,在处理各种零除情况时,通过使用不依赖于精度和召回率值的公式,提供了正确的值。#27577 由Omar Salman和Guillaume Lemaitre贡献。修复 当对请求非阈值决策函数(来自
decision_function或predict_proba)的评分器使用回归器时,metrics.make_scorer现在会引发错误。此类评分器专用于分类。#26840 由Guillaume Lemaitre贡献。修复
metrics.DetCurveDisplay.from_predictions、metrics.PrecisionRecallDisplay.from_predictions、metrics.PredictionErrorDisplay.from_predictions和metrics.RocCurveDisplay.from_predictions现在为子类返回正确的类型。#27675 由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 由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 由Alejandro Martin Gil贡献。
sklearn.model_selection#
改进 当每个交叉验证折叠都失败时,
model_selection.learning_curve会发出警告。#26299 由Rahil Parikh贡献。修复
model_selection.GridSearchCV、model_selection.RandomizedSearchCV和model_selection.HalvingGridSearchCV现在不会更改参数网格中给定的对象,如果它是一个估计器。#26786 由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贡献。改进 改进了
preprocessing.FunctionTransformer在func返回pandas dataframe且输出配置为pandas时的警告。#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贡献。修复 在调用
preprocessing.OrdinalEncoder的transform而未调用fit时引发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时会因调用特定 NumPy 函数np.may_share_memory而失败,该函数不适用于 SciPy 稀疏数组,也无法为 SciPy 稀疏矩阵返回正确结果。#27336 由Guillaume Lemaitre贡献。修复
check_estimators_pickle在readonly_memmap=True时,现在依赖 joblib 自身在加载序列化估计器时分配对齐内存映射数组的能力,而不是调用一个在 OpenBLAS 错误检测 CPU 架构时会崩溃的专用私有函数。#27614 由Olivier Grisel贡献。修复 当传递稀疏矩阵但
accept_sparse为False时,check_array中的错误消息现在建议使用.toarray()而不是X.toarray()。#27757 由Lucy Liu贡献。修复 修复
check_array函数,使其在输入为 Series 而不是 DataFrame 时输出正确的错误消息。#28090 由Stan Furrer和Yao Xiao贡献。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, Hleb 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