.. include:: _contributors.rst .. currentmodule:: sklearn .. _release_notes_1_5: =========== 版本 1.5 =========== 有关本次发布主要亮点简要描述,请参阅 :ref:`sphx_glr_auto_examples_release_highlights_plot_release_highlights_1_5_0.py` 。 .. include:: changelog_legend.inc .. _changes_1_5_1: 版本 1.5.1 ============= **2024年7月** 影响多个模块的变更 ------------------------------ - |Fix| 修复了所有估计器输入数据验证中的一个回归问题,当传递由只读缓冲区支持的DataFrame时,会引发意外错误。 :pr:`29018` 由 :user:`Jérémie du Boisberranger ` 贡献。 - |Fix| 修复了在某些设置下导入时导致死锁的一个回归问题。 :pr:`29235` 由 :user:`Jérémie du Boisberranger ` 贡献。 变更日志 --------- :mod:`sklearn.compose` ...................... - |Efficiency| 修复了 :class:`compose.ColumnTransformer` 中的性能回归问题,当 `n_jobs > 1` 时,会为每个转换器复制完整输入数据。 :pr:`29330` 由 :user:`Jérémie du Boisberranger ` 贡献。 :mod:`sklearn.metrics` ...................... - |Fix| 修复了 :func:`metrics.r2_score` 中的一个回归问题。传递禁用数组API分派的torch CPU张量时,会抱怨非CPU设备,而不是隐式地将这些输入转换为常规NumPy数组。 :pr:`29119` 由 :user:`Olivier Grisel` 贡献。 - |Fix| 修复了 :func:`metrics.accuracy_score` 和 :func:`metrics.zero_one_loss` 中的一个回归问题,导致多标签输入的数组API分派时出错。 :pr:`29269` 由 :user:`Yaroslav Korobko ` 和 :pr:`29336` 由 :user:`Edoardo Abati ` 贡献。 :mod:`sklearn.model_selection` .............................. - |Fix| 修复了 :class:`model_selection.GridSearchCV` 中的一个回归问题,对于具有异构参数值的参数网格。 :pr:`29078` 由 :user:`Loïc Estève ` 贡献。 - |Fix| 修复了 :class:`model_selection.GridSearchCV` 中参数网格包含估计器作为参数值时的回归问题。 :pr:`29179` 由 :user:`Marco Gorelli` 提交。 - |Fix| 修复了 :class:`model_selection.GridSearchCV` 中参数网格包含不同大小数组作为参数值时的回归问题。 :pr:`29314` 由 :user:`Marco Gorelli` 提交。 :mod:`sklearn.tree` ................... - |Fix| 修复了 :func:`tree.export_graphviz` 和 :func:`tree.plot_tree` 在32位操作系统上可能导致异常或错误结果的问题。 :pr:`29327` 由 :user:`Loïc Estève` 提交。 :mod:`sklearn.utils` .................... - |API| :func:`utils.validation.check_array` 新增了一个参数 `force_writeable` ,用于控制输出数组的可写性。如果设置为 `True` ,输出数组将被保证为可写的,如果输入数组是只读的,则会进行复制。如果设置为 `False` ,则不对输出数组的可写性做出保证。 :pr:`29018` 由 :user:`Jérémie du Boisberranger ` 提交。 .. _changes_1_5: 版本 1.5.0 ============= **2024年5月** 安全性 -------- - |Fix| :class:`feature_extraction.text.CountVectorizer` 和 :class:`feature_extraction.text.TfidfVectorizer` 不再在其 `stop_words_` 属性中存储训练集中丢弃的标记。该属性会包含过于频繁(超过 `max_df` )但同时也过于稀有(低于 `min_df` )的标记。这修复了一个潜在的安全问题(数据泄露),如果丢弃的稀有标记包含训练集中的敏感信息,而模型开发者并不知情。 注意:鼓励这些类的用户使用新版本的 scikit-learn 重新训练他们的管道,或者手动清除之前训练的这些转换器实例中的 `stop_words_` 属性。该属性仅设计用于模型检查目的,对转换器的行为没有影响。 :pr:`28823` 由 :user:`Olivier Grisel ` 提交。 更改的模型 ---------- - |Efficiency| :class:`preprocessing.QuantileTransformer` 中的子采样现在对密集数组更有效,但拟合的分位数和 `transform` 的结果可能与之前略有不同(保持相同的统计特性)。 :pr:`27344` 由 :user:`Xuefeng Xu ` 提交。 - |Enhancement| :class:`decomposition.PCA` 、:class:`decomposition.SparsePCA` 和 :class:`decomposition.TruncatedSVD` 现在根据组件值而不是使用转换后的数据作为参考来设置 `components_` 属性的符号。这一更改是为了能够在所有 `PCA` 求解器中提供一致的组件符号,包括在此版本中引入的新选项 `svd_solver="covariance_eigh"` 。 影响许多模块的更改 ------------------ - |Fix| 当传递一维稀疏数组给期望二维稀疏输入的方法时,抛出带有信息性错误消息的 `ValueError` 。 :pr:`28988` 由 :user:`Olivier Grisel ` 提交。 - |API| 估计器 `inverse_transform` 方法的输入名称已标准化为 `X` 。因此, `Xt` 已弃用,并将在版本 1.7 中移除,涉及以下估计器::class:`cluster.FeatureAgglomeration` 、:class:`decomposition.MiniBatchNMF` 、:class:`decomposition.NMF` 、:class:`model_selection.GridSearchCV` 、:class:`model_selection.RandomizedSearchCV` 、:class:`pipeline.Pipeline` 和 :class:`preprocessing.KBinsDiscretizer` 。 :pr:`28756` 由 :user:`Will Dean ` 提交。 对数组 API 的支持 ------------------ 已更新额外的估计器和函数,以包括对所有 `Array API `_ 兼容输入的支持。 详情请参阅 :ref:`array_api` 。 **函数:** - :func:`sklearn.metrics.r2_score` 现在支持数组 API 兼容的输入。 :pr:`27904` 由 :user:`Eric Lindgren ` , :user:`Franck Charras ` , :user:`Olivier Grisel ` 和 :user:`Tim Head ` 贡献。 **类:** - :class:`linear_model.Ridge` 现在支持 `svd` 求解器的数组 API。 更多详情请参见 :ref:`array_api` 。 :pr:`27800` 由 :user:`Franck Charras ` , :user:`Olivier Grisel ` 和 :user:`Tim Head ` 贡献。 使用 Meson 构建的支持 --------------------- 从 scikit-learn 1.5 开始,Meson 是构建 scikit-learn 的主要支持方式, 更多详情请参见 :ref:`从源代码构建 ` 。 除非我们发现重大障碍,否则将在 scikit-learn 1.6 中放弃对 setuptools 的支持。 1.5.x 版本将支持使用 setuptools 构建 scikit-learn。 Meson 支持构建 scikit-learn 是在 :pr:`28040` 中由 :user:`Loïc Estève ` 添加的。 元数据路由 ---------- 以下模型现在在其一个或多个方法中支持元数据路由。 更多详情请参见 :ref:`元数据路由用户指南 ` 。 - |Feature| :class:`impute.IterativeImputer` 现在在其 `fit` 方法中支持元数据路由。 :pr:`28187` 由 :user:`Stefanie Senger ` 贡献。 - |Feature| :class:`ensemble.BaggingClassifier` 和 :class:`ensemble.BaggingRegressor` 现在支持元数据路由。 `fit` 方法现在接受 ``**fit_params`` ,这些参数通过其 `fit` 方法传递给底层估计器。 :pr:`28432` 由 :user:`Adam Li ` 和 :user:`Benjamin Bossan ` 贡献。 - |Feature| :class:`linear_model.RidgeCV` 和 :class:`linear_model.RidgeClassifierCV` 现在在其 `fit` 方法中支持元数据路由, 并将元数据路由到底层的 :class:`model_selection.GridSearchCV` 对象或底层评分器。 :pr:`27560` 由 :user:`Omar Salman ` 贡献。 - |Feature| :class:`GraphicalLassoCV` 现在在其方法中支持元数据路由。 `fit` 方法并将元数据路由到 CV 分割器。 :pr:`27566` 由 :user:`Omar Salman ` 提供。 - |Feature| :class:`linear_model.RANSACRegressor` 现在支持在其 ``fit`` 、 ``score`` 和 ``predict`` 方法中进行元数据路由,并将元数据路由到其底层估计器的 ``fit`` 、 ``score`` 和 ``predict`` 方法。 :pr:`28261` 由 :user:`Stefanie Senger ` 提供。 - |Feature| :class:`ensemble.VotingClassifier` 和 :class:`ensemble.VotingRegressor` 现在支持元数据路由,并通过其 `fit` 方法将 ``**fit_params`` 传递给底层估计器。 :pr:`27584` 由 :user:`Stefanie Senger ` 提供。 - |Feature| :class:`pipeline.FeatureUnion` 现在支持在其 ``fit`` 和 ``fit_transform`` 方法中进行元数据路由,并将元数据路由到底层转换器的 ``fit`` 和 ``fit_transform`` 。 :pr:`28205` 由 :user:`Stefanie Senger ` 提供。 - |Fix| 修复了通过类属性设置的默认路由请求解析时的问题。 :pr:`28435` 由 `Adrin Jalali`_ 提供。 - |Fix| 修复了当 `set_{method}_request` 方法作为未绑定方法使用时的问题,这可能发生在尝试装饰它们时。 :pr:`28651` 由 `Adrin Jalali`_ 提供。 - |FIX| 防止在具有默认 `scoring` 参数( `None` )的估计器路由元数据时出现 `RecursionError` 。 :pr:`28712` 由 :user:`Stefanie Senger ` 提供。 变更日志 --------- .. 条目应按模块(按字母顺序)分组,并以前缀标签之一开头:|MajorFeature|、|Feature|、|Efficiency|、|Enhancement|、|Fix| 或 |API|(参见 whats_new.rst 中的描述)。 条目应按这些标签排序(例如,|Fix| 在 |Efficiency| 之后)。 非特定于某个模块的更改应列在 *多个模块* 或 *杂项* 下。 条目应以以下内容结束: :pr:`123456` 由 :user:`Joe Bloggs ` 提供。 其中 123455 是 *拉取请求* 编号,而不是问题编号。 :mod:`sklearn.calibration` .......................... - |Fix| 修复了 :class:`calibration.CalibratedClassifierCV` 中的一个回归问题,该问题在字符串目标时错误地抛出了异常。 :pr:`28843` 由 :user:`Jérémie du Boisberranger ` 贡献。 :mod:`sklearn.cluster` ...................... - |Fix| :class:`cluster.MeanShift` 类现在对于常数数据能够正确收敛。 :pr:`28951` 由 :user:`Akihiro Kuno ` 贡献。 - |Fix| 在 :class:`~cluster.OPTICS` 的 `fit` 方法中创建预计算稀疏矩阵的副本,以避免对稀疏矩阵的就地修改。 :pr:`28491` 由 :user:`Thanh Lam Dang ` 贡献。 - |Fix| :class:`cluster.HDBSCAN` 现在支持当 `algorithm="brute"` 或 `"auto"` 时,由 :func:`sklearn.metrics.pairwise_distances` 支持的所有度量。 :pr:`28664` 由 :user:`Manideep Yenugula ` 贡献。 :mod:`sklearn.compose` ...................... - |Feature| 已拟合的 :class:`compose.ColumnTransformer` 现在实现了 `__getitem__` ,可以通过名称返回已拟合的转换器。:pr:`27990` 由 `Thomas Fan`_ 贡献。 - |Enhancement| :class:`compose.TransformedTargetRegressor` 现在在 `fit` 中如果只提供了 `inverse_func` 而没有显式设置 `func` (默认是恒等函数),则会抛出错误。 :pr:`28483` 由 :user:`Stefanie Senger ` 贡献。 - |Enhancement| :class:`compose.ColumnTransformer` 现在可以在已拟合的 `transformers_` 属性中以列名或布尔掩码的形式暴露“剩余”列,而不是列索引。 :pr:`27657` 由 :user:`Jérôme Dockès ` 贡献。 - |Fix| 修复了 :class:`compose.ColumnTransformer` 在 `n_jobs > 1` 时的一个错误,其中中间选定的列作为只读数组传递给转换器。 :pr:`28822` 由 :user:`Jérémie du Boisberranger ` 贡献。 :mod:`sklearn.cross_decomposition` .................................. - |Fix| :class:`cross_decomposition.PLSRegression` 的 `coef_` 拟合属性 现在在 `scale=True` 时同时考虑了 `X` 和 `Y` 的尺度。请注意,先前预测的值并未受到此错误的影响。 :pr:`28612` 由 :user:`Guillaume Lemaitre ` 提交。 - |API| 在以下方法中弃用 `Y` 而改用 `y` : :class:`cross_decomposition.PLSRegression` , :class:`cross_decomposition.PLSCanonical` , :class:`cross_decomposition.CCA` , 以及 :class:`cross_decomposition.PLSSVD` 。 `Y` 将在版本 1.7 中移除。 :pr:`28604` 由 :user:`David Leon ` 提交。 :mod:`sklearn.datasets` ....................... - |Enhancement| 向以下函数添加了可选参数 `n_retries` 和 `delay` : :func:`datasets.fetch_20newsgroups` , :func:`datasets.fetch_20newsgroups_vectorized` , :func:`datasets.fetch_california_housing` , :func:`datasets.fetch_covtype` , :func:`datasets.fetch_kddcup99` , :func:`datasets.fetch_lfw_pairs` , :func:`datasets.fetch_lfw_people` , :func:`datasets.fetch_olivetti_faces` , :func:`datasets.fetch_rcv1` , 以及 :func:`datasets.fetch_species_distributions` 。 默认情况下,这些函数将在网络故障时重试最多 3 次。 :pr:`28160` 由 :user:`Zhehao Liu ` 和 :user:`Filip Karlo Došilović ` 提交。 :mod:`sklearn.decomposition` ............................ - |Efficiency| 使用 `svd_solver="full"` 的 :class:`decomposition.PCA` 现在分配了一个连续的 `components_` 属性,而不是非连续的奇异向量切片。当 `n_components << n_features` 时,这可以节省一些内存,更重要的是,通过利用连续数组的 BLAS GEMM 缓存局部性,可以加快后续 `transform` 方法的调用速度一个数量级以上。 :pr:`27491` 由 :user:`Olivier Grisel ` 提交。 - |Enhancement| :class:`~decomposition.PCA` 现在在 `svd_solver="auto"` 时自动选择 ARPACK 求解器以处理稀疏输入,而不是引发错误。 :pr:`28498` 由 :user:`Thanh Lam Dang ` 贡献。 - |Enhancement| :class:`decomposition.PCA` 现在支持一个新的求解器选项 `svd_solver="covariance_eigh"` , 对于数据点数量多而特征数量少的(例如 `n_samples >> 1000 > n_features` )数据集, 该选项提供了数量级的速度提升和内存使用减少。 `svd_solver="auto"` 选项已更新, 对于此类数据集会自动使用新求解器。此求解器还接受稀疏输入数据。 :pr:`27491` 由 :user:`Olivier Grisel ` 贡献。 - |Fix| :class:`decomposition.PCA` 在 `svd_solver="arpack"` 、 `whiten=True` 且 `n_components` 值大于训练集秩的情况下,对保留数据进行转换时不再返回无限值。 :pr:`27491` 由 :user:`Olivier Grisel ` 贡献。 :mod:`sklearn.dummy` .................... - |Enhancement| :class:`dummy.DummyClassifier` 和 :class:`dummy.DummyRegressor` 现在在 `fit` 后 具有 `n_features_in_` 和 `feature_names_in_` 属性。 :pr:`27937` 由 :user:`Marco vd Boom ` 贡献。 :mod:`sklearn.ensemble` ....................... - |Efficiency| 通过避免调用 `predict_proba` ,提高了 :class:`ensemble.HistGradientBoostingClassifier` 的 `predict` 运行时效率。 :pr:`27844` 由 :user:`Christian Lorentzen ` 贡献。 - |Efficiency| :class:`ensemble.HistGradientBoostingClassifier` 和 :class:`ensemble.HistGradientBoostingRegressor` 现在通过在寻找分箱阈值之前预排序数据,速度略有提升。 :pr:`28102` 由 :user:`Christian Lorentzen ` 贡献。 - |Fix| 修复了 :class:`ensemble.HistGradientBoostingClassifier` 和 :class:`ensemble.HistGradientBoostingRegressor` 在为非分类特征指定 `monotonic_cst` 时的错误。 :pr:`28925` 由 :user:`Xiao Yuan ` 贡献。 :mod:`sklearn.feature_extraction` ................................. - |Efficiency| :class:`feature_extraction.text.TfidfTransformer` 现在更快且更节省内存,通过使用 NumPy 向量而不是稀疏矩阵来存储逆文档频率。 :pr:`18843` 由 :user:`Paolo Montesel ` 贡献。 - |Enhancement| :class:`feature_extraction.text.TfidfTransformer` 现在如果输入矩阵的数据类型是 `np.float64` 或 `np.float32` ,则保留其数据类型。 :pr:`28136` 由 :user:`Guillaume Lemaitre ` 贡献。 :mod:`sklearn.feature_selection` ................................ - |Enhancement| :func:`feature_selection.mutual_info_regression` 和 :func:`feature_selection.mutual_info_classif` 现在支持 `n_jobs` 参数。 :pr:`28085` 由 :user:`Neto Menoci ` 和 :user:`Florin Andrei ` 贡献。 - |Enhancement| :class:`feature_selection.RFECV` 的 `cv_results_` 属性新增了一个键 `n_features` ,包含每个步骤中选择的特征数量的数组。 :pr:`28670` 由 :user:`Miguel Silva ` 贡献。 :mod:`sklearn.impute` ..................... - |Enhancement| :class:`impute.SimpleImputer` 现在支持通过传递函数而不是策略名称来自定义策略。 :pr:`28053` 由 :user:`Mark Elliot ` 贡献。 :mod:`sklearn.inspection` ......................... - |Fix| :meth:`inspection.DecisionBoundaryDisplay.from_estimator` 在提供 `polars.DataFrame` 时不再警告缺失特征名称。 :pr:`28718` 由 :user:`Patrick Wang ` 贡献。 :mod:`sklearn.linear_model` ........................... - |Enhancement| :class:`linear_model.LogisticRegression` 和 :class:`linear_model.LogisticRegressionCV` 中的求解器 `"newton-cg"` 现在在 `verbose` 设置为正值时发出信息。 :pr:`27526` 由 :user:`Christian Lorentzen ` 贡献。 - |Fix| :class:`linear_model.ElasticNet` 、:class:`linear_model.ElasticNetCV` 、 :class:`linear_model.Lasso` 和 :class:`linear_model.LassoCV` 现在明确不 接受大型稀疏数据格式。 :pr:`27576` 由 :user:`Stefanie Senger ` 提供。 - |Fix| :class:`linear_model.RidgeCV` 和 :class:`RidgeClassifierCV` 在 `cv` 为 None 时正确传递 `sample_weight` 给底层评分器。 :pr:`27560` 由 :user:`Omar Salman ` 提供。 - |Fix| :class:`linear_model.OrthogonalMatchingPursuit` 中的 `n_nonzero_coefs_` 属性 在设置 `tol` 时将始终为 `None` ,因为在此情况下 `n_nonzero_coefs` 被忽略。 :pr:`28557` 由 :user:`Lucy Liu ` 提供。 - |API| :class:`linear_model.RidgeCV` 和 :class:`linear_model.RidgeClassifierCV` 现在允许在 `cv != None` 时 `alpha=0` ,这与 :class:`linear_model.Ridge` 和 :class:`linear_model.RidgeClassifier` 一致。 :pr:`28425` 由 :user:`Lucy Liu ` 提供。 - |API| 在 :class:`linear_model.PassiveAggressiveClassifier` 、 :class:`linear_model.PassiveAggressiveRegressor` 、 :class:`linear_model.SGDClassifier` 、:class:`linear_model.SGDRegressor` 和 :class:`linear_model.SGDOneClassSVM` 中传递 `average=0` 以禁用平均已弃用。请改用 `average=False` 。 :pr:`28582` 由 :user:`Jérémie du Boisberranger ` 提供。 - |API| :class:`linear_model.LogisticRegression` 和 :class:`linear_model.LogisticRegressionCV` 中的参数 `multi_class` 已弃用。 `multi_class` 将在 1.7 版本中移除, 并且在内部,对于 3 个及以上的类别,它将始终使用多项式。 如果您仍想使用一对一方案,可以使用 `OneVsRestClassifier(LogisticRegression(..))` 。 :pr:`28703` 由 :user:`Christian Lorentzen ` 提供。 - |API| `store_cv_values` 和 `cv_values_` 在 `~linear_model.RidgeCV` 和 `~linear_model.RidgeClassifierCV` 中已弃用,取而代之的是 `store_cv_results` 和 `cv_results_` 。 :pr:`28915` 由 :user:`Lucy Liu ` 提供。 :mod:`sklearn.manifold` ....................... - |API| 在 :class:`manifold.TSNE` 中弃用 `n_iter` ,取而代之的是 `max_iter` 。 `n_iter` 将在版本 1.7 中移除。这使得 :class:`manifold.TSNE` 与其他估计器保持一致。:pr:`28471` 由 :user:`Lucy Liu ` 提交。 :mod:`sklearn.metrics` ...................... - |Feature| :func:`metrics.pairwise_distances` 现在也接受计算非数值数组的成对距离。这仅通过自定义度量标准支持。:pr:`27456` 由 :user:`Venkatachalam N ` 、:user:`Kshitij Mathur ` 和 :user:`Julian Libiseller-Egger ` 提交。 - |Feature| :func:`sklearn.metrics.check_scoring` 现在当 `scoring` 为 `dict` 、 `set` 、 `tuple` 或 `list` 时返回多度量评分器。:pr:`28360` 由 `Thomas Fan`_ 提交。 - |Feature| 新增了 :func:`metrics.d2_log_loss_score` ,用于计算对数损失的 D^2 分数。:pr:`28351` 由 :user:`Omar Salman ` 提交。 - |Efficiency| 提高了函数 :func:`~metrics.brier_score_loss` 、:func:`~calibration.calibration_curve` 、:func:`~metrics.det_curve` 、:func:`~metrics.precision_recall_curve` 、:func:`~metrics.roc_curve` 在指定 `pos_label` 参数时的效率。同时提高了 :class:`~metrics.RocCurveDisplay` 、:class:`~metrics.PrecisionRecallDisplay` 、:class:`~metrics.DetCurveDisplay` 、:class:`~calibration.CalibrationDisplay` 中方法 `from_estimator` 和 `from_predictions` 的效率。:pr:`28051` 由 :user:`Pierre de Fréminville ` 提交。 - |Fix| :class:`metrics.classification_report` 现在仅显示准确度而非微平均值,当输入是标签的子集时。:pr:`28399` 由 :user:`Vineet Joshi ` 提交。 - |Fix| 修复了在 Windows 上使用 OpenBLAS 0.3.26 时在成对距离计算中出现的死锁问题。这可能会影响基于邻居的算法。:pr:`28692` 由 :user:`Loïc Estève ` 提交。 - |API| :func:`metrics.precision_recall_curve` 弃用了关键字参数 `probas_pred` ,改为使用 `y_score` 。 `probas_pred` 将在版本 1.7 中移除。:pr:`28092` 由 :user:`Adam Li ` 提交。 - |API| :func:`metrics.brier_score_loss` 已弃用关键字参数 `y_prob` ,改为使用 `y_proba` 。 `y_prob` 将在版本 1.7 中移除。 :pr:`28092` 由 :user:`Adam Li ` 提交。 - |API| 对于分类器和分类指标,编码为字节的标签已弃用,并在 v1.7 中将引发错误。 :pr:`18555` 由 :user:`Kaushik Amar Das ` 提交。 :mod:`sklearn.mixture` ...................... - |Fix| :class:`mixture.GaussianMixture` 和 :class:`mixture.BayesianGaussianMixture` 的 `converged_` 属性现在反映了最佳拟合的收敛状态,而之前只要任何一个拟合收敛就为 `True` 。 :pr:`26837` 由 :user:`Krsto Proroković ` 提交。 :mod:`sklearn.model_selection` .............................. - |MajorFeature| :class:`model_selection.TunedThresholdClassifierCV` 通过交叉验证找到最大化分类指标的二分类器的决策阈值。 :class:`model_selection.FixedThresholdClassifier` 是另一种选择,当希望使用固定决策阈值而不进行任何调优时。 :pr:`26120` 由 :user:`Guillaume Lemaitre ` 提交。 - |Enhancement| 忽略组参数的 :term:`CV splitters ` 现在在传递组到 :term:`split` 时会引发警告。:pr:`28210` 由 `Thomas Fan`_ 提交。 - |Enhancement| :class:`~model_selection.GridSearchCV` 、 :class:`~model_selection.RandomizedSearchCV` 、 :class:`~model_selection.HalvingGridSearchCV` 和 :class:`~model_selection.HalvingRandomSearchCV` 的 HTML 图表表示将在 `refit=True` 时显示最佳估计器。:pr:`28722` 由 :user:`Yao Xiao ` 和 `Thomas Fan`_ 提交。 - |Fix| ``cv_results_`` 属性(属于 :class:`model_selection.GridSearchCV` )现在返回适当 NumPy 数据类型的掩码数组,而不是总是返回数据类型 ``object`` 。:pr:`28352` 由 :user:`Marco Gorelli` 提交。 - |Fix| :func:`model_selection.train_test_split` 现在可以处理 Array API 输入。 之前索引处理不正确,导致在使用严格实现的 Array API(如 CuPY)时出现异常。 :pr:`28407` 由 :user:`Tim Head ` 贡献。 :mod:`sklearn.multioutput` .......................... - |Enhancement| 向 :class:`multioutput.ClassifierChain` 添加了 `chain_method` 参数。 :pr:`27700` 由 :user:`Lucy Liu ` 贡献。 :mod:`sklearn.neighbors` ........................ - |Fix| 修复了 :class:`neighbors.NeighborhoodComponentsAnalysis` ,使得 `get_feature_names_out` 返回正确数量的特征名称。 :pr:`28306` 由 :user:`Brendan Lu ` 贡献。 :mod:`sklearn.pipeline` ....................... - |Feature| :class:`pipeline.FeatureUnion` 现在可以使用 `verbose_feature_names_out` 属性。如果为 `True` , `get_feature_names_out` 将在所有特征名称前加上生成该特征的转换器的名称。如果为 `False` , `get_feature_names_out` 将不会为任何特征名称添加前缀,并且在特征名称不唯一时会报错。 :pr:`25991` 由 :user:`Jiawei Zhang ` 贡献。 :mod:`sklearn.preprocessing` ............................ - |Enhancement| :class:`preprocessing.QuantileTransformer` 和 :func:`preprocessing.quantile_transform` 现在支持显式禁用子采样。 :pr:`27636` 由 :user:`Ralph Urlus ` 贡献。 :mod:`sklearn.tree` ................... - |Enhancement| 通过 :func:`tree.plot_tree` 在 matplotlib 中绘制树时,现在会显示 "True/False" 标签, 以指示样本在给定分割条件下遍历的方向。 :pr:`28552` 由 :user:`Adam Li ` 贡献。 :mod:`sklearn.utils` .................... - |Fix| :func:`~utils._safe_indexing` 现在可以正确处理 `axis=0` 时的 polars DataFrame, 并支持对 polars Series 进行索引。 :pr:`28521` 由 :user:`Yao Xiao ` 贡献。 - |API| :data:`utils.IS_PYPY` 已被弃用,并将在版本 1.7 中移除。 :pr:`28768` 由 :user:`Jérémie du Boisberranger ` 提交。 - |API| :func:`utils.tosequence` 已弃用,并将在版本 1.7 中移除。 :pr:`28763` 由 :user:`Jérémie du Boisberranger ` 提交。 - |API| :class:`utils.parallel_backend` 和 :func:`utils.register_parallel_backend` 已弃用,并将在版本 1.7 中移除。请改用 `joblib.parallel_backend` 和 `joblib.register_parallel_backend` 。 :pr:`28847` 由 :user:`Jérémie du Boisberranger ` 提交。 - |API| 在 :func:`~utils.multiclass.type_of_target` 中当以字节表示时,引发信息性警告消息。对于分类器和分类指标,以字节编码的标签已弃用,并将在 v1.7 中引发错误。 :pr:`18555` 由 :user:`Kaushik Amar Das ` 提交。 - |API| :func:`utils.estimator_checks.check_estimator_sparse_data` 被拆分为两个函数::func:`utils.estimator_checks.check_estimator_sparse_matrix` 和 :func:`utils.estimator_checks.check_estimator_sparse_array` 。 :pr:`27576` 由 :user:`Stefanie Senger ` 提交。 .. rubric:: 代码和文档贡献者 感谢自版本 1.4 以来为项目的维护和改进做出贡献的每一个人,包括: 101AlexMartin, Abdulaziz Aloqeely, Adam J. Stewart, Adam Li, Adarsh Wase, Adrin Jalali, Advik Sinha, Akash Srivastava, Akihiro Kuno, Alan Guedes, Alexis IMBERT, Ana Paula Gomes, Anderson Nelson, Andrei Dzis, Arnaud Capitaine, Arturo Amor, Aswathavicky, Bharat Raghunathan, Brendan Lu, Bruno, Cemlyn, Christian Lorentzen, Christian Veenhuis, Cindy Liang, Claudio Salvatore Arcidiacono, Connor Boyle, Conrad Stevens, crispinlogan, davidleon123, DerWeh, Dipan Banik, Duarte São José, DUONG, Eddie Bergman, Edoardo Abati, Egehan Gunduz, Emad Izadifar, Erich Schubert, Filip Karlo Došilović, Franck Charras, Gael Varoquaux, Gönül Aycı, Guillaume Lemaitre, Gyeongjae Choi, Harmanan Kohli, Hong Xiang Yue, Ian Faust, itsaphel, Ivan Wiryadi, Jack Bowyer, Javier Marin Tur, Jérémie du Boisberranger, Jérôme Dockès, Jiawei Zhang, Joel Nothman, Johanna Bayer, John Cant, John Hopfensperger, jpcars, jpienaar-tuks, Julian Libiseller-Egger, Julien Jerphanion, KanchiMoe, Kaushik Amar Das, keyber, Koustav Ghosh, kraktus, Krsto Proroković, ldwy4, LeoGrin, lihaitao, Linus Sommer, Loic Esteve, Lucy Liu, Lukas Geiger, manasimj, Manuel Labbé, Manuel Morales, Marco Edward Gorelli, Maren Westermann, Marija Vlajic, Mark Elliot, Mateusz Sokół, Mavs, Michael Higgins, Michael Mayer, miguelcsilva, Miki Watanabe, Mohammed Hamdy, myenugula, Nathan Goldbaum, Naziya Mahimkar, Neto, Olivier Grisel, Omar Salman, Patrick Wang, Pierre de Fréminville, Priyash Shah, Puneeth K, Rahil Parikh, raisadz, Raj Pulapakura, Ralf Gommers, Ralph Urlus, Randolf Scholz, Reshama Shaikh, Richard Barnes, Rodrigo Romero, Saad Mahmood, Salim Dohri, Sandip Dutta, SarahRemus, scikit-learn-bot, Shaharyar Choudhry, Shubham, sperret6, Stefanie Senger, Suha Siddiqui, Thanh Lam DANG, thebabush, Thomas J. Fan, Thomas Lazarus, Thomas Li, Tialo, Tim Head, Tuhin Sharma, VarunChaduvula, Vineet Joshi, virchan, Waël Boukhobza, Weyb, Will Dean, Xavier Beltran, Xiao Yuan, Xuefeng Xu, Yao Xiao