ts_splitting_data_check#
检查时间序列训练和验证拆分是否具有足够的类别表示的数据检查。
模块内容#
类摘要#
检查时间序列目标数据是否与拆分兼容。 |
目录#
- class evalml.data_checks.ts_splitting_data_check.TimeSeriesSplittingDataCheck(problem_type, n_splits)[源代码]#
检查时间序列目标数据是否与拆分兼容。
如果每次拆分的训练集和验证集中的目标数据不包含所有类别(对于时间序列分类问题),这将导致估计器无法在所有潜在结果上进行训练,从而在预测期间引起错误。
- 参数
problem_type (str or ProblemTypes) – 问题类型。
n_splits (int) – 时间序列拆分数。
方法
- name(cls)#
返回描述数据检查的名称。
- validate(self, X, y)[源代码]#
检查训练集和验证集目标是否与时间序列数据拆分兼容。
- 参数
X (pd.DataFrame, np.ndarray) – 忽略。特征。
y (pd.Series, np.ndarray) – 目标数据。
- 返回
如果拆分会导致类别表示不足,则返回包含 DataCheckError 的字典。
- 返回类型
dict
示例
>>> import pandas as pd
将 n_splits 设置为 3 意味着数据将被分割成 4 个部分,用于迭代训练和验证拆分。第一次拆分产生 [0:25] 的训练索引和 [25:50] 的验证索引。第一次拆分的训练索引只产生一个唯一值 (0)。第三次拆分产生 [0:75] 的训练索引和 [75:100] 的验证索引。第三次拆分的验证索引只产生一个唯一值 (1)。
>>> X = None >>> y = pd.Series([0 if i < 45 else i % 2 if i < 55 else 1 for i in range(100)]) >>> ts_splitting_check = TimeSeriesSplittingDataCheck("time series binary", 3) >>> assert ts_splitting_check.validate(X, y) == [ ... { ... "message": "Time Series Binary and Time Series Multiclass problem " ... "types require every training and validation split to " ... "have at least one instance of all the target classes. " ... "The following splits are invalid: [1, 3]", ... "data_check_name": "TimeSeriesSplittingDataCheck", ... "level": "error", ... "details": { ... "columns": None, "rows": None, ... "invalid_splits": { ... 1: {"Training": [0, 25]}, ... 3: {"Validation": [75, 100]} ... } ... }, ... "code": "TIMESERIES_TARGET_NOT_COMPATIBLE_WITH_SPLIT", ... "action_options": [] ... } ... ]