data_splitters#

数据分割器类。

包内容#

类摘要#

KFold

sklearn KFold 分割器的包装类。

NoSplit

不将训练数据分割为训练集和验证集。

StratifiedKFold

sklearn Stratified KFold 分割器的包装类。

TimeSeriesSplit

用于时间序列问题的滚动原点交叉验证。

TrainingValidationSplit

将训练数据分割为训练集和验证集。

目录#

class evalml.preprocessing.data_splitters.KFold(n_splits=5, *, shuffle=False, random_state=None)[source]#

sklearn KFold 分割器的包装类。

方法

get_metadata_routing

获取此对象的元数据路由。

get_n_splits

返回交叉验证器中的分割迭代次数。

is_cv

返回数据分割器是否为交叉验证数据分割器。

split

生成将数据分割为训练集和测试集的索引。

get_metadata_routing(self)#

获取此对象的元数据路由。

请查阅 用户指南 了解路由机制的工作原理。

返回

routing – 一个封装路由信息的 MetadataRequest

返回类型

MetadataRequest

get_n_splits(self, X=None, y=None, groups=None)#

返回交叉验证器中的分割迭代次数。

参数
  • X (object) – 始终被忽略,仅为兼容性而存在。

  • y (object) – 始终被忽略,仅为兼容性而存在。

  • groups (object) – 始终被忽略,仅为兼容性而存在。

返回

n_splits – 返回交叉验证器中的分割迭代次数。

返回类型

int

property is_cv(self)#

返回数据分割器是否为交叉验证数据分割器。

返回

如果分割器是交叉验证数据分割器

返回类型

bool

split(self, X, y=None, groups=None)#

生成将数据分割为训练集和测试集的索引。

参数
  • X (形状为 (n_samples, n_features) 的 array-like) – 训练数据,其中 n_samples 是样本数,n_features 是特征数。

  • y (形状为 (n_samples,) 的 array-like,默认为 None) – 监督学习问题的目标变量。

  • groups (形状为 (n_samples,) 的 array-like,默认为 None) – 分割数据集为训练/测试集时使用的样本的组标签。

生成
  • train (ndarray) – 该分割的训练集索引。

  • test (ndarray) – 该分割的测试集索引。

class evalml.preprocessing.data_splitters.NoSplit(random_seed=0)[source]#

不将训练数据分割为训练集和验证集。

所有数据都作为训练集传递,测试数据只是一个由 None 组成的数组。用于未来的无监督学习,不应在任何当前支持的管道中使用。

参数

random_seed (int) – 用于随机采样的种子。默认为 0。未使用。

方法

get_metadata_routing

获取此对象的元数据路由。

get_n_splits

返回此对象的分割次数。

is_cv

返回数据分割器是否为交叉验证数据分割器。

split

将数据划分为训练集和测试集,其中测试集为空。

get_metadata_routing(self)#

获取此对象的元数据路由。

请查阅 用户指南 了解路由机制的工作原理。

返回

routing – 一个封装路由信息的 MetadataRequest

返回类型

MetadataRequest

static get_n_splits()[source]#

返回此对象的分割次数。

返回

始终返回 0。

返回类型

int

property is_cv(self)#

返回数据分割器是否为交叉验证数据分割器。

返回

如果分割器是交叉验证数据分割器

返回类型

bool

split(self, X, y=None)[source]#

将数据划分为训练集和测试集,其中测试集为空。

参数
  • X (pd.DataFrame) – 要分割的数据点的数据帧

  • y (pd.Series) – 要分割的数据点的 Series

返回

将数据分割为训练集和测试集的索引

返回类型

list

class evalml.preprocessing.data_splitters.StratifiedKFold(n_splits=5, *, shuffle=False, random_state=None)[source]#

sklearn Stratified KFold 分割器的包装类。

方法

get_metadata_routing

获取此对象的元数据路由。

get_n_splits

返回交叉验证器中的分割迭代次数。

is_cv

返回数据分割器是否为交叉验证数据分割器。

split

生成将数据分割为训练集和测试集的索引。

get_metadata_routing(self)#

获取此对象的元数据路由。

请查阅 用户指南 了解路由机制的工作原理。

返回

