检查 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 为二维,y 为一维。默认情况下,检查 X 是否非空且仅包含有限值。还会对 y 应用标准输入检查,例如检查 y 是否没有 np.nan 或 np.inf 目标。对于多标签 y,设置 multi_output=True 以允许二维和稀疏 y。如果 X 的 dtype 为 object,则尝试转换为浮点数,转换失败则引发错误。
- 参数:
- X{ndarray, list, sparse matrix}
输入数据。
- y{ndarray, list, sparse matrix}
标签。
- accept_sparsestr, bool 或 str 列表,默认为 False
表示允许的稀疏矩阵格式的字符串,例如 'csc'、'csr' 等。如果输入是稀疏矩阵但格式不在允许的格式中,它将被转换为第一个列出的格式。True 允许输入为任何格式。False 表示稀疏矩阵输入将引发错误。
- accept_large_sparsebool,默认为 True
如果提供 CSR、CSC、COO 或 BSR 稀疏矩阵,并且被 accept_sparse 接受,则只有当它的索引使用 32 位 dtype 存储时,accept_large_sparse 才会接受它。
版本 0.20 中新增。
- dtype‘numeric’,type,type 列表或 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 不是二维的,是否引发 ValueError。
- allow_ndbool,默认为 False
是否允许 X.ndim > 2。
- multi_outputbool,默认为 False
是否允许二维 y(数组或稀疏矩阵)。如果为 false,则 y 将被验证为向量。如果 multi_output=True,则 y 不能具有 np.nan 或 np.inf 值。
- ensure_min_samplesint,默认为 1
确保 X 在其第一轴(对于二维数组为行)上具有最小的样本数。
- ensure_min_featuresint,默认为 1
确保二维数组具有一些最小的特征数(列)。默认值为 1 会拒绝空数据集。此检查仅在 X 实际上具有二维或最初为一维且
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])