版本 1.4#
有关本次发布主要亮点内容的简要描述,请参阅 scikit-learn 1.4 版本发布亮点 。
Legend for changelogs
Major Feature something big that you couldn’t do before.
Feature something that you couldn’t do before.
Efficiency an existing feature now may not require as much computation or memory.
Enhancement a miscellaneous minor improvement.
Fix something that previously didn’t work as documented – or according to reasonable expectations – should now work.
API Change you will need to change your code to have the same effect in the future; or a feature will be removed in the future.
版本 1.4.2#
2024年4月
本次发布仅包括对 numpy 2 的支持。
版本 1.4.1#
2024年2月
更改的模型#
API Change
tree.DecisionTreeClassifier、tree.DecisionTreeRegressor、tree.ExtraTreeClassifier和tree.ExtraTreeRegressor中的tree_.value属性 从样本数量的加权绝对计数更改为总样本数量的加权分数。 #27639 由 Samuel Ronsin 贡献。
元数据路由#
Fix 修复了在另一个元估计器内部使用时
ColumnTransformer的路由问题。 #28188 由 Adrin Jalali 贡献。Fix 当传递给包含不支持元数据路由的子估计器的元估计器时,不再引发错误。 #28256 由 Adrin Jalali 贡献。
Fix 修复了
multioutput.MultiOutputRegressor和multioutput.MultiOutputClassifier,使其在启用元数据路由时能够与不消耗任何元数据的估计器一起工作。 #28240 由 Adrin Jalali 贡献。
DataFrame 支持#
Enhancement Fix 直接验证 Pandas 和 Polars 数据帧,无需鸭子类型检查。 #28195 由 Thomas Fan 贡献。
影响多个模块的更改#
Efficiency Fix 部分回退 #28191 ,以避免在使用稀疏矩阵进行欧几里得成对计算的估计器中出现性能回归。受影响的估计器包括:
#28235 by Julien Jerphanion .
Fix 修复了在使用
set_output并设置transform为pandas或polars时,所有 scikit-learn 转换器的一个错误。该错误可能导致返回数据框的列名错误。 #28262 by Guillaume Lemaitre .Fix 当用户尝试在
StackingClassifier、StackingClassifier、StackingClassifier、SelectFromModel、RFE、SelfTrainingClassifier、OneVsOneClassifier、OutputCodeClassifier或OneVsRestClassifier中使用其子估计器未实现的方法时,AttributeError现在会在追溯中重新抛出。 #28167 by Stefanie Senger .
变更日志#
sklearn.calibration#
Fix
calibration.CalibratedClassifierCV支持内部估计器的 float32 输出的 predict_proba 。#28247 by Thomas Fan .
sklearn.cluster#
Fix
cluster.AffinityPropagation现在避免为相等的点分配多个不同的聚类。 #28121 by Pietro Peterlongo 和
Yao Xiao .
Fix 当聚类数大于非重复样本数时,避免
cluster.KMeans中的无限循环。 #28165 由 Jérémie du Boisberranger 贡献。
sklearn.compose#
Fix
compose.ColumnTransformer现在在verbose_feature_names_out=True且转换器内部多次使用相同列时,会转换为 polars 数据帧。之前,由于重复的列名会引发错误。 #28262 由 Guillaume Lemaitre 贡献。
sklearn.ensemble#
:mod:` sklearn.impute `#
Fix : :class:` impute.SimpleImputer
现在在.fit和.transform中如果fill_value不能以casting=’same_kind’转换为输入值的数据类型,则会引发错误。 :pr:28365由 :user:Leo Grinsztajn <LeoGrin> `贡献。
:mod:` sklearn.inspection `#
Fix :func:` inspection.permutation_importance
现在可以正确处理sample_weight与子采样(即max_features< 1.0)。 :pr:28184由 :user:Michael Mayer <mayer79> `贡献。
:mod:` sklearn.linear_model `#
Fix :class:` linear_model.ARDRegression
现在可以处理predict(X, return_std=True)的 pandas 输入类型。 :pr:28377由 :user:Eddie Bergman <eddiebergman> `贡献。
:mod:` sklearn.preprocessing `#
Fix 使 :class:` preprocessing.FunctionTransformer `更加宽松并覆盖
在以下情况下使用` get_feature_names_out 输出列名:
(i) 输入和输出列名保持不变(在使用 NumPy ufunc 时发生);
(ii) 输入列名为数字;
(iii) 输出将设置为 Pandas 或 Polars 数据框。
:pr: 28241 由 :user: Guillaume Lemaitre <glemaitre> `提交。
Fix :class:` preprocessing.FunctionTransformer
现在还会在调用set_output时发出警告, 当transform=”polars”且func未返回 Polars 数据框或未指定feature_names_out ` 。 :pr:` 28263由 :user:Guillaume Lemaitre <glemaitre> `提交。Fix :class:` preprocessing.TargetEncoder
在target_type=”continuous”且输入为只读时不再失败。 特别是,现在在启用 pandas 的 copy-on-write 模式下也能正常工作。 :pr:28233由 :user:John Hopfensperger <s-banach> `提交。
:mod:` sklearn.tree `#
Fix :class:` tree.DecisionTreeClassifier
和 :class:tree.DecisionTreeRegressor现在能正确处理缺失值。 当数据中没有缺失值时,内部标准未初始化,导致可能出现错误的标准值。 :pr:28295由 :user:Guillaume Lemaitre <glemaitre>提交, 以及 :pr:28327由 :user:Adam Li <adam2392> `提交。
:mod:` sklearn.utils `#
版本 1.4.0#
2024年1月
更改的模型#
以下估计器和函数,在相同数据和参数下拟合时,可能会产生与上一版本不同的模型。这通常 由于建模逻辑的变化(错误修复或增强),或随机抽样程序的变化,会发生这种情况。
Efficiency :class:` linear_model.LogisticRegression
和 :class:linear_model.LogisticRegressionCV现在对于求解器“lbfgs”和“newton-cg”具有更好的收敛性。这两个求解器现在可以根据指定的tol达到更高的系数精度。此外,lbfgs 可以更好地利用tol ` ,即更快停止或达到更高的精度。 注意:lbfgs 是默认求解器,因此这一变化可能会影响许多模型。这也意味着,使用这个新版本的 scikit-learn,对于这两个求解器(在相同数据上再次拟合时),模型的系数` coef_和截距intercept_将会发生变化。变化的程度取决于指定的tol ` ,对于较小的值,您将获得更精确的结果。 :pr:` 26721由 :user:Christian Lorentzen <lorentzenchr> `贡献。Fix 修复了在 PyPy 中使用 Cython 损失函数的估计器中出现的内存泄漏问题。 :pr:` 27670
由 :user:Guillaume Lemaitre <glemaitre> `贡献。
影响所有模块的变更#
Major Feature 转换器现在支持 polars 输出,使用` set_output(transform=”polars”) ` 。 :pr:` 27315
由Thomas Fan `_ 贡献。Enhancement 所有估计器现在可以识别任何采用
- ` DataFrame 交换协议 <https://data-apis.org/dataframe-protocol/latest/purpose_and_scope.html>
__ 的数据框中的列名。预期通过np.asarray(df) `返回正确表示的数据框可以与我们的估计器和函数一起工作。 :pr:` 26464
由Thomas Fan `_ 贡献。
Enhancement 估计器的 HTML 表示现在包含指向文档的链接,并根据估计器是否拟合进行颜色编码(未拟合的估计器为橙色,已拟合的估计器为蓝色)。 :pr:` 26616
由 :user:Riccardo Cappuzzo <rcap107> `贡献。
:user:` Ines Ibnukhsein <Ines1999> , :user: Gael Varoquaux <GaelVaroquaux> ,
` Joel Nothman `_ 和 :user: Lilian Boulard <LilianBoulard> `.
Fix 修复了大多数估计器和函数中的一个错误,当将参数设置为 一个较大的整数时会导致` TypeError ` 。 :pr:` 26648
由 :user:Naoise Holohan <naoise-h> `提交。
元数据路由#
以下模型现在支持在其一个或多个方法中进行元数据路由。有关更多详细信息,请参阅 :ref:` Metadata Routing User Guide <metadata_routing> ` 。
Feature :class:` LarsCV
和 :class:LassoLarsCV现在支持在其fit方法中进行元数据 路由,并将元数据路由到 CV 分割器。 :pr:27538由 :user:Omar Salman <OmarManzoor> `提交。Feature :class:` multiclass.OneVsRestClassifier
, :class:multiclass.OneVsOneClassifier和 :class:multiclass.OutputCodeClassifier`现在支持在其fit和partial_fit方法中进行元数据路由, 并将元数据路由到底层估计器的fit和partial_fit。 #27308 由 Stefanie Senger 提交。Feature
pipeline.Pipeline现在根据 metadata routing user guide 支持元数据路由。 #26789 由 Adrin Jalali 提交。Feature
cross_validate,cross_val_score, 和cross_val_predict现在支持元数据路由。元数据被路由到估计器的fit,评分器, 以及 CV 分割器的split。元数据通过新的params参数接受。fit_params已弃用,将在版本 1.6 中移除。groups参数在启用元数据路由时不作为单独参数接受,应通过params参数传递。 #26896 由 Adrin Jalali 提交。Feature
GridSearchCV,RandomizedSearchCV,HalvingGridSearchCV, 和
HalvingRandomSearchCV 现在支持在其 fit 和 score 方法中进行元数据路由,并将元数据路由到底层估计器的 fit 方法、CV 分割器和评分器。
#27058 由 Adrin Jalali 贡献。
Feature
ColumnTransformer现在根据 元数据路由用户指南 支持元数据路由。 #27005 由 Adrin Jalali 贡献。Feature
linear_model.LogisticRegressionCV现在支持元数据路由。linear_model.LogisticRegressionCV.fit现在接受**params,这些参数会被传递给底层的分割器和评分器。linear_model.LogisticRegressionCV.score现在接受**score_params,这些参数会被传递给底层的评分器。 #26525 由 Omar Salman 贡献。Feature
feature_selection.SelectFromModel现在在fit和partial_fit方法中支持元数据路由。 #27490 由 Stefanie Senger 贡献。Feature
linear_model.OrthogonalMatchingPursuitCV现在支持元数据路由。其fit方法现在接受**fit_params,这些参数会被传递给底层的分割器。 #27500 由 Stefanie Senger 贡献。Feature
ElasticNetCV,LassoCV,MultiTaskElasticNetCV和MultiTaskLassoCV现在支持元数据路由,并将元数据路由到 CV 分割器。 #27478 由 Omar Salman 贡献。Fix 所有尚未实现元数据路由的元估计器现在在
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 完成;manifold.spectral_embedding在 #27240 中由 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 贡献.
对数组 API 的支持#
多个估计器和函数支持 数组 API 。这些更改使得可以使用 估计器和函数与其他库如 JAX、CuPy 和 PyTorch。因此,这使得一些 GPU 加速计算成为可能。
详情请参见 数组 API 支持(实验性) 。
函数:
sklearn.metrics.accuracy_score和sklearn.metrics.zero_one_loss在 #27137 由 Edoardo Abati 贡献;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 贡献;preprocessing.MinMaxScaler在 #26243 由 Tim Head 贡献;
私有损失函数模块#
Fix 二项式对数损失的梯度计算现在对绝对值非常大的输入(原始预测)在数值上更加稳定。之前可能会导致
np.nan。受益于此更改的模型包括ensemble.GradientBoostingClassifier、ensemble.HistGradientBoostingClassifier和linear_model.LogisticRegression。#28048 由 Christian Lorentzen 贡献。
更新日志#
sklearn.base#
Enhancement
base.ClusterMixin.fit_predict和base.OutlierMixin.fit_predict现在接受**kwargs,这些参数会传递给估计器的fit方法。#26506 由 Adrin Jalali 贡献。Enhancement
base.TransformerMixin.fit_transform和base.OutlierMixin.fit_predict现在会在transform/predict消耗元数据,但相应的类中未定义自定义fit_transform/fit_predict时发出警告。#26831 由 Adrin Jalali 贡献。Enhancement
base.clone现在支持dict作为输入并创建一个副本。
#26786 由 Adrin Jalali 提交。
API Change
process_routing现在具有不同的签名。前两个参数(对象和方法)仅位置参数,所有元数据都作为关键字参数传递。 #26909 由 Adrin Jalali 提交。
sklearn.calibration#
Enhancement
calibration.CalibratedClassifierCV的sigmoid方法的内部目标和梯度已被私有损失模块替换。 #27185 由 Omar Salman 提交。
sklearn.cluster#
Fix
cluster.SpectralClustering构造函数中的degree参数现在接受实数值,而不仅仅是整数值,与sklearn.metrics.pairwise.polynomial_kernel的degree参数一致。 #27668 由 Nolan McMahon 提交。Fix 修复了
cluster.OPTICS中的一个错误,该错误在基于前驱的聚类校正中使用了错误的索引。这将导致依赖于数据顺序的不一致结果。 #26459 由 Haoying Zhang 和 Guillaume Lemaitre 提交。Fix 改进了在
cluster.HDBSCAN的fit方法中检查连接组件数量时的错误消息。 #27678 由 Ganesh Tata 提交。Fix 在
cluster.DBSCAN的fit方法中创建预计算稀疏矩阵的副本,以避免对稀疏矩阵的就地修改。 #27651 由 Ganesh Tata 提交。Fix 当
metric="precomputed"且通过store_centers参数请求存储中心时,抛出适当的ValueError。 #27898 由 Guillaume Lemaitre 提交。API Change
kdtree和balltree值已被弃用,并分别重命名为kd_tree和ball_tree,用于cluster.DBSCAN的algorithm参数。API Change 在
cluster.AgglomerativeClustering和cluster.FeatureAgglomeration中,选项metric=None在版本 1.4 中已被弃用,并将在版本 1.6 中移除。请改用默认值。 #27828 由 Guillaume Lemaitre 提交。
sklearn.compose#
Major Feature 通过 DataFrame Interchange Protocol ,为
compose.ColumnTransformer添加了对 polars 输入的支持。polars 的最低支持版本为0.19.12。 #26683 由 Thomas Fan 提交。Fix
cluster.spectral_clustering和cluster.SpectralClustering现在会明确抛出一个错误消息,指示不支持稀疏矩阵和带有np.int64索引的数组。 #27240 由 Yao Xiao 提交。API Change 在
ColumnTransformer中,使用 pandas 扩展数据类型并包含pd.NA的输出现在会导致一个FutureWarning,并且在版本 1.6 中将导致ValueError,除非输出容器已配置为 “pandas” 并使用set_output(transform="pandas")。在此之前,此类输出会导致包含pd.NA的 numpy 数组,其数据类型为object,无法转换为 numpy 浮点数,并在传递给其他 scikit-learn 估计器时导致错误。 #27734 由 Jérôme Dockès 提交。
sklearn.covariance#
Enhancement 允许
covariance.shrunk_covariance通过处理多维数组一次处理多个协方差矩阵。 #25275 由 Quentin Barthélemy 提交。API Change Fix
ColumnTransformer现在替换"passthrough"在已拟合的transformers_属性中,对应一个FunctionTransformer。 #27204 由 Adrin Jalali 贡献。
sklearn.datasets#
Enhancement
datasets.make_sparse_spd_matrix现在使用更节省内存的稀疏布局。它还接受一个新的关键字sparse_format,允许指定稀疏矩阵的输出格式。默认情况下sparse_format=None,与之前一样返回一个密集的 numpy ndarray。 #27438 由 Yao Xiao 贡献。Fix
datasets.dump_svmlight_file现在在X为只读时(例如numpy.memmap实例)不会引发ValueError。 #28111 由 Yao Xiao 贡献。API Change
datasets.make_sparse_spd_matrix弃用了关键字参数dim,改为使用n_dim。dim将在版本 1.6 中移除。 #27718 由 Adam Li 贡献。
sklearn.decomposition#
Feature
decomposition.PCA现在支持在使用arpack求解器时输入scipy.sparse.sparray和scipy.sparse.spmatrix。在处理像datasets.fetch_20newsgroups_vectorized这样的稀疏数据时,这可以带来 100 倍的速度提升(单线程)和 70 倍的内存使用减少。基于 Alexander Tarashansky 在 scanpy 中的实现。 #18689 由 Isaac Virshup 和 Andrey Portnoy 贡献。Enhancement 在
decomposition.non_negative_factorization、decomposition.NMF和decomposition.MiniBatchNMF的n_components参数中添加了 “auto” 选项,以在使用自定义初始化时自动从 W 或 H 形状推断组件数量。该参数的默认值将在版本 1.6 中从None更改为auto。
#26634 由 Alexandre Landeau 和 Alexandre Vigny 贡献。
Fix
decomposition.dict_learning_online不再忽略参数max_iter。 #27834 由 Guillaume Lemaitre 贡献。Fix
decomposition.KernelPCA构造函数中的degree参数现在接受实数值,而不仅仅是整数值,以符合sklearn.metrics.pairwise.polynomial_kernel中的degree参数。 #27668 由 Nolan McMahon 贡献。API Change
decomposition.MiniBatchDictionaryLearning、decomposition.MiniBatchSparsePCA和decomposition.dict_learning_online中的选项max_iter=None已弃用,并将在版本 1.6 中移除。请改用默认值。 #27834 由 Guillaume Lemaitre 贡献。
sklearn.ensemble#
Major Feature
ensemble.RandomForestClassifier和ensemble.RandomForestRegressor在标准为gini、entropy或log_loss(分类)或squared_error、friedman_mse或poisson(回归)时支持缺失值。 #26391 由 Thomas Fan 贡献。Major Feature
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 贡献。Major Feature
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor新增了参数max_features,用于指定每次分割时随机选择的特征比例。 #27139 由 Christian Lorentzen 贡献。Feature
ensemble.RandomForestClassifier、ensemble.RandomForestRegressor、ensemble.ExtraTreesClassifier和ensemble.ExtraTreesRegressor现在支持单调约束,这在特征对目标有正/负影响时非常有用。 训练数据中的缺失值和多输出目标尚不支持。 #13649 由 Samuel Ronsin 贡献, 由 Patrick O’Reilly 发起。Efficiency
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor现在通过在减法技巧中重用父节点的直方图作为子节点的直方图,速度有所提升。 实际上,需要分配和释放的内存减少了。 #27865 由 Christian Lorentzen 贡献。Efficiency
ensemble.GradientBoostingClassifier速度更快, 特别是对于二分类和多分类问题,得益于私有损失函数模块。 #26278 和 #28095 由 Christian Lorentzen 贡献。Efficiency 改进了在稀疏数据上训练时
ensemble.GradientBoostingClassifier和ensemble.GradientBoostingRegressor的运行时和内存使用。 #26957 由 Thomas Fan 贡献。Efficiency
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor在scoring是metrics.get_scorer_names中列出的预定义指标且启用早停时,速度更快。 #26163 由 Thomas Fan 贡献。Enhancement 所有森林方法新增了一个拟合属性
estimators_samples_,包括
ensemble.RandomForestClassifier , ensemble.RandomForestRegressor ,
ensemble.ExtraTreesClassifier 和 ensemble.ExtraTreesRegressor ,
允许检索用于每个树估计器的训练样本索引。
#26736 由 Adam Li 提交。
Fix 修复了当输入为稀疏矩阵且
contamination设置为浮点值时,ensemble.IsolationForest的问题。 #27645 由 Guillaume Lemaitre 提交。Fix 在请求多输出模型的 OOB 分数时,对于所有目标都被四舍五入为整数的情况,
ensemble.RandomForestRegressor和ensemble.ExtraTreesRegressor会引发ValueError。 这被识别为一个多类问题。 #27817 由 Daniele Ongari 提交。Fix 更改了估计器标签,以确认
ensemble.VotingClassifier,ensemble.VotingRegressor,ensemble.StackingClassifier,ensemble.StackingRegressor支持缺失值, 前提是所有estimators都支持缺失值。 #27710 由 Guillaume Lemaitre 提交。Fix 支持加载在不同位数平台上生成的
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor的 pickle 文件。 一个典型的例子是在 64 位机器上训练并序列化模型,然后在 32 位机器上加载模型进行预测。 #28074 由 Christian Lorentzen 和 Loïc Estève 提交。API Change 在
ensemble.AdaBoostClassifier中,algorithm参数SAMME.R已被弃用, 并将在 1.6 版本中移除。 #26830 由 Stefanie Senger 提交。
sklearn.feature_extraction#
API Change 在未拟合的实例中,将错误类型从
AttributeError更改为exceptions.NotFittedError。
feature_extraction.DictVectorizer 用于以下方法:
feature_extraction.DictVectorizer.inverse_transform ,
feature_extraction.DictVectorizer.restrict ,
feature_extraction.DictVectorizer.transform .
#24838 由 Lorenz Hertel 提交。
sklearn.feature_selection#
Enhancement
feature_selection.SelectKBest,feature_selection.SelectPercentile, 和feature_selection.GenericUnivariateSelect现在支持通过提供一个接受X和y=None的score_func进行无监督特征选择。 #27721 由 Guillaume Lemaitre 提交。Enhancement
feature_selection.SelectKBest和feature_selection.GenericUnivariateSelect在mode='k_best'模式下,当k大于特征数量时会显示警告。 #27841 由 Thomas Fan 提交。Fix
feature_selection.RFE和feature_selection.RFECV在输入验证期间不再检查 nans。 #21807 由 Thomas Fan 提交。
sklearn.inspection#
Enhancement
inspection.DecisionBoundaryDisplay现在接受一个参数class_of_interest,用于在绘制由response_method="predict_proba"或response_method="decision_function"提供的响应时选择感兴趣的类别。它允许绘制二分类和多分类器的决策边界。 #27291 由 Guillaume Lemaitre 提交。Fix
inspection.DecisionBoundaryDisplay.from_estimator和inspection.PartialDependenceDisplay.from_estimator现在返回子类的正确类型。 #27675 由 John Cant 提交。API Change
inspection.DecisionBoundaryDisplay当估计器未实现请求的响应方法时,会引发AttributeError而不是ValueError。 #27291 由 Guillaume Lemaitre 提交。
sklearn.kernel_ridge#
Fix
kernel_ridge.KernelRidge构造函数中的degree参数现在接受实数值,而不仅仅是整数值,以符合sklearn.metrics.pairwise.polynomial_kernel中的degree参数。 #27668 由 Nolan McMahon 贡献。
sklearn.linear_model#
Efficiency
linear_model.LogisticRegression和linear_model.LogisticRegressionCV现在对于"lbfgs"和"newton-cg"求解器具有更好的收敛性。这两个求解器现在可以根据指定的tol达到更高的系数精度。此外,lbfgs 可以更好地利用tol,即更快停止或达到更高精度。这是通过更好地缩放目标函数实现的,即使用每个样本损失的平均值而不是总和。 #26721 由 Christian Lorentzen 贡献。Efficiency 使用
"newton-cg"求解器的linear_model.LogisticRegression和linear_model.LogisticRegressionCV在某些数据和参数设置下可以显著加快。这是通过更好地检查线搜索收敛,考虑梯度信息以忽略微小的损失改进实现的。 #26721 由 Christian Lorentzen 贡献。Efficiency
linear_model.LogisticRegression和linear_model.LogisticRegressionCV中的"newton-cg"求解器使用的内存略少。效果与系数数量(n_features * n_classes)成正比。 #27417 由 Christian Lorentzen 贡献。Fix 确保
linear_model.ARDRegression和linear_model.BayesianRidge的sigma_属性在float32数据上拟合时始终具有float32数据类型,即使在 NumPy 2 的类型提升规则下也是如此。 #27899 由 Olivier Grisel 提交。API Change
linear_model.SGDClassifier和linear_model.SGDOneClassSVM的属性loss_function_已被弃用,并将在版本 1.6 中移除。 #27979 由 Christian Lorentzen 提交。
sklearn.metrics#
Efficiency 通过
metrics.DistanceMetric计算 CSR x CSR、Dense x CSR 和 CSR x Dense 数据集的成对距离现在快了 1.5 倍。 #26765 由 Meekail Zain 提交。Efficiency 通过
metrics.DistanceMetric计算 CSR x CSR、Dense x CSR 和 CSR x Dense 的距离现在使用约 50% 更少的内存,并且输出的距离与提供的数据具有相同的 dtype。 #27006 由 Meekail Zain 提交。Enhancement 改进了使用
metrics.PrecisionRecallDisplay和metrics.RocCurveDisplay类获得的图的渲染效果。x 轴和 y 轴的限制设置为 [0, 1],并且两个轴之间的纵横比设置为 1,以获得一个正方形图。 #26366 由 Mojdeh Rastgoo 提交。Enhancement 添加了
neg_root_mean_squared_log_error_scorer作为评分器 #26734 由 Alejandro Martin Gil 提交。Enhancement
metrics.confusion_matrix现在会在y_true和y_pred中只找到一个标签时发出警告。 #27650 由 Lucy Liu 提交。Fix 使用
metrics.pairwise.euclidean_distances计算成对距离时,当X作为float64数组提供,而X_norm_squared作为float32数组提供时,不再引发异常。 #27624 由 Jérôme Dockès 提交。Fix
f1_score现在在处理各种除以零的情况时提供正确的值,通过使用不依赖于精确度和召回值的公式。 #27577 由 Omar Salman 和 Guillaume Lemaitre 提交。Fix
metrics.make_scorer现在在使用回归器于请求非阈值决策函数的评分器时会引发错误(来自decision_function或predict_proba)。此类评分器特定于分类。 #26840 由 Guillaume Lemaitre 贡献。Fix
metrics.DetCurveDisplay.from_predictions,metrics.PrecisionRecallDisplay.from_predictions,metrics.PredictionErrorDisplay.from_predictions, 和metrics.RocCurveDisplay.from_predictions现在为子类返回正确的类型。 #27675 由 John Cant 贡献。API Change 已弃用
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 Change
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#
Enhancement
model_selection.learning_curve在每次交叉验证折叠失败时引发警告。 #26299 由 Rahil Parikh 贡献。Fix
model_selection.GridSearchCV,model_selection.RandomizedSearchCV, 和model_selection.HalvingGridSearchCV现在不会更改参数网格中给定的对象(如果它是一个估计器)。 #26786 由 Adrin Jalali 贡献。
sklearn.multioutput#
Enhancement 为
multioutput.ClassifierChain添加predict_log_proba方法。 #27720 由 Guillaume Lemaitre 贡献。
sklearn.neighbors#
Efficiency
sklearn.neighbors.KNeighborsRegressor.predict和sklearn.neighbors.KNeighborsClassifier.predict_proba现在高效支持 密集和稀疏数据集对。 #27018 由 Julien Jerphanion 贡献。Efficiency 当
radius较大且algorithm="brute"使用非欧几里得度量时,neighbors.RadiusNeighborsClassifier.predict和neighbors.RadiusNeighborsClassifier.predict_proba的性能已提升。 #26828 由 Omar Salman 贡献。Fix 改进了
neighbors.LocalOutlierFactor在n_samples=n_neighbors时 的错误消息。 #23317 由 Bharat Raghunathan 贡献。Fix
neighbors.KNeighborsClassifier.predict和neighbors.KNeighborsClassifier.predict_proba现在在某些样本的所有邻居权重为零时 引发错误。这可能发生在weights是用户定义函数时。 #26410 由 Yao Xiao 贡献。API Change
neighbors.KNeighborsRegressor现在通过metric关键字参数直接接受metrics.DistanceMetric对象,允许使用加速的第三方metrics.DistanceMetric对象。 #26267 由 Meekail Zain 贡献。
sklearn.preprocessing#
Efficiency
preprocessing.OrdinalEncoder避免两次计算缺失索引以提高效率。 #27017 由 Xuefeng Xu 贡献。Efficiency 提高了
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder在检查nan时的效率。 #27760 由 Xuefeng Xu 贡献。Enhancement 改进了
preprocessing.FunctionTransformer中的警告,当func返回一个 pandas DataFrame 且输出配置为 pandas 时。 #26944 由 Thomas Fan 提交。Enhancement
preprocessing.TargetEncoder现在支持target_type‘multiclass’。 #26674 由 Lucy Liu 提交。Fix
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder在nan作为类别且不是用户提供的类别中的最后一个时引发异常。 #27309 由 Xuefeng Xu 提交。Fix
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder如果用户提供的类别包含重复项,则引发异常。 #27328 由 Xuefeng Xu 提交。Fix
preprocessing.FunctionTransformer在transform时引发错误,如果get_feature_names_out的输出与输出容器的列名不一致(如果这些列名已定义)。 #27801 由 Guillaume Lemaitre 提交。Fix 在
preprocessing.OrdinalEncoder中调用transform而不调用fit时引发NotFittedError,因为categories总是需要检查。 #27821 由 Guillaume Lemaitre 提交。
sklearn.tree#
Feature
tree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifier和tree.ExtraTreeRegressor现在支持单调约束,当特征应该对目标有正/负影响时很有用。训练数据中的缺失值和多输出目标不受支持。 #13649 由 Samuel Ronsin 提交,由 Patrick O’Reilly 发起。
sklearn.utils#
Enhancement
sklearn.utils.estimator_html_repr根据浏览器的prefers-color-scheme动态调整图表颜色,提供更好的用户体验。 提高了对暗模式环境的适应性。 #26862 由 Andrew Goh Yisheng , Thomas Fan , Adrin Jalali 贡献。Enhancement
MetadataRequest和MetadataRouter现在有一个consumes方法, 可以用来检查给定的一组参数是否会被消耗。 #26831 由 Adrin Jalali 贡献。Enhancement 使
sklearn.utils.check_array在从 DIA 数组转换时尝试输出int32索引的 CSR 和 COO 数组,如果非零条目的数量足够小。这确保了在 Cython 中实现的估计器, 并且不接受int64索引的稀疏数据结构,现在一致地接受 SciPy 稀疏矩阵和数组的相同稀疏输入格式。 #27372 由 Guillaume Lemaitre 贡献。Fix
sklearn.utils.check_array应该接受来自 SciPy 稀疏模块的矩阵和数组。 之前的实现会在copy=True时失败,因为它调用了特定的 NumPynp.may_share_memory, 该函数不适用于 SciPy 稀疏数组,并且对于 SciPy 稀疏矩阵不会返回正确的结果。 #27336 由 Guillaume Lemaitre 贡献。Fix 使用
readonly_memmap=True的check_estimators_pickle现在依赖于 joblib 自身的功能,在加载序列化估计器时分配对齐的内存映射数组,而不是调用一个专用的私有函数, 该函数会在 OpenBLAS 错误检测 CPU 架构时崩溃。 #27614 由 Olivier Grisel 贡献。Fix 当传递稀疏矩阵但
accept_sparse为False时,check_array中的错误消息现在建议使用.toarray()而不是X.toarray()。 #27757 由 Lucy Liu 贡献。Fix 修复函数
check_array,当输入是 Series 而不是 DataFrame 时输出正确的错误消息。
#28090 由 Stan Furrer 和 Yao Xiao 贡献。
API Change
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-Feghhali, 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