routing – 一个封装路由信息的 MetadataRequest

返回类型

MetadataRequest

get_n_splits(self, X=None, y=None, groups=None)#

返回交叉验证器中的分割迭代次数。

参数
  • X (object) – 始终被忽略,仅为兼容性而存在。

  • y (object) – 始终被忽略,仅为兼容性而存在。

  • groups (object) – 始终被忽略,仅为兼容性而存在。

返回

n_splits – 返回交叉验证器中的分割迭代次数。

返回类型

int

property is_cv(self)#

返回数据分割器是否为交叉验证数据分割器。

返回

如果分割器是交叉验证数据分割器

返回类型

bool

split(self, X, y, groups=None)[source]#

生成将数据分割为训练集和测试集的索引。

参数
  • X (形状为 (n_samples, n_features) 的 array-like) –

    训练数据,其中 n_samples 是样本数,n_features 是特征数。

    请注意,提供 y 足以生成分割,因此可以使用 np.zeros(n_samples) 作为 X 的占位符,而非实际的训练数据。

  • y (形状为 (n_samples,) 的 array-like) – 监督学习问题的目标变量。分层是基于 y 标签进行的。

  • groups (object) – 始终被忽略,仅为兼容性而存在。

生成
  • train (ndarray) – 该分割的训练集索引。

  • test (ndarray) – 该分割的测试集索引。

注意

随机化的 CV 分割器每次调用 split 可能会返回不同的结果。通过将 random_state 设置为整数,可以使结果一致。

class evalml.preprocessing.data_splitters.TimeSeriesSplit(max_delay=0, gap=0, forecast_horizon=None, time_index=None, n_series=None, n_splits=3)[source]#

用于时间序列问题的滚动原点交叉验证。

max_delay、gap 和 forecast_horizon 参数仅用于验证所请求的分割大小在给定这些参数的情况下不会太小。

参数
  • max_delay (int) – 特征工程的最大延迟值。时间序列管道从现有特征创建延迟特征。此过程将在前 max_delay 行中引入 NaNs。分割器使用前一个分割的最后 max_delay 行作为当前分割的前 max_delay 行,以避免“丢弃”比必要更多的数据。默认为 0。

  • gap (int) – 用于生成特征的数据与用于预测的数据之间的时间单位间隔数。默认为 0。

  • forecast_horizon (int, None) – 预测的时间单位数。用于参数验证。如果为整数,将设置 cv 分割的大小。默认为 None。

  • time_index (str) – 包含用于排序数据的日期时间信息的列名。默认为 None。

  • n_splits (int) – 要进行的数据分割数。默认为 3。

示例

>>> import numpy as np
>>> import pandas as pd
...
>>> X = pd.DataFrame([i for i in range(10)], columns=["First"])
>>> y = pd.Series([i for i in range(10)])
...
>>> ts_split = TimeSeriesSplit(n_splits=4)
>>> generator_ = ts_split.split(X, y)
...
>>> first_split = next(generator_)
>>> assert (first_split[0] == np.array([0, 1])).all()
>>> assert (first_split[1] == np.array([2, 3])).all()
...
...
>>> second_split = next(generator_)
>>> assert (second_split[0] == np.array([0, 1, 2, 3])).all()
>>> assert (second_split[1] == np.array([4, 5])).all()
...
...
>>> third_split = next(generator_)
>>> assert (third_split[0] == np.array([0, 1, 2, 3, 4, 5])).all()
>>> assert (third_split[1] == np.array([6, 7])).all()
...
...
>>> fourth_split = next(generator_)
>>> assert (fourth_split[0] == np.array([0, 1, 2, 3, 4, 5, 6, 7])).all()
>>> assert (fourth_split[1] == np.array([8, 9])).all()

方法

get_metadata_routing

获取此对象的元数据路由。

get_n_splits

获取数据分割数。

is_cv

返回数据分割器是否为交叉验证数据分割器。

split

获取时间序列分割。

get_metadata_routing(self)#

获取此对象的元数据路由。

请查阅 用户指南 了解路由机制的工作原理。

返回

routing – 一个封装路由信息的 MetadataRequest

返回类型

MetadataRequest

get_n_splits(self, X=None, y=None, groups=None)[source]#

