预处理#
预处理工具函数。
包内容#
类摘要#
不将训练数据拆分为训练集和验证集。 |
|
用于时间序列问题的滚动原点交叉验证。 |
|
将训练数据拆分为训练集和验证集。 |
函数#
从文件加载特征和目标。 |
|
获取 DataFrame 中每种特定 dtype 的特征数量。 |
|
将数据拆分为训练集和测试集。 |
|
将堆叠的多系列数据拆分为训练集和测试集。未堆叠的数据可以使用 split_data。 |
|
获取目标分布。 |
内容#
- evalml.preprocessing.load_data(path, index, target, n_rows=None, drop=None, verbose=True, **kwargs)[source]#
从文件加载特征和目标。
- 参数
path (str) – 文件路径或 http/ftp/s3 URL。
index (str) – 用作索引的列。
target (str) – 用作目标的列。
n_rows (int) – 要返回的行数。默认为 None。
drop (list) – 要删除的列列表。默认为 None。
verbose (bool) – 如果为 True,打印关于特征和目标的信息。默认为 True。
**kwargs – 应传递给 pandas 的 read_csv 方法的其他关键字参数。
- 返回值
特征矩阵和目标。
- 返回类型
pd.DataFrame, pd.Series
- class evalml.preprocessing.NoSplit(random_seed=0)[source]#
不将训练数据拆分为训练集和验证集。
所有数据都作为训练集传递,测试数据仅为 None 的数组。用于未来的无监督学习,不应在任何当前支持的管道中使用。
- 参数
random_seed (int) – 用于随机采样的种子。默认为 0。未使用。
方法
获取此对象的元数据路由。
返回此对象的拆分数量。
返回数据拆分器是否为交叉验证数据拆分器。
将数据划分为训练集和测试集,其中测试集为空。
- get_metadata_routing(self)#
获取此对象的元数据路由。
请查看 用户指南 了解路由机制的工作原理。
- 返回值
routing – 一个封装路由信息的
MetadataRequest
对象。- 返回类型
MetadataRequest
- property is_cv(self)#
返回数据拆分器是否为交叉验证数据拆分器。
- 返回值
如果拆分器是交叉验证数据拆分器
- 返回类型
bool
- evalml.preprocessing.number_of_features(dtypes)[source]#
获取 DataFrame 中每种特定 dtype 的特征数量。
- 参数
dtypes (pd.Series) – 要获取特征数量的 DataFrame.dtypes。
- 返回值
dtypes 以及每种输入类型的特征数量。
- 返回类型
pd.Series
示例
>>> X = pd.DataFrame() >>> X["integers"] = [i for i in range(10)] >>> X["floats"] = [float(i) for i in range(10)] >>> X["strings"] = [str(i) for i in range(10)] >>> X["booleans"] = [bool(i%2) for i in range(10)]
列出每种 dtype 对应的列数。
>>> number_of_features(X.dtypes) Number of Features Boolean 1 Categorical 1 Numeric 2
- evalml.preprocessing.split_data(X, y, problem_type, problem_configuration=None, test_size=None, random_seed=0)[source]#
将数据拆分为训练集和测试集。
- 参数
X (pd.DataFrame 或 np.ndarray) – 形状为 [n_samples, n_features] 的数据
y (pd.Series 或 np.ndarray) – 长度为 [n_samples] 的目标数据
problem_type (str 或 ProblemTypes) – 监督学习问题类型。完整列表请参阅 evalml.problem_types.problemtype.all_problem_types。
problem_configuration (dict) – 配置搜索所需的额外参数。例如,在时间序列问题中,应为 time_index、gap 和 max_delay 变量传入值。
test_size (float) – 应包含在测试集中的数据点百分比。非时间序列问题默认为 0.2 (20%),时间序列问题默认为 0.1 (10%)。
random_seed (int) – 随机数生成器的种子。默认为 0。
- 返回值
特征和目标数据分别拆分为训练集和测试集。
- 返回类型
pd.DataFrame, pd.DataFrame, pd.Series, pd.Series
- 引发
ValueError (ValueError) – 如果缺少 problem_configuration 或多系列问题不包含 time_index 和 series_id。
示例
>>> X = pd.DataFrame([1, 2, 3, 4, 5, 6], columns=["First"]) >>> y = pd.Series([8, 9, 10, 11, 12, 13]) ... >>> X_train, X_validation, y_train, y_validation = split_data(X, y, "regression", random_seed=42) >>> X_train First 5 6 2 3 4 5 3 4 >>> X_validation First 0 1 1 2 >>> y_train 5 13 2 10 4 12 3 11 dtype: int64 >>> y_validation 0 8 1 9 dtype: int64
- evalml.preprocessing.split_multiseries_data(X, y, series_id, time_index, **kwargs)[source]#
将堆叠的多系列数据拆分为训练集和测试集。未堆叠的数据可以使用 split_data。
- 参数
X (pd.DataFrame) – 输入训练数据,形状为 [n_samples*n_series, n_features]。
y (pd.Series) – 目标训练目标,长度为 [n_samples*n_series]。
series_id (str) – 包含系列 ID 的列名。
time_index (str) – 包含时间索引的列名。
**kwargs (**kwargs) – 要传递给 split_data 函数的额外关键字参数。
- 返回值
特征和目标数据分别拆分为训练集和测试集。
- 返回类型
pd.DataFrame, pd.DataFrame, pd.Series, pd.Series
- evalml.preprocessing.target_distribution(targets)[source]#
获取目标分布。
- 参数
targets (pd.Series) – 目标数据。
- 返回值
目标数据及其频率分布(以百分比表示)。
- 返回类型
pd.Series
示例
>>> y = pd.Series([1, 2, 4, 1, 3, 3, 1, 2]) >>> print(target_distribution(y).to_string()) Targets 1 37.50% 2 25.00% 3 25.00% 4 12.50% >>> y = pd.Series([True, False, False, False, True]) >>> print(target_distribution(y).to_string()) Targets False 60.00% True 40.00%
- class evalml.preprocessing.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(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 (pd.DataFrame, None) – 要拆分的特征。
y (pd.DataFrame, None) – 要拆分的目标变量。默认为 None。
groups – 忽略,但保留以兼容 sklearn API。默认为 None。
- 假设 X 和 y 已按时间升序排序。此方法可以处理传入空或 None 的 X 和 y 数据,但请注意 X 和 y 不能同时为 None 或为空。
生成
- 引发
Iterator of (train, test) indices tuples.
- ValueError (ValueError) – 如果提出的某个拆分会为空。
将训练数据拆分为训练集和验证集。
- 参数
class evalml.preprocessing.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。
示例
>>> 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()
方法
获取此对象的元数据路由。
返回此对象的拆分数量。
返回数据拆分器是否为交叉验证数据拆分器。
random_seed (int) – 用于随机采样的种子。默认为 0。
- 将数据划分为训练集和测试集。
获取此对象的元数据路由。
请查看 用户指南 了解路由机制的工作原理。
- 返回值
routing – 一个封装路由信息的
MetadataRequest
对象。- 返回类型
MetadataRequest
- 始终返回 1。
返回数据拆分器是否为交叉验证数据拆分器。
- 返回值
如果拆分器是交叉验证数据拆分器
- 返回类型
bool
- property is_cv(self)#
random_seed (int) – 用于随机采样的种子。默认为 0。
- 参数
X (pd.DataFrame) – 要拆分的数据框
y (pd.Series) – 要拆分的数据序列
- 返回值
将数据拆分为训练集和测试集的索引
- 返回类型
list