check_X_y#

sklearn.utils.check_X_y(X, y, accept_sparse=False, *, accept_large_sparse=True, dtype='numeric', order=None, copy=False, force_writeable=False, force_all_finite='deprecated', ensure_all_finite=None, ensure_2d=True, allow_nd=False, multi_output=False, ensure_min_samples=1, ensure_min_features=1, y_numeric=False, estimator=None)[source]#

标准估计器的输入验证。

检查 X 和 y 的长度是否一致,并强制 X 为 2D 数组,y 为 1D 数组。默认情况下,检查 X 是否非空且仅包含有限值。标准输入检查也适用于 y,例如检查 y 不包含 `np.nan` 或 `np.inf` 目标。对于多标签 y,设置 `multi_output=True` 以允许 2D 和稀疏 y。如果 X 的 `dtype` 是 `object`,则尝试转换为浮点数,如果失败则引发错误。

参数:
X{ndarray, list, 稀疏矩阵}

输入数据。

y{ndarray, list, 稀疏矩阵}

标签。

accept_sparsestr, bool 或 str 列表, 默认为 False

表示允许的稀疏矩阵格式的字符串(或字符串列表),例如 ‘csc’、‘csr’ 等。如果输入是稀疏的但不在允许的格式中,它将被转换为列表中列出的第一种格式。`True` 允许输入为任何格式。`False` 表示稀疏矩阵输入将引发错误。

accept_large_sparsebool, 默认为 True

如果提供了一个 CSR、CSC、COO 或 BSR 稀疏矩阵,并且被 `accept_sparse` 接受,那么 `accept_large_sparse` 将使其仅在索引使用 32 位 `dtype` 存储时才被接受。

0.20 版本新增。

dtype‘numeric’, 类型, 类型列表 或 None, 默认为 ‘numeric’

结果的数据类型。如果为 `None`,则保留输入的 `dtype`。如果为 “numeric”,则除非 `array.dtype` 是 `object`,否则保留 `dtype`。如果 `dtype` 是一个类型列表,则仅当输入的 `dtype` 不在列表中时,才对第一种类型执行转换。

order{‘F’, ‘C’}, 默认为 None

是否强制数组为 Fortran 或 C 样式。如果 None,则在可能的情况下保留输入数据的顺序。

copybool, 默认为 False

是否触发强制复制。如果 `copy=False`,则转换可能会触发复制。

force_writeablebool, 默认为 False

是否强制输出数组可写。如果为 `True`,则返回的数组保证可写,这可能需要复制。否则,保留输入数组的可写性。

1.6 版本新增。

force_all_finitebool 或 ‘allow-nan’, 默认为 True

是否在数组中遇到 `np.inf`、`np.nan`、`pd.NA` 时引发错误。此参数不影响 y 是否可以包含 `np.inf`、`np.nan`、`pd.NA` 值。选项有:

  • `True`:强制 X 的所有值为有限值。

  • `False`:接受 X 中的 `np.inf`、`np.nan`、`pd.NA`。

  • ‘allow-nan’:仅接受 X 中的 `np.nan` 或 `pd.NA` 值。值不能是无限的。

0.20 版本新增:force_all_finite 接受字符串 'allow-nan'

0.23 版本更改:接受 pd.NA 并将其转换为 np.nan

自 1.6 版本弃用:force_all_finite 已更名为 ensure_all_finite,并将在 1.8 版本中移除。

ensure_all_finitebool 或 ‘allow-nan’, 默认为 True

是否在数组中遇到 `np.inf`、`np.nan`、`pd.NA` 时引发错误。此参数不影响 y 是否可以包含 `np.inf`、`np.nan`、`pd.NA` 值。选项有:

  • `True`:强制 X 的所有值为有限值。

  • `False`:接受 X 中的 `np.inf`、`np.nan`、`pd.NA`。

  • ‘allow-nan’:仅接受 X 中的 `np.nan` 或 `pd.NA` 值。值不能是无限的。

1.6 版本新增:force_all_finite 已更名为 ensure_all_finite

ensure_2dbool, 默认为 True

如果 X 不是 2D 数组,是否引发值错误。

allow_ndbool, 默认为 False

是否允许 `X.ndim > 2`。

multi_outputbool, 默认为 False

是否允许 2D y(数组或稀疏矩阵)。如果为 `False`,y 将被验证为向量。如果 `multi_output=True`,则 y 不能包含 `np.nan` 或 `np.inf` 值。

ensure_min_samplesint, 默认为 1

确保 X 在其第一个轴(对于 2D 数组来说是行)上具有最小数量的样本。

ensure_min_featuresint, 默认为 1

确保 2D 数组具有最小数量的特征(列)。默认值 1 拒绝空数据集。此检查仅在 X 实际具有 2 个维度或原始为 1D 且 ensure_2d 为 `True` 时才强制执行。设置为 0 则禁用此检查。

y_numericbool, 默认为 False

是否确保 y 具有数值类型。如果 y 的 `dtype` 是 `object`,则将其转换为 `float64`。此参数仅应用于回归算法。

estimatorstr 或 估计器实例, 默认为 None

如果传入,则在警告消息中包含估计器的名称。

返回:
X_convertedobject

已转换并验证的 X。

y_convertedobject

已转换并验证的 y。

示例

>>> from sklearn.utils.validation import check_X_y
>>> X = [[1, 2], [3, 4], [5, 6]]
>>> y = [1, 2, 3]
>>> X, y = check_X_y(X, y)
>>> X
array([[1, 2],
      [3, 4],
      [5, 6]])
>>> y
array([1, 2, 3])