获取数据分割数。

参数
  • X (pd.DataFrame, None) – 要分割的特征。

  • y (pd.DataFrame, None) – 要分割的目标变量。默认为 None。

  • groups – 忽略,但为兼容 sklearn API 保留。默认为 None。

返回

分割数。

property is_cv(self)#

返回数据分割器是否为交叉验证数据分割器。

返回

如果分割器是交叉验证数据分割器

返回类型

bool

split(self, X, y=None, groups=None)[source]#

获取时间序列分割。

假定 X 和 y 按时间升序排序。此方法可以处理传入空或 None 的 X 和 y 数据,但请注意 X 和 y 不能同时为 None 或为空。

参数
  • X (pd.DataFrame, None) – 要分割的特征。

  • y (pd.DataFrame, None) – 要分割的目标变量。默认为 None。

  • groups – 忽略,但为兼容 sklearn API 保留。默认为 None。

生成

(训练, 测试) 索引元组的迭代器。

引发

ValueError – 如果提议的分割之一为空。

class evalml.preprocessing.data_splitters.TrainingValidationSplit(test_size=None, train_size=None, shuffle=False, stratify=None, random_seed=0)[source]#

将训练数据分割为训练集和验证集。

参数
  • test_size (float) – 验证集应包含的数据点百分比。如果设置了 train_size,则默认为 train_size 的补集,否则默认为 0.25。

  • train_size (float) – 训练集应包含的数据点百分比。默认为 test_size 的补集。

  • shuffle (boolean) – 是否在分割前打乱数据。默认为 False。

  • stratify (list) – 以分层方式分割数据,使用此参数作为类标签。默认为 None。

  • random_seed (int) – 用于随机采样的种子。默认为 0。

示例

>>> import numpy as np
>>> import pandas as pd
...
>>> X = pd.DataFrame([i for i in range(10)], columns=["First"])
>>> y = pd.Series([i for i in range(10)])
...
>>> tv_split = TrainingValidationSplit()
>>> split_ = next(tv_split.split(X, y))
>>> assert (split_[0] == np.array([0, 1, 2, 3, 4, 5, 6])).all()
>>> assert (split_[1] == np.array([7, 8, 9])).all()
...
...
>>> tv_split = TrainingValidationSplit(test_size=0.5)
>>> split_ = next(tv_split.split(X, y))
>>> assert (split_[0] == np.array([0, 1, 2, 3, 4])).all()
>>> assert (split_[1] == np.array([5, 6, 7, 8, 9])).all()
...
...
>>> tv_split = TrainingValidationSplit(shuffle=True)
>>> split_ = next(tv_split.split(X, y))
>>> assert (split_[0] == np.array([9, 1, 6, 7, 3, 0, 5])).all()
>>> assert (split_[1] == np.array([2, 8, 4])).all()
...
...
>>> y = pd.Series([i % 3 for i in range(10)])
>>> tv_split = TrainingValidationSplit(shuffle=True, stratify=y)
>>> split_ = next(tv_split.split(X, y))
>>> assert (split_[0] == np.array([1, 9, 3, 2, 8, 6, 7])).all()
>>> assert (split_[1] == np.array([0, 4, 5])).all()

方法

get_metadata_routing

获取此对象的元数据路由。

get_n_splits

返回此对象的分割次数。

is_cv

返回数据分割器是否为交叉验证数据分割器。

split

将数据划分为训练集和测试集。

get_metadata_routing(self)#

获取此对象的元数据路由。

请查阅 用户指南 了解路由机制的工作原理。

返回

routing – 一个封装路由信息的 MetadataRequest

返回类型

MetadataRequest

static get_n_splits()[source]#

返回此对象的分割次数。

返回

始终返回 1。

返回类型

int

property is_cv(self)#

返回数据分割器是否为交叉验证数据分割器。

返回

如果分割器是交叉验证数据分割器

返回类型

bool

split(self, X, y=None)[source]#

将数据划分为训练集和测试集。

参数
  • X (pd.DataFrame) – 要分割的数据点的数据帧

  • y (pd.Series) – 要分割的数据点的 Series

返回

将数据分割为训练集和测试集的索引

返回类型

list