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])