.. include:: _contributors.rst .. currentmodule:: sklearn .. _release_notes_0_22: ============ 版本 0.22 ============ 有关此版本主要亮点简要描述,请参阅 :ref:`sphx_glr_auto_examples_release_highlights_plot_release_highlights_0_22_0.py` 。 .. include:: changelog_legend.inc .. _changes_0_22_2: 版本 0.22.2.post1 ==================== **2020年3月3日** 0.22.2.post1 版本包含源分发包的打包修复,但包内容与 0.22.2 版本(不带 .post1 后缀)的轮子内容相同。两者都包含以下更改。 更改日志 --------- :mod:`sklearn.impute` ..................... - |Efficiency| 通过分块成对距离计算,减少 :func:`impute.KNNImputer` 的渐近内存使用。 :pr:`16397` 由 `Joel Nothman`_ 贡献。 :mod:`sklearn.metrics` ...................... - |Fix| 修复了 `metrics.plot_roc_curve` 中的一个错误,其中估计器的名称被传递到 :class:`metrics.RocCurveDisplay` 中,而不是参数 `name` 。这导致在后续调用 :meth:`metrics.RocCurveDisplay.plot` 时绘图不同。 :pr:`16500` 由 :user:`Guillaume Lemaitre ` 贡献。 - |Fix| 修复了 `metrics.plot_precision_recall_curve` 中的一个错误,其中估计器的名称被传递到 :class:`metrics.PrecisionRecallDisplay` 中,而不是参数 `name` 。这导致在后续调用 :meth:`metrics.PrecisionRecallDisplay.plot` 时绘图不同。 :pr:`16505` 由 :user:`Guillaume Lemaitre ` 贡献。 :mod:`sklearn.neighbors` ........................ - |Fix| 修复了一个错误,该错误将数组列表转换为二维对象数组,而不是包含 NumPy 数组的 1 维数组。此错误影响了 :meth:`neighbors.NearestNeighbors.radius_neighbors` 。 :pr:`16076` 由 :user:`Guillaume Lemaitre ` 和 :user:`Alex Shacked ` 贡献。 .. _changes_0_22_1: 版本 0.22.1 ============== **2020年1月2日** 这是一个修复版本,主要解决0.22.0版本中的一些打包问题。它还包括一些文档改进和一些错误修复。 更新日志 --------- :mod:`sklearn.cluster` ...................... - |Fix| :class:`cluster.KMeans` 在 ``algorithm="elkan"`` 时现在使用与默认 ``algorithm="full"`` 相同的停止准则。:pr:`15930` 由 :user:`inder128` 提交。 :mod:`sklearn.inspection` ......................... - |Fix| :func:`inspection.permutation_importance` 在给定 `random_state` 时,无论 `n_jobs=1` 还是 `n_jobs>1` ,无论使用共享内存后端(线程安全)还是独立内存、基于进程的后端,都将返回相同的 `importances` 。同时避免将数据转换为对象类型,并避免在 `n_jobs>1` 时对大型数据框出现只读错误,如 :issue:`15810` 中所报告。:pr:`15898` 的后续工作,由 :user:`Shivam Gargsya ` 提交。:pr:`15933` 由 :user:`Guillaume Lemaitre ` 和 `Olivier Grisel`_ 提交。 - |Fix| `inspection.plot_partial_dependence` 和 :meth:`inspection.PartialDependenceDisplay.plot` 现在一致性地检查传入的轴数量。:pr:`15760` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.metrics` ...................... - |Fix| `metrics.plot_confusion_matrix` 现在在 `normalize` 无效时会引发错误。以前,它会在没有归一化的情况下正常运行。:pr:`15888` 由 `Hanmin Qin`_ 提交。 - |Fix| `metrics.plot_confusion_matrix` 现在正确地为标签颜色着色,以最大化与其背景的对比度。:pr:`15936` 由 `Thomas Fan`_ 和 :user:`DizietAsahi` 提交。 - |Fix| :func:`metrics.classification_report` 不再忽略 ``zero_division`` 关键字参数的值。:pr:`15879` 由 :user:`Bibhash Chandra Mitra ` 提交。 - |Fix| 修复了 `metrics.plot_confusion_matrix` 中的一个错误,以正确传递 `values_format` 参数给 :class:`metrics.ConfusionMatrixDisplay` 。 plot() 调用。:pr:`15937` 由 :user:`Stephen Blystone ` 提交。 :mod:`sklearn.model_selection` .............................. - |Fix| :class:`model_selection.GridSearchCV` 和 :class:`model_selection.RandomizedSearchCV` 接受在 `fit_params` 中提供的标量值。0.22 版本中的更改破坏了向后兼容性。 :pr:`15863` 由 :user:`Adrin Jalali ` 和 :user:`Guillaume Lemaitre ` 提交。 :mod:`sklearn.naive_bayes` .......................... - |Fix| 移除了 `naive_bayes.BaseNB` 中方法 `_check_X` 的 `abstractmethod` 装饰器,这可能会破坏继承自这个已弃用的公共基类的下游项目。 :pr:`15996` 由 :user:`Brigitta Sipőcz ` 提交。 :mod:`sklearn.preprocessing` ............................ - |Fix| :class:`preprocessing.QuantileTransformer` 现在保证 `quantiles_` 属性完全按非递减方式排序。 :pr:`15751` 由 :user:`Tirth Patel ` 提交。 :mod:`sklearn.semi_supervised` .............................. - |Fix| :class:`semi_supervised.LabelPropagation` 和 :class:`semi_supervised.LabelSpreading` 现在允许可调用核函数返回稀疏权重矩阵。 :pr:`15868` 由 :user:`Niklas Smedemark-Margulies ` 提交。 :mod:`sklearn.utils` .................... - |Fix| :func:`utils.check_array` 现在正确地将包含布尔列的 pandas DataFrame 转换为浮点数。 :pr:`15797` 由 `Thomas Fan`_ 提交。 - |Fix| :func:`utils.validation.check_is_fitted` 接受一个显式的 ``attributes`` 参数来检查特定属性作为已拟合估计器的显式标记。当没有提供显式的 ``attributes`` 时,仅使用以单个下划线结尾且不以双下划线开头的属性作为“已拟合”标记。 ``all_or_any`` 参数也不再被弃用。这一更改是为了恢复一些向后兼容性。 版本 0.21 中此工具的行为:由 `Thomas Fan`_ 提出的 :pr:`15947` 。 .. _changes_0_22: 版本 0.22.0 ============== **2019 年 12 月 3 日** 网站更新 -------------- `我们的网站 `_ 进行了改版,并赋予了全新的外观。由 `Thomas Fan`_ 提出的 :pr:`14849` 。 公共 API 的明确界定 ---------------------------------- Scikit-learn 有一个公共 API 和一个私有 API。 我们尽力不破坏公共 API,并且只引入不需要用户采取任何行动的向后兼容的更改。然而,在某些情况下这是不可能的,任何对公共 API 的更改都需经过两个次要版本的弃用周期。私有 API 没有公开文档,并且不受任何弃用周期的约束,因此用户不应依赖其稳定性。 一个函数或对象是公共的,如果它在 `API 参考 `_ 中有文档记录,并且可以通过不带前导下划线的导入路径导入。例如, ``sklearn.pipeline.make_pipeline`` 是公共的,而 `sklearn.pipeline._name_estimators` 是私有的。 ``sklearn.ensemble._gb.BaseEnsemble`` 也是私有的,因为整个 `_gb` 模块是私有的。 在 0.22 版本之前,一些工具实际上是公共的(没有前导下划线),而它们本应是私有的。在 0.22 版本中,这些工具已被正确地设为私有,并且公共 API 空间已被清理。此外,从大多数子模块导入现在已被弃用:例如,您应该使用 ``from sklearn.cluster import Birch`` 而不是 ``from sklearn.cluster.birch import Birch`` (实际上, ``birch.py`` 已被移动到 ``_birch.py`` )。 .. note:: 公共 API 中的所有工具都应在 `API 参考 `_ 中有文档记录。如果您发现一个公共工具(没有前导下划线)不在 API 参考中,请告知我们。 参考资料,这意味着它应该是私有的或已记录的。请通过打开一个问题让我们知道! 这项工作在 `issue 9250 `_ 和 `issue 12927 `_ 中进行了跟踪。 弃用:从现在开始使用 ``FutureWarning`` --------------------------------------- 在弃用一个功能时,scikit-learn 的先前版本通常会引发 ``DeprecationWarning`` 。由于 ``DeprecationWarnings`` 默认情况下不会被 Python 显示,scikit-learn 需要求助于自定义警告过滤器来始终显示这些警告。该过滤器有时会干扰用户的自定义警告过滤器。 从版本 0.22 开始,scikit-learn 将显示 ``FutureWarnings`` 用于弃用, `如 Python 文档所推荐 `_ 。 ``FutureWarnings`` 默认情况下总是被 Python 显示,因此自定义过滤器已被移除,scikit-learn 不再干扰用户过滤器。:pr:`15080` 由 `Nicolas Hug`_ 提供。 更改的模型 ---------- 以下估计器和函数,当使用相同的数据和参数进行拟合时,可能会产生与先前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机抽样程序的变化引起的。 - :class:`cluster.KMeans` 当 `n_jobs=1` 时。|Fix| - :class:`decomposition.SparseCoder` , :class:`decomposition.DictionaryLearning` , 和 :class:`decomposition.MiniBatchDictionaryLearning` |Fix| - :class:`decomposition.SparseCoder` 使用 `algorithm='lasso_lars'` |Fix| - :class:`decomposition.SparsePCA` 其中 `normalize_components` 由于弃用而无效。 - :class:`ensemble.HistGradientBoostingClassifier` 和 :class:`ensemble.HistGradientBoostingRegressor` |Fix|, |Feature|, |Enhancement|. - :class:`impute.IterativeImputer` 当 `X` 具有无缺失特征时。 值。 |Feature| - 当 `X` 是稀疏矩阵时,:class:`linear_model.Ridge` 。 |Fix| - :class:`model_selection.StratifiedKFold` 以及任何在分类器中使用 `cv=int` 的情况。 |Fix| - 使用 scipy >= 1.3 时的 :class:`cross_decomposition.CCA` 。 |Fix| 详细信息列在下面的变更日志中。 (虽然我们正努力通过提供这些信息来更好地告知用户,但我们不能保证此列表是完整的。) 变更日志 --------- .. 条目应按模块(按字母顺序)分组,并以前缀之一标记:|MajorFeature|、|Feature|、|Efficiency|、|Enhancement|、|Fix| 或 |API|(描述见 whats_new.rst)。 条目应按这些标签排序(例如,|Fix| 在 |Efficiency| 之后)。 非特定于某个模块的更改应列在 *多个模块* 或 *杂项* 下。 条目应以以下内容结束: :pr:`123456` by :user:`Joe Bloggs ` 。 其中 123456 是 *拉取请求* 编号,而不是问题编号。 :mod:`sklearn.base` ................... - |API| 从版本 0.24 开始,:meth:`base.BaseEstimator.get_params` 将引发 AttributeError,而不是为构造函数中的参数返回 None,但这些参数未作为实例上的属性存储。 :pr:`14464` by `Joel Nothman`_ 。 :mod:`sklearn.calibration` .......................... - |Fix| 修复了一个错误,该错误导致 :class:`calibration.CalibratedClassifierCV` 在给定类型为 `list` 的 `sample_weight` 参数时失败(在包装的估计器不支持 `sample_weights` 的情况下)。 :pr:`13575` by :user:`William de Vazelhes ` 。 :mod:`sklearn.cluster` ...................... - |Feature| :class:`cluster.SpectralClustering` 现在接受预计算的稀疏邻居图作为输入。 :issue:`10482` by `Tom Dupre la Tour`_ 和 :user:`Kumar Ashutosh ` 。 - |Enhancement| :class:`cluster.SpectralClustering` 现在接受一个 ``n_components`` 参数。此参数扩展了 `SpectralClustering` 类的功能,以匹配 :meth:`cluster.spectral_clustering` 。 :pr:`13726` 由 :user:`Shuzhe Xiao ` 提供。 - |Fix| 修复了 :class:`cluster.KMeans` 在 `n_jobs=1` 和 `n_jobs>1` 之间由于随机状态处理而产生不一致结果的错误。 :pr:`9288` 由 :user:`Bryan Yang ` 提供。 - |Fix| 修复了 :class:`cluster.KMeans` 中的 `elkan` 算法在大型数组上因整数索引溢出而产生段错误的问题。 :pr:`15057` 由 :user:`Vladimir Korolev ` 提供。 - |Fix| :class:`~cluster.MeanShift` 现在接受一个默认值为 300 的 :term:`max_iter` ,而不是总是使用默认的 300。它现在还公开了一个 ``n_iter_`` ,表示在每个种子上执行的最大迭代次数。:pr:`15120` 由 `Adrin Jalali`_ 提供。 - |Fix| :class:`cluster.AgglomerativeClustering` 和 :class:`cluster.FeatureAgglomeration` 现在在 `affinity='cosine'` 且 `X` 包含全零样本时会引发错误。:pr:`7943` 由 :user:`mthorrell` 提供。 :mod:`sklearn.compose` ...................... - |Feature| 添加了 :func:`compose.make_column_selector` ,它与 :class:`compose.ColumnTransformer` 一起使用,根据名称和数据类型选择 DataFrame 列。:pr:`12303` 由 `Thomas Fan`_ 提供。 - |Fix| 修复了 :class:`compose.ColumnTransformer` 在 NumPy 版本低于 1.12 时使用布尔列表无法正确选择列的错误。 :pr:`14510` 由 `Guillaume Lemaitre`_ 提供。 - |Fix| 修复了 :class:`compose.TransformedTargetRegressor` 未将 `**fit_params` 传递给底层回归器的错误。 :pr:`14890` 由 :user:`Miguel Cabrera ` 提供。 - |Fix| :class:`compose.ColumnTransformer` 现在要求 `fit` 和 `transform` 之间的特征数量保持一致。现在会引发一个 `FutureWarning` ,并在 0.24 版本中将引发错误。如果特征数量不一致, 如果特征不一致且使用了负索引,则会引发错误。:pr:`14544` 由 `Adrin Jalali`_ 提交。 :mod:`sklearn.cross_decomposition` .................................. - |Feature| :class:`cross_decomposition.PLSCanonical` 和 :class:`cross_decomposition.PLSRegression` 新增了 ``inverse_transform`` 函数,用于将数据转换回原始空间。 :pr:`15304` 由 :user:`Jaime Ferrando Huertas ` 提交。 - |Enhancement| :class:`decomposition.KernelPCA` 现在会正确检查求解器找到的特征值是否存在数值或条件问题。这确保了不同求解器(不同的 ``eigen_solver`` 选择)之间结果的一致性,包括 ``'randomized'`` 和 ``'lobpcg'`` 等近似求解器(参见 :issue:`12068` )。 :pr:`12145` 由 :user:`Sylvain Marié ` 提交。 - |Fix| 修复了一个错误,当 :class:`cross_decomposition.PLSCanonical` 和 :class:`cross_decomposition.PLSRegression` 使用目标矩阵 `Y` 进行拟合时,如果 `Y` 的第一列是常数,则会引发错误。 :issue:`13609` 由 :user:`Camila Williamson ` 提交。 - |Fix| :class:`cross_decomposition.CCA` 现在在 scipy 1.3 和之前的 scipy 版本中产生相同的结果。:pr:`15661` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.datasets` ....................... - |Feature| :func:`datasets.fetch_openml` 现在支持使用 pandas 处理异构数据,通过设置 `as_frame=True` 。:pr:`13902` 由 `Thomas Fan`_ 提交。 - |Feature| :func:`datasets.fetch_openml` 现在在返回的 Bunch 中包含 `target_names` 。:pr:`15160` 由 `Thomas Fan`_ 提交。 - |Enhancement| 参数 `return_X_y` 已添加到 :func:`datasets.fetch_20newsgroups` 和 :func:`datasets.fetch_olivetti_faces` 中。:pr:`14259` 由 :user:`Sourav Singh ` 提交。 - |Enhancement| :func:`datasets.make_classification` 现在接受类似数组的 `weights` 参数,即列表或 numpy.array,而不仅仅是列表。:pr:`14764` 由 :user:`Cat Chenal ` 提交。 - |Enhancement| 参数 `normalize` 被添加到 :func:`datasets.fetch_20newsgroups_vectorized` 中。 :pr:`14740` 由 :user:`Stéphan Tulkens ` 贡献。 - |Fix| 修复了 :func:`datasets.fetch_openml` 中的一个错误,该错误导致无法加载 包含被忽略特征的 OpenML 数据集。 :pr:`14623` 由 :user:`Sarra Habchi ` 贡献。 :mod:`sklearn.decomposition` ............................ - |Efficiency| 使用 `solver="mu"` 的 :class:`decomposition.NMF` 在稀疏输入矩阵上拟合时, 现在使用批处理来避免短暂分配一个大小为 (#非零元素, n_components) 的数组。 :pr:`15257` 由 :user:`Mart Willocx ` 贡献。 - |Enhancement| :func:`decomposition.dict_learning` 和 :func:`decomposition.dict_learning_online` 现在接受 `method_max_iter` 参数, 并将其传递给 :meth:`decomposition.sparse_encode` 。 :issue:`12650` 由 `Adrin Jalali`_ 贡献。 - |Enhancement| :class:`decomposition.SparseCoder` 、 :class:`decomposition.DictionaryLearning` 和 :class:`decomposition.MiniBatchDictionaryLearning` 现在接受一个 `transform_max_iter` 参数,并将其传递给 :func:`decomposition.dict_learning()` 或 :func:`decomposition.sparse_encode()` 。 :issue:`12650` 由 `Adrin Jalali`_ 贡献。 - |Enhancement| :class:`decomposition.IncrementalPCA` 现在接受稀疏矩阵作为输入, 将其分批转换为密集矩阵,从而避免一次性存储整个密集矩阵。 :pr:`13960` 由 :user:`Scott Gigante ` 贡献。 - |Fix| :func:`decomposition.sparse_encode()` 现在在 `algorithm='lasso_lars'` 时 将 `max_iter` 传递给底层的 :class:`linear_model.LassoLars` 。 :issue:`12650` 由 `Adrin Jalali`_ 贡献。 :mod:`sklearn.dummy` .................... - |Fix| :class:`dummy.DummyClassifier` 现在处理在多输出情况下检查提供的常量是否存在。 :pr:`14908` 由 :user:`Martina G. Vilas ` 贡献。 - |API| `strategy` 参数的默认值在 :class:`dummy.DummyClassifier` 的默认值将从 0.22 版本的 `'stratified'` 更改为 0.24 版本的 `'prior'` 。当使用默认值时,会引发一个 FutureWarning。:pr:`15382` 由 `Thomas Fan`_ 提交。 - |API| ``outputs_2d_`` 属性在 :class:`dummy.DummyClassifier` 和 :class:`dummy.DummyRegressor` 中已被弃用。它等同于 ``n_outputs > 1`` 。:pr:`14933` 由 `Nicolas Hug`_ 提交。 :mod:`sklearn.ensemble` ....................... - |MajorFeature| 添加了 :class:`ensemble.StackingClassifier` 和 :class:`ensemble.StackingRegressor` ,用于使用最终分类器或回归器堆叠预测器。:pr:`11047` 由 :user:`Guillaume Lemaitre ` 和 :user:`Caio Oliveira ` 以及 :pr:`15138` 由 :user:`Jon Cusick ` 提交。 - |MajorFeature| 对 :class:`ensemble.HistGradientBoostingClassifier` 和 :class:`ensemble.HistGradientBoostingRegressor` 进行了许多改进: - |Feature| 估计器现在原生支持带有缺失值的密集数据,无论是在训练还是预测时。它们还支持无限值。:pr:`13911` 和 :pr:`14406` 由 `Nicolas Hug`_ 、 `Adrin Jalali`_ 和 `Olivier Grisel`_ 提交。 - |Feature| 估计器现在有一个额外的 `warm_start` 参数,可以启用热启动。:pr:`14012` 由 :user:`Johann Faouzi ` 提交。 - |Feature| :func:`inspection.partial_dependence` 和 `inspection.plot_partial_dependence` 现在支持针对这两种估计器的快速 'recursion' 方法。:pr:`13769` 由 `Nicolas Hug`_ 提交。 - |Enhancement| 对于 :class:`ensemble.HistGradientBoostingClassifier` ,训练损失或得分现在在按类别分层的子样本上进行监控,以保持原始训练集的类别平衡。:pr:`14194` 由 :user:`Johann Faouzi ` 提交。 - |Enhancement| :class:`ensemble.HistGradientBoostingRegressor` 现在支持 'least_absolute_deviation' 损失。:pr:`13896` 由 `Nicolas Hug`_ 提交。 - |Fix| 估计器现在分别对训练和验证数据进行分箱,以避免任何数据泄露。:pr:`13933` 由 `Nicolas Hug`_ 提交。 - |Fix| 修复了一个早期停止在字符串目标上会中断的错误。:pr:`14710` 由 `Guillaume Lemaitre`_ 提交。 - |Fix| :class:`ensemble.HistGradientBoostingClassifier` 现在会在二分类问题中给出 ``categorical_crossentropy`` 损失时引发错误。:pr:`14869` 由 `Adrin Jalali`_ 提交。 请注意,0.21 版本的 pickles 在 0.22 版本中将无法使用。 - |Enhancement| 添加了 ``max_samples`` 参数,允许限制自助样本的大小小于数据集的大小。添加到 :class:`ensemble.RandomForestClassifier` 、:class:`ensemble.RandomForestRegressor` 、:class:`ensemble.ExtraTreesClassifier` 、:class:`ensemble.ExtraTreesRegressor` 。:pr:`14682` 由 :user:`Matt Hancock ` 和 :pr:`5963` 由 :user:`Pablo Duboue ` 提交。 - |Fix| :func:`ensemble.VotingClassifier.predict_proba` 在 `voting='hard'` 时将不再存在。:pr:`14287` 由 `Thomas Fan`_ 提交。 - |Fix| :class:`ensemble.VotingClassifier` 和 :class:`ensemble.VotingRegressor` 中的 `named_estimators_` 属性现在正确映射到被丢弃的估计器。以前,每当其中一个估计器被丢弃时, `named_estimators_` 映射都是不正确的。:pr:`15375` 由 `Thomas Fan`_ 提交。 - |Fix| 默认运行 :func:`utils.estimator_checks.check_estimator` 在 :class:`ensemble.VotingClassifier` 和 :class:`ensemble.VotingRegressor` 上。这解决了在 `predict` 期间由于底层估计器输出不一致的数组维度而导致的问题。请注意,未来应通过重构通用测试来替换它。:pr:`14305` 由 `Guillaume Lemaitre`_ 提交。 - |Fix| :class:`ensemble.AdaBoostClassifier` 根据文献中的决策函数计算概率。因此, `predict` 和 `predict_proba` 给出了一致的结果。 :pr:`14114` 由 `Guillaume Lemaitre`_ 提交。 - |Fix| 堆叠和投票估计器现在确保它们的底层估计器要么全是分类器,要么全是回归器。 :class:`ensemble.StackingClassifier` , :class:`ensemble.StackingRegressor` , 以及 :class:`ensemble.VotingClassifier` 和 :class:`ensemble.VotingRegressor` 现在会抛出一致的错误信息。 :pr:`15084` 由 `Guillaume Lemaitre`_ 提交。 - |Fix| :class:`ensemble.AdaBoostRegressor` 中损失应仅对具有非零权重的样本的最大值进行归一化。 :pr:`14294` 由 `Guillaume Lemaitre`_ 提交。 - |API| ``presort`` 在 :class:`ensemble.GradientBoostingClassifier` 和 :class:`ensemble.GradientBoostingRegressor` 中已被弃用,并且该参数不再生效。 建议用户使用 :class:`ensemble.HistGradientBoostingClassifier` 和 :class:`ensemble.HistGradientBoostingRegressor` 替代。 :pr:`14907` 由 `Adrin Jalali`_ 提交。 :mod:`sklearn.feature_extraction` ................................. - |Enhancement| 如果参数选择意味着在调用 :class:`feature_extraction.text.HashingVectorizer` , :class:`feature_extraction.text.CountVectorizer` 和 :class:`feature_extraction.text.TfidfVectorizer` 的 fit() 方法时另一个参数将不被使用, 现在会抛出警告。 :pr:`14602` 由 :user:`Gaurav Chawla ` 提交。 - |Fix| 由 `feature_extraction.text.VectorizerMixin` 的 ``build_preprocessor`` 和 ``build_analyzer`` 创建的函数现在可以被序列化。 :pr:`14430` 由 :user:`Dillon Niederhut ` 提交。 - |Fix| `feature_extraction.text.strip_accents_unicode` 现在能正确地从处于 NFKD 规范化形式的字符串中 移除重音。:pr:`15100` 由 :user:`Daniel Grady ` 提交。 - |Fix| 修复了一个导致 :class:`feature_extraction.DictVectorizer` 在处理大型输入数据时, 生成 `scipy.sparse` 矩阵的 `transform` 操作中抛出 `OverflowError` 的错误。 :pr:`15463` 由 :user:`Norvan Sahiner ` 提交。 - |API| 已弃用未使用的 `copy` 参数,用于 :meth:`feature_extraction.text.TfidfVectorizer.transform` ,将在 v0.24 中移除。:pr:`14520` 由 :user:`Guillem G. Subies ` 提交。 :mod:`sklearn.feature_selection` ................................ - |Enhancement| 更新了以下 :mod:`sklearn.feature_selection` 估计器,以允许在 ``transform`` 和 ``fit`` 中使用 NaN/Inf 值: :class:`feature_selection.RFE` 、:class:`feature_selection.RFECV` 、 :class:`feature_selection.SelectFromModel` 和 :class:`feature_selection.VarianceThreshold` 。请注意,如果特征选择器的底层估计器不允许 NaN/Inf,则仍会报错,但特征选择器本身不再不必要地强制执行此限制。:issue:`11635` 由 :user:`Alec Peters ` 提交。 - |Fix| 修复了一个错误,即当 `threshold=0` 时,:class:`feature_selection.VarianceThreshold` 由于数值不稳定而未移除常量特征,通过在这种情况下使用范围而不是方差来解决。:pr:`13704` 由 :user:`Roddy MacSween ` 提交。 :mod:`sklearn.gaussian_process` ............................... - |Feature| 结构化数据上的高斯过程模型::class:`gaussian_process.GaussianProcessRegressor` 和 :class:`gaussian_process.GaussianProcessClassifier` 现在可以接受一个通用对象列表(例如字符串、树、图等)作为其训练/预测方法的 ``X`` 参数。 用户定义的内核应提供用于计算通用对象之间内核矩阵的功能,并且应继承自 `gaussian_process.kernels.GenericKernelMixin` ,以通知 GPR/GPC 模型它处理非向量样本。:pr:`15557` 由 :user:`Yu-Hang Tang ` 提交。 - |Efficiency| :func:`gaussian_process.GaussianProcessClassifier.log_marginal_likelihood` 和 :func:`gaussian_process.GaussianProcessRegressor.log_marginal_likelihood` 现在接受一个 ``clone_kernel=True`` 关键字参数。当设置为 ``False`` 时, 内核属性被修改,但可能会带来性能提升。 :pr:`14378` 由 :user:`Masashi Shibata ` 提交。 - |API| 从版本 0.24 开始,:meth:`gaussian_process.kernels.Kernel.get_params` 将引发一个 ``AttributeError`` ,而不是返回 ``None`` 对于那些在估计器的构造函数中存在但未作为实例属性存储的参数。 :pr:`14464` 由 `Joel Nothman`_ 提交。 :mod:`sklearn.impute` ..................... - |MajorFeature| 新增 :class:`impute.KNNImputer` ,用于使用 k-近邻方法填补缺失值。 :issue:`12852` 由 :user:`Ashim Bhattarai ` 和 `Thomas Fan`_ 以及 :pr:`15010` 由 `Guillaume Lemaitre`_ 提交。 - |Feature| :class:`impute.IterativeImputer` 新增 `skip_compute` 标志,默认为 False,当设置为 True 时,将在拟合阶段跳过没有缺失值的特征的计算。 :issue:`13773` 由 :user:`Sergey Feldman ` 提交。 - |Efficiency| :meth:`impute.MissingIndicator.fit_transform` 避免重复计算掩码矩阵。 :pr:`14356` 由 :user:`Harsh Soni ` 提交。 - |Fix| :class:`impute.IterativeImputer` 现在可以在只有一个特征的情况下工作。 由 :user:`Sergey Feldman ` 提交。 - |Fix| 修复了 :class:`impute.IterativeImputer` 中的一个错误,该错误导致特征在 ``imputation_order`` 为 ``"ascending"`` 或 ``"descending"`` 时以相反的期望顺序进行填补。 :pr:`15393` 由 :user:`Venkatachalam N ` 提交。 :mod:`sklearn.inspection` ......................... - |MajorFeature| 新增 :func:`inspection.permutation_importance` ,用于测量任意训练模型中每个特征相对于给定评分函数的重要性。 :issue:`13146` 由 `Thomas Fan`_ 提交。 - |Feature| :func:`inspection.partial_dependence` 和 `inspection.plot_partial_dependence` 现在支持 :class:`ensemble.HistGradientBoostingClassifier` 和 :class:`ensemble.HistGradientBoostingRegressor` 的快速 'recursion' 方法。 :pr:`13769` 由 `Thomas Fan`_ 提交。 `Nicolas Hug`_ . - |Enhancement| `inspection.plot_partial_dependence` 已扩展,现在支持用户指南中描述的新可视化 API (:ref:`用户指南 ` )。:pr:`14646` 由 `Thomas Fan`_ 贡献。 - |Enhancement| :func:`inspection.partial_dependence` 接受 pandas DataFrame 和包含 :class:`compose.ColumnTransformer` 的 :class:`pipeline.Pipeline` 。此外,当传递 DataFrame 时, `inspection.plot_partial_dependence` 将默认使用列名。:pr:`14028` 和 :pr:`15429` 由 `Guillaume Lemaitre`_ 贡献。 :mod:`sklearn.kernel_approximation` ................................... - |Fix| 修复了在使用 `kernel="precomputed"` 时 :class:`kernel_approximation.Nystroem` 引发 `KeyError` 的错误。:pr:`14706` 由 :user:`Venkatachalam N ` 贡献。 :mod:`sklearn.linear_model` ........................... - |Efficiency| 'liblinear' 逻辑回归求解器现在更快且需要更少的内存。:pr:`14108` , :pr:`14170` , :pr:`14296` 由 :user:`Alex Henrie ` 贡献。 - |Enhancement| :class:`linear_model.BayesianRidge` 现在接受超参数 ``alpha_init`` 和 ``lambda_init`` ,可用于设置 :term:`fit` 中最大化过程的初始值。:pr:`13618` 由 :user:`Yoshihiro Uchida ` 贡献。 - |Fix| :class:`linear_model.Ridge` 现在在 `X` 为稀疏矩阵、 `solver="auto"` 且 `fit_intercept=True` 时正确拟合截距,因为此配置中的默认求解器已更改为 `sparse_cg` ,它可以使用稀疏数据拟合截距。:pr:`13995` 由 :user:`Jérôme Dockès ` 贡献。 - |Fix| 使用 `solver='sag'` 的 :class:`linear_model.Ridge` 现在接受 F 顺序和非连续数组,并进行转换而不是失败。:pr:`14458` 由 `Guillaume Lemaitre`_ 贡献。 - |Fix| :class:`linear_model.LassoCV` 在拟合最终模型时不再强制 ``precompute=False`` 。:pr:`14591` 由 `Andreas Müller`_ 贡献。 - |Fix| :class:`linear_model.RidgeCV` 和 :class:`linear_model.RidgeClassifierCV` 现在在 `cv=None` 时正确评分。 :pr:`14864` 由 :user:`Venkatachalam N ` 贡献。 - |Fix| 修复了 :class:`linear_model.LogisticRegressionCV` 中的一个错误,其中 ``scores_`` 、 ``n_iter_`` 和 ``coefs_paths_`` 属性在 ``penalty='elastic-net'`` 时顺序错误。 :pr:`15044` 由 `Nicolas Hug`_ 贡献。 - |Fix| :class:`linear_model.MultiTaskLassoCV` 和 :class:`linear_model.MultiTaskElasticNetCV` 在 X 为 int 类型且 `fit_intercept=True` 时。 :pr:`15086` 由 :user:`Alex Gramfort ` 贡献。 - |Fix| liblinear 求解器现在支持 ``sample_weight`` 。 :pr:`15038` 由 `Guillaume Lemaitre`_ 贡献。 :mod:`sklearn.manifold` ....................... - |Feature| :class:`manifold.Isomap` 、:class:`manifold.TSNE` 和 :class:`manifold.SpectralEmbedding` 现在接受预计算的稀疏邻居图作为输入。 :issue:`10482` 由 `Tom Dupre la Tour`_ 和 :user:`Kumar Ashutosh ` 贡献。 - |Feature| 在 :class:`manifold.TSNE` 中公开了 ``n_jobs`` 参数,用于多核计算邻居图。 当 ``metric="precomputed"`` 或 ( ``metric="euclidean"`` 且 ``method="exact"`` ) 时,此参数无影响。 :issue:`15082` 由 `Roman Yurchak`_ 贡献。 - |Efficiency| 通过并行计算梯度,提高了 ``method="barnes-hut"`` 时 :class:`manifold.TSNE` 的效率。 :pr:`13213` 由 :user:`Thomas Moreau ` 贡献。 - |Fix| 修复了一个错误,其中 :func:`manifold.spectral_embedding` (因此 :class:`manifold.SpectralEmbedding` 和 :class:`cluster.SpectralClustering` ) 在 ``eigen_solver='amg'`` 且 ``n_samples < 5 * n_components`` 时计算错误的特征值。 :pr:`14647` 由 `Andreas Müller`_ 贡献。 - |Fix| 修复了 :func:`manifold.spectral_embedding` 在 :class:`manifold.SpectralEmbedding` 和 :class:`cluster.SpectralClustering` 中使用的错误, 其中 ``eigen_solver="amg"`` 有时会导致 LinAlgError。 :issue:`13393` 由 :user:`Andrew Knyazev ` 提交 :pr:`13707` 由 :user:`Scott White ` 提交 - |API| 弃用 :class:`manifold.Isomap` 中未使用的 ``training_data_`` 属性。:issue:`10482` 由 `Tom Dupre la Tour`_ 提交。 :mod:`sklearn.metrics` ...................... - |MajorFeature| `metrics.plot_roc_curve` 已添加,用于绘制 ROC 曲线。此函数引入了 :ref:`用户指南 ` 中描述的可视化 API。:pr:`14357` 由 `Thomas Fan`_ 提交。 - |Feature| 为多个分类指标添加了新的参数 ``zero_division`` ::func:`metrics.precision_score` , :func:`metrics.recall_score` , :func:`metrics.f1_score` , :func:`metrics.fbeta_score` , :func:`metrics.precision_recall_fscore_support` , :func:`metrics.classification_report` 。这允许为定义不明确的指标设置返回值。:pr:`14900` 由 :user:`Marc Torrellas Socastro ` 提交。 - |Feature| 添加了 :func:`metrics.pairwise.nan_euclidean_distances` 指标,该指标在存在缺失值的情况下计算欧几里得距离。:issue:`12852` 由 :user:`Ashim Bhattarai ` 和 `Thomas Fan`_ 提交。 - |Feature| 新增了排名指标 :func:`metrics.ndcg_score` 和 :func:`metrics.dcg_score` ,用于计算折现累积增益和归一化折现累积增益。:pr:`9951` 由 :user:`Jérôme Dockès ` 提交。 - |Feature| `metrics.plot_precision_recall_curve` 已添加,用于绘制精确召回曲线。:pr:`14936` 由 `Thomas Fan`_ 提交。 - |Feature| `metrics.plot_confusion_matrix` 已添加,用于绘制混淆矩阵。:pr:`15083` 由 `Thomas Fan`_ 提交。 - |Feature| 为 :func:`metrics.roc_auc_score` 添加了多类支持,并相应地添加了评分器 `'roc_auc_ovr'` , `'roc_auc_ovo'` , `'roc_auc_ovr_weighted'` , 和 `'roc_auc_ovo_weighted'` 。:pr:`12789` 和 :pr:`15274` 由 :user:`Kathy Chen ` , :user:`Mohamed Maskani ` , 和 `Thomas Fan`_ 提交。 - |Feature| 添加了 :class:`metrics.mean_tweedie_deviance` 用于测量给定 ``power`` 参数的 Tweedie 偏差。还添加了均值泊松偏差 :class:`metrics.mean_poisson_deviance` 和均值伽马偏差 :class:`metrics.mean_gamma_deviance` ,它们分别是 ``power=1`` 和 ``power=2`` 时 Tweedie 偏差的特例。:pr:`13938` 由 :user:`Christian Lorentzen ` 和 `Roman Yurchak`_ 贡献。 - |Efficiency| 改进了在稀疏矩阵情况下 :func:`metrics.pairwise.manhattan_distances` 的性能。:pr:`15049` 由 `Paolo Toccaceli ` 贡献。 - |Enhancement| :func:`metrics.fbeta_score` 中的参数 ``beta`` 更新为接受零值和 `float('+inf')` 值。:pr:`13231` 由 :user:`Dong-hee Na ` 贡献。 - |Enhancement| 在 :func:`metrics.mean_squared_error` 中添加了参数 ``squared`` ,以返回均方根误差。:pr:`13467` 由 :user:`Urvang Patel ` 贡献。 - |Enhancement| 允许在没有真正正值的情况下计算平均指标。:pr:`14595` 由 `Andreas Müller`_ 贡献。 - |Enhancement| 多标签指标现在支持列表的列表作为输入。:pr:`14865` 由 :user:`Srivatsan Ramesh ` 、:user:`Herilalaina Rakotoarison ` 、:user:`Léonard Binet ` 贡献。 - |Enhancement| :func:`metrics.median_absolute_error` 现在支持 ``multioutput`` 参数。:pr:`14732` 由 :user:`Agamemnon Krasoulis ` 贡献。 - |Enhancement| 'roc_auc_ovr_weighted' 和 'roc_auc_ovo_weighted' 现在可以用作模型选择工具的 :term:`scoring` 参数。:pr:`14417` 由 `Thomas Fan`_ 贡献。 - |Enhancement| :func:`metrics.confusion_matrix` 接受一个 `normalize` 参数,允许按列、行或整体归一化混淆矩阵。:pr:`15625` 由 `Guillaume Lemaitre ` 贡献。 - |Fix| 当预计算的距离矩阵包含非零对角线项时,在 :func:`metrics.silhouette_score` 中引发 ValueError。 :pr:`12258` 由 :user:`Stephen Tierney ` 提交。 - |API| 应使用 ``scoring="neg_brier_score"`` 代替已弃用的 ``scoring="brier_score_loss"`` 。 :pr:`14898` 由 :user:`Stefan Matcovici ` 提交。 :mod:`sklearn.model_selection` .............................. - |Efficiency| 改进了 :func:`model_selection.cross_validate` 、 :class:`model_selection.GridSearchCV` 和 :class:`model_selection.RandomizedSearchCV` 中的多指标评分性能。 :pr:`14593` 由 `Thomas Fan`_ 提交。 - |Enhancement| :class:`model_selection.learning_curve` 现在接受参数 ``return_times`` , 可用于检索计算时间以绘制模型可扩展性(参见 learning_curve 示例)。 :pr:`13938` 由 :user:`Hadrien Reboul ` 提交。 - |Enhancement| :class:`model_selection.RandomizedSearchCV` 现在接受参数分布列表。 :pr:`14549` 由 `Andreas Müller`_ 提交。 - |Fix| 重新实现了 :class:`model_selection.StratifiedKFold` 以修复一个测试集可能比另一个大 `n_classes` 的问题。 现在测试集的大小应该接近相等。 :pr:`14704` 由 `Joel Nothman`_ 提交。 - |Fix| :class:`model_selection.GridSearchCV` 和 :class:`model_selection.RandomizedSearchCV` 的 `cv_results_` 属性现在仅包含未拟合的估计器。 这可能会节省大量内存,因为估计器的状态不会被存储。 :pr:`#15096` 由 `Andreas Müller`_ 提交。 - |API| :class:`model_selection.KFold` 和 :class:`model_selection.StratifiedKFold` 现在会在 `random_state` 被设置但 `shuffle` 为 False 时发出警告。 这在 0.24 版本中将引发错误。 :mod:`sklearn.multioutput` .......................... - |Fix| :class:`multioutput.MultiOutputClassifier` 现在具有属性 ``classes_`` 。 :pr:`14629` 由 :user:`Agamemnon Krasoulis ` 提交。 - |Fix| :class:`multioutput.MultiOutputClassifier` 现在具有 `predict_proba` 属性,并且可以通过 `hasattr` 进行检查。 :issue:`15488` :pr:`15490` 由 :user:`Rebekah Kim ` 提交 :mod:`sklearn.naive_bayes` ............................... - |MajorFeature| 新增 :class:`naive_bayes.CategoricalNB` ,实现了分类朴素贝叶斯分类器。 :pr:`12569` 由 :user:`Tim Bicker ` 和 :user:`Florian Wilhelm ` 提交。 :mod:`sklearn.neighbors` ........................ - |MajorFeature| 新增 :class:`neighbors.KNeighborsTransformer` 和 :class:`neighbors.RadiusNeighborsTransformer` ,它们将输入数据集转换为稀疏邻域图。 这些转换器提供了对最近邻计算的更精细控制,并支持多次使用的管道缓存。 :issue:`10482` 由 `Tom Dupre la Tour`_ 提交。 - |Feature| :class:`neighbors.KNeighborsClassifier` , :class:`neighbors.KNeighborsRegressor` , :class:`neighbors.RadiusNeighborsClassifier` , :class:`neighbors.RadiusNeighborsRegressor` , 以及 :class:`neighbors.LocalOutlierFactor` 现在接受预计算的稀疏邻域图作为输入。 :issue:`10482` 由 `Tom Dupre la Tour`_ 和 :user:`Kumar Ashutosh ` 提交。 - |Feature| :class:`neighbors.RadiusNeighborsClassifier` 现在支持通过 `predict_proba` 预测概率,并支持更多的异常标签选项:'most_frequent',或为多输出提供不同的异常标签。 :pr:`9597` 由 :user:`Wenbo Zhao ` 提交。 - |Efficiency| 对 :func:`neighbors.RadiusNeighborsClassifier.predict` 的效率改进。 :pr:`9597` 由 :user:`Wenbo Zhao ` 提交。 - |Fix| :class:`neighbors.KNeighborsRegressor` 现在在 `metric='precomputed'` 且拟合非方阵数据时抛出错误。 :pr:`14336` 由 :user:`Gregory Dexter ` 提交。 :mod:`sklearn.neural_network` ............................. - |Feature| 在 `neural_network.BaseMultilayerPerceptron` 、 :class:`neural_network.MLPRegressor` 和 :class:`neural_network.MLPClassifier` 中添加 `max_fun` 参数,以控制函数调用的最大次数。 最大函数评估次数,未达到 ``tol`` 改进。 :issue:`9274` 由 :user:`Daniel Perry ` 提交。 :mod:`sklearn.pipeline` ....................... - |Enhancement| :class:`pipeline.Pipeline` 现在支持 :term:`score_samples` ,如果最终估计器支持的话。 :pr:`13806` 由 :user:`Anaël Beaugnon ` 提交。 - |Fix| :class:`~pipeline.FeatureUnion` 中的 `fit` 现在接受 `fit_params` , 以传递给底层转换器。:pr:`15119` 由 `Adrin Jalali`_ 提交。 - |API| 在 :class:`pipeline.FeatureUnion` 中使用 `None` 作为转换器现已弃用。 请改用 `'drop'` 。:pr:`15053` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.preprocessing` ............................ - |Efficiency| 当输入数据为密集时,:class:`preprocessing.PolynomialFeatures` 现在更快。 :pr:`13290` 由 :user:`Xavier Dupré ` 提交。 - |Enhancement| 在拟合预处理器 :class:`preprocessing.StandardScaler` 、:class:`preprocessing.MinMaxScaler` 、 :class:`preprocessing.MaxAbsScaler` 、:class:`preprocessing.RobustScaler` 和 :class:`preprocessing.QuantileTransformer` 时避免不必要的数据复制,从而略微提高性能。 :pr:`13987` 由 `Roman Yurchak`_ 提交。 - |Fix| 当拟合非方形的 :class:`preprocessing.KernelCenterer` 时,KernelCenterer 现在会抛出错误。 :pr:`14336` 由 :user:`Gregory Dexter ` 提交。 :mod:`sklearn.model_selection` .............................. - |Fix| :class:`model_selection.GridSearchCV` 和 `model_selection.RandomizedSearchCV` 现在支持 `_pairwise` 属性,这可以防止在具有成对输入的估计器(例如当 :term:`metric` 设置为 'precomputed' 时的 :class:`neighbors.KNeighborsClassifier` )进行交叉验证时出现错误。 :pr:`13925` 由 :user:`Isaac S. Robson ` 和 :pr:`15524` 由 :user:`Xun Tang ` 提交。 :mod:`sklearn.svm` .................. - |Enhancement| :class:`svm.SVC` 和 :class:`svm.NuSVC` 现在接受一个 ``break_ties`` 参数。此参数导致 :term:`predict` 根据 :term:`decision_function` 的置信度值来打破平局,如果 ``decision_function_shape='ovr'`` ,并且目标类别数 > 2。:pr:`12557` 由 `Adrin Jalali`_ 提交。 - |Enhancement| SVM 估计器现在在 `kernel='precomputed'` 且拟合非方阵数据时抛出更具体的错误。:pr:`14336` 由 :user:`Gregory Dexter ` 提交。 - |Fix| :class:`svm.SVC` , :class:`svm.SVR` , :class:`svm.NuSVR` 和 :class:`svm.OneClassSVM` 在方法 fit() 中接收到的参数 ``sample_weight`` 为负数或零时,生成了无效模型。此行为仅在某些边界场景中发生。现在在这些情况下,fit() 将抛出异常。:pr:`14286` 由 :user:`Alex Shacked ` 提交。 - |Fix| :class:`svm.SVR` 和 :class:`svm.OneClassSVM` 的 `n_support_` 属性之前未初始化,大小为 2。现在大小为 1,并具有正确的值。:pr:`15099` 由 `Nicolas Hug`_ 提交。 - |Fix| 修复了 `BaseLibSVM._sparse_fit` 中的一个错误,其中 n_SV=0 引发了 ZeroDivisionError。:pr:`14894` 由 :user:`Danna Naser ` 提交。 - |Fix| liblinear 求解器现在支持 ``sample_weight`` 。:pr:`15038` 由 `Guillaume Lemaitre`_ 提交。 :mod:`sklearn.tree` ................... - |Feature| 增加了最小成本复杂度剪枝,由 ``ccp_alpha`` 控制,适用于 :class:`tree.DecisionTreeClassifier` , :class:`tree.DecisionTreeRegressor` , :class:`tree.ExtraTreeClassifier` , :class:`tree.ExtraTreeRegressor` , :class:`ensemble.RandomForestClassifier` , :class:`ensemble.RandomForestRegressor` , :class:`ensemble.ExtraTreesClassifier` , :class:`ensemble.ExtraTreesRegressor` , :class:`ensemble.GradientBoostingClassifier` , 和 :class:`ensemble.GradientBoostingRegressor` 。:pr:`12887` 由 `Thomas Fan`_ 提交。 - |API| ``presort`` 在 :class:`tree.DecisionTreeClassifier` 和 :class:`tree.DecisionTreeRegressor` ,并且该参数没有效果。 :pr:`14907` 由 `Adrin Jalali`_ 提交。 - |API| :class:`tree.DecisionTreeRegressor` 的 ``classes_`` 和 ``n_classes_`` 属性现已弃用。:pr:`15028` 由 :user:`Mei Guan ` 、 `Nicolas Hug`_ 和 `Adrin Jalali`_ 提交。 :mod:`sklearn.utils` .................... - |Feature| :func:`~utils.estimator_checks.check_estimator` 现在可以通过设置 `generate_only=True` 来生成检查。以前,运行 :func:`~utils.estimator_checks.check_estimator` 会在第一个检查失败时停止。通过 `generate_only=True` ,所有检查可以独立运行并报告失败的检查。更多信息请参阅 :ref:`rolling_your_own_estimator` 。:pr:`14381` 由 `Thomas Fan`_ 提交。 - |Feature| 添加了一个特定于 pytest 的装饰器, :func:`~utils.estimator_checks.parametrize_with_checks` ,用于为一系列估计器参数化估计器检查。:pr:`14381` 由 `Thomas Fan`_ 提交。 - |Feature| 新增了一个随机变量 `utils.fixes.loguniform` ,实现了对数均匀随机变量(例如,用于 RandomizedSearchCV)。 例如,对于 ``loguniform(1, 100)`` ,结果 ``1`` 、 ``10`` 和 ``100`` 的概率是相等的。参见 :issue:`11232` 由 :user:`Scott Sievert ` 和 :user:`Nathaniel Saul ` 提交, 以及 `SciPy PR 10815 ` 。 - |Enhancement| `utils.safe_indexing` (现已弃用)接受一个 ``axis`` 参数,用于对数组类对象进行行和列索引。列索引可以对 NumPy 数组、SciPy 稀疏矩阵和 Pandas DataFrame 进行。另外还进行了一些重构。:pr:`14035` 和 :pr:`14475` 由 `Guillaume Lemaitre`_ 提交。 - |Enhancement| :func:`utils.extmath.safe_sparse_dot` 可以在 3D+ ndarray 和稀疏矩阵之间工作。 :pr:`14538` 由 :user:`Jérémie du Boisberranger ` 提交。 - |Fix| :func:`utils.check_array` 现在会引发错误而不是将 NaN 转换为整数。 :pr:`14872` 由 `Roman Yurchak`_ 提交。 - |Fix| :func:`utils.check_array` 现在能够正确检测 pandas 数据框中的数值类型,修复了一个 bug,该 bug 导致 ``float32`` 不必要地向上转换为 ``float64`` 。:pr:`15094` 由 `Andreas Müller`_ 提交。 - |API| 以下工具函数已被弃用并转为私有: - ``choose_check_classifiers_labels`` - ``enforce_estimator_tags_y`` - ``mocking.MockDataFrame`` - ``mocking.CheckingClassifier`` - ``optimize.newton_cg`` - ``random.random_choice_csc`` - ``utils.choose_check_classifiers_labels`` - ``utils.enforce_estimator_tags_y`` - ``utils.optimize.newton_cg`` - ``utils.random.random_choice_csc`` - ``utils.safe_indexing`` - ``utils.mocking`` - ``utils.fast_dict`` - ``utils.seq_dataset`` - ``utils.weight_vector`` - ``utils.fixes.parallel_helper`` (已移除) - 所有 ``utils.testing`` 中的内容,除了现在位于 ``utils`` 中的 ``all_estimators`` 。 :mod:`sklearn.isotonic` .................................. - |Fix| 修复了一个 bug,当 `X.dtype == 'float32'` 且 `X.dtype != y.dtype` 时,:class:`isotonic.IsotonicRegression.fit` 会引发错误。:pr:`14902` 由 :user:`Lucas ` 提交。 其他 ............. - |Fix| 从 SciPy 移植 `lobpcg` ,实现了一些 bug 修复,但仅在 1.3+ 版本中可用。:pr:`13609` 和 :pr:`14971` 由 `Guillaume Lemaitre`_ 提交。 - |API| Scikit-learn 现在将任何实现鸭子数组的数据结构转换为 numpy 数组(使用 ``__array__`` ),以确保一致的行为,而不是依赖于 ``__array_function__`` (参见 `NEP 18 `_ )。:pr:`14702` 由 `Andreas Müller`_ 提交。 - |API| 用 ``check_is_fitted`` 替换手动检查。使用未拟合的估计器时抛出的错误现在更加统一。:pr:`13013` 由 :user:`Agamemnon Krasoulis ` 提交。 估计器检查的变更 --------------------------- 这些变更主要影响库的开发者。 - 现在,如果 ``predict`` 或 ``transform`` 在 ``fit`` 之前被调用,估计器应抛出 ``NotFittedError`` ;之前抛出 ``AttributeError`` 或 ``ValueError`` 也是可以接受的。 :pr:`13013` 由 :user:`Agamemnon Krasoulis ` 贡献。 - 现在支持仅二分类的分类器在估计器检查中。 这类分类器需要有 `binary_only=True` 估计器标签。 :pr:`13875` 由 `Trevor Stephens`_ 贡献。 - 估计器应将输入数据( ``X`` , ``y`` , ``sample_weights`` )转换为 :class:`numpy.ndarray` ,并且永远不要在传递的原始数据类型上调用 ``__array_function__`` (参见 `NEP 18 `_ )。 :pr:`14702` 由 `Andreas Müller`_ 贡献。 - `requires_positive_X` 估计器标签(适用于需要 X 为非负的模型)现在被 :meth:`utils.estimator_checks.check_estimator` 使用,以确保在 X 包含一些负值条目时抛出适当的错误消息。 :pr:`14680` 由 :user:`Alex Gramfort ` 贡献。 - 添加了检查成对估计器在非方阵数据上抛出错误的检查 :pr:`14336` 由 :user:`Gregory Dexter ` 贡献。 - 添加了两个常见的多输出估计器测试 `utils.estimator_checks.check_classifier_multioutput` 和 `utils.estimator_checks.check_regressor_multioutput` 。 :pr:`13392` 由 :user:`Rok Mihevc ` 贡献。 - |Fix| 在缺失的检查中添加了 ``check_transformer_data_not_an_array`` - |Fix| 估计器标签解析现在遵循常规的 MRO。它们以前只能被覆盖一次。:pr:`14884` 由 `Andreas Müller`_ 贡献。 .. rubric:: 代码和文档贡献者 感谢自版本 0.21 以来为项目的维护和改进做出贡献的每一个人,包括: Aaron Alphonsus, Abbie Popa, Abdur-Rahmaan Janhangeer, abenbihi, Abhinav Sagar, Abhishek Jana, Abraham K. Lagat, Adam J. Stewart, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Alec Peters, Alessandro Surace, Alexandre de Siqueira, Alexandre Gramfort, alexgoryainov, Alex Henrie, Alex Itkes, alexshacked, Allen Akinkunle, Anaël Beaugnon, Anders Kaseorg, Andrea Maldonado, Andrea Navarrete, Andreas Mueller, Andreas Schuderer, Andrew Nystrom, Angela Ambroz, Anisha Keshavan, Ankit Jha, Antonio Gutierrez, Anuja Kelkar, Archana Alva, arnaudstiegler, arpanchowdhry, ashimb9, Ayomide Bamidele, Baran Buluttekin, barrycg, Bharat Raghunathan, Bill Mill, Biswadip Mandal, blackd0t, Brian G. Barkley, Brian Wignall, Bryan Yang, c56pony, camilaagw, cartman_nabana, catajara, Cat Chenal, Cathy, cgsavard, Charles Vesteghem, Chiara Marmo, Chris Gregory, Christian Lorentzen, Christos Aridas, Dakota Grusak, Daniel Grady, Daniel Perry, Danna Naser, DatenBergwerk, David Dormagen, deeplook, Dillon Niederhut, Dong-hee Na, Dougal J. Sutherland, DrGFreeman, Dylan Cashman, edvardlindelof, Eric Larson, Eric Ndirangu, Eunseop Jeong, Fanny, federicopisanu, Felix Divo, flaviomorelli, FranciDona, Franco M. Luque, Frank Hoang, Frederic Haase, g0g0gadget, Gabriel Altay, Gabriel do Vale Rios, Gael Varoquaux, ganevgv, gdex1, getgaurav2, Gideon Sonoiya, Gordon Chen, gpapadok, Greg Mogavero, Grzegorz Szpak, Guillaume Lemaitre, Guillem García Subies, H4dr1en, hadshirt, Hailey Nguyen, Hanmin Qin, Hannah Bruce Macdonald, Harsh Mahajan, Harsh Soni, Honglu Zhang, Hossein Pourbozorg, Ian Sanders, Ingrid Spielman, J-A16, jaehong park, Jaime Ferrando Huertas, James Hill, James Myatt, Jay, jeremiedbb, Jérémie du Boisberranger, jeromedockes, Jesper Dramsch, Joan Massich, Joanna Zhang, Joel Nothman, Johann Faouzi, Jonathan Rahn, Jon Cusick, Jose Ortiz, Kanika Sabharwal, Katarina Slama, kellycarmody, Kennedy Kang'ethe, Kensuke Arai, Kesshi Jordan, Kevad, Kevin Loftis, Kevin Winata, Kevin Yu-Sheng Li, Kirill Dolmatov, Kirthi Shankar Sivamani, krishna katyal, Lakshmi Krishnan, Lakshya KD, LalliAcqua, lbfin, Leland McInnes, Léonard Binet, Loic Esteve, loopyme, lostcoaster, Louis Huynh, lrjball, Luca Ionescu, Lutz Roeder, MaggieChege, Maithreyi Venkatesh, Maltimore, Maocx, Marc Torrellas, Marie Douriez, Markus, Markus Frey, Martina G. Vilas, Martin Oywa, Martin Thoma, Masashi SHIBATA, Maxwell Aladago, mbillingr, m-clare, Meghann Agarwal, m.fab, Micah Smith, miguelbarao, Miguel Cabrera, Mina Naghshhnejad, Ming Li, motmoti, mschaffenroth, mthorrell, Natasha Borders, nezar-a, Nicolas Hug, Nidhin Pattaniyil, Nikita Titov, Nishan Singh Mann, Nitya Mandyam, norvan, notmatthancock, novaya, nxorable, Oleg Stikhin, Oleksandr Pavlyk, Olivier Grisel, Omar Saleem, Owen Flanagan, panpiort8, Paolo, Paolo Toccaceli, Paresh Mathur, Paula, Peng Yu, Peter Marko, pierretallotte, poorna-kumar, pspachtholz, qdeffense, Rajat Garg, Raphaël Bournhonesque, Ray, Ray Bell, Rebekah Kim, Reza Gharibi, Richard Payne, Richard W, rlms, Robert Juergens, Rok Mihevc, Roman Feldbauer, Roman Yurchak, R Sanjabi, RuchitaGarde, Ruth Waithera, Sackey, Sam Dixon, Samesh Lakhotia, Samuel Taylor, Sarra Habchi, Scott Gigante, Scott Sievert, Scott White, Sebastian Pölsterl, Sergey Feldman, SeWook Oh, she-dares, Shreya V, Shubham Mehta, Shuzhe Xiao, SimonCW, smarie, smujjiga, Sönke Behrends, Soumirai, Sourav Singh, stefan-matcovici, steinfurt, Stéphane Couvreur, Stephan Tulkens, Stephen Cowley, Stephen Tierney, SylvainLan, th0rwas, theoptips, theotheo, Thierno Ibrahima DIOP, Thomas Edwards, Thomas J Fan, Thomas Moreau, Thomas Schmitt, Tilen Kusterle, Tim Bicker, Timsaur, Tim Staley, Tirth Patel, Tola A, Tom Augspurger, Tom Dupré la Tour, topisan, Trevor Stephens, ttang131, Urvang Patel, Vathsala Achar, veerlosar, Venkatachalam N, Victor Luzgin, Vincent Jeanselme, Vincent Lostanlen, Vladimir Korolev, vnherdeiro, Wenbo Zhao, Wendy Hu, willdarnell, William de Vazelhes, wolframalpha, xavier dupré, xcjason, x-martian, xsat, xun-tang, Yinglr, yokasre, Yu-Hang "Maxin" Tang, Yulia Zamriy, Zhao Feng