frequency_fixer 模块

用于检查的实用工具函数

函数

check_coverage_one_grain

获取给定频率涵盖的点数。

check_coverage_one_grain(one_grain: azureml.automl.runtime._time_series_data_set.TimeSeriesDataSet, freqs: Union[pandas.core.frame.DataFrame, pandas.core.series.Series]) -> int

参数

one_grain
必需

表示一种粒度的数据帧。

freq
必需

粒度的建议频率。

check_types

如果 X 或 y 的类型不正确,则引发异常,同时将 y 转换为 np.ndarray。

check_types(X: pandas.core.frame.DataFrame, y: Optional[Union[numpy.ndarray, pandas.core.series.Series, pandas.core.arrays.categorical.Categorical, azureml.dataprep.api.dataflow.Dataflow]]) -> None

参数

X
必需

用于频率推理的数据帧。

y
必需

X 的标签。

返回

具有 X 和 y 的元组。

例外

ValidationException

fix_data_set_regularity_may_be

用于修复数据帧频率的帮助程序函数。

fix_data_set_regularity_may_be(X: pandas.core.frame.DataFrame, y: Optional[numpy.ndarray], automl_settings: azureml.automl.core.automl_base_settings.AutoMLBaseSettings, freq_ref_code: str) -> azureml.automl.runtime.fixed_dataset.FixedDataSet

参数

X
必需

用于频率推理的数据帧。

y
必需

X 的标签。

automl_settings
必需

AutoMLSettings 对象。

freq_ref_code
必需

无法将用户频率转换为 pd.Offset 时要设置的错误 ref 代码

返回

FixedDataSet 对象,包含更正后的数据帧、相应的 y、两个标志,用于显示频率推理是否失败以及数据集是否修改以及日期偏移量。 只有在检测到有效频率时,日期偏移量才不是 None。

fix_df_frequency

从数据帧中删除不符合给定频率的离群数据点。

fix_df_frequency(X: pandas.core.frame.DataFrame, time_column_name: str, grain_column_names: Optional[Union[Tuple[str], str, List[str]]], start_times: Union[pandas._libs.tslibs.timestamps.Timestamp, Dict[Union[Tuple[str], str, List[str]], pandas._libs.tslibs.timestamps.Timestamp]], freq: Optional[pandas._libs.tslibs.offsets.DateOffset]) -> pandas.core.frame.DataFrame

参数

X
必需

用于频率推理的数据帧。

time_column_name
必需

表示日期时间的列。

grain_column_names
必需

定义多个序列的列。

start_times
必需

时序的开始时间。 如果数据集包含多个粒度,则它必须是具有每个粒度的开始时间的字典。 如果数据集不包含粒度,则它是单个时间戳。

freq

返回

pd.DateOffset 是可推断的频率,否则为无。

例外

ClientException

fix_frequency_one_grain

从数据帧中删除不符合给定频率的离群数据点。

fix_frequency_one_grain(X: pandas.core.frame.DataFrame, freq: Optional[pandas._libs.tslibs.offsets.DateOffset], start: pandas._libs.tslibs.timestamps.Timestamp, time_column_name: str) -> pandas.core.frame.DataFrame

参数

X
必需

将在拟合期间使用的时序数据帧。

freq
必需

将用于修复 X 的频率。

start
必需

用于倾斜装置数据帧的网格的起点。

time_column_name
必需

表示日期时间的列。

返回

具有校正频率的数据帧。

get_dominant_timedeltas

获取给定频率的主导时间增量。

get_dominant_timedeltas(frequency: pandas._libs.tslibs.offsets.DateOffset, default: pandas._libs.tslibs.timedeltas.Timedelta) -> Set[pandas._libs.tslibs.timedeltas.Timedelta]

参数

frequency
必需

需要估计时间增量的频率。

default
必需

所有返回集上存在的时间增量中值。

返回

给定时间增量的主导时间增量。

get_frequencies_choices

返回给定 timeselta 的可能频率。

如果频率是特殊的,我们需要此函数,例如,它可能是缺少某些日期的每月频率。 :param delta:数据点之间的主导时间增量。 :param df_time:从数据帧时间索引获取的序列。 :returns:要尝试的频率列表。

get_frequencies_choices(delta: pandas._libs.tslibs.timedeltas.Timedelta, df_time: pandas.core.series.Series) -> List[pandas._libs.tslibs.offsets.DateOffset]

参数

delta
df_time

get_tsdf_frequency_and_start

检测 Pandas 数据帧的频率。

get_tsdf_frequency_and_start(X: pandas.core.frame.DataFrame, y: Optional[Union[numpy.ndarray, pandas.core.series.Series, pandas.core.arrays.categorical.Categorical, azureml.dataprep.api.dataflow.Dataflow]], time_column_Name: str, grain_column_names: Optional[Union[str, List[str]]], user_frequency: Optional[pandas._libs.tslibs.offsets.DateOffset] = None) -> Optional[Tuple[pandas._libs.tslibs.offsets.DateOffset, Union[pandas._libs.tslibs.timestamps.Timestamp, Dict[Union[Tuple[str], str, List[str]], pandas._libs.tslibs.timestamps.Timestamp]]]]

参数

X
必需

用于频率推理的数据帧。

y
必需

X 的标签。

time_column_Name
必需

表示日期时间的列。

grain_column_names
必需

定义多个序列的列。

user_frequency
默认值: None

用户设置的频率。

返回

元组,包含频率和字典以及每个粒度的起始时间,如果不同的粒度具有不同的频率或更少,则 FREQUENCY_REJECT_TOLERANCE 点的一小部分可以适应给定频率。 如果数据帧仅包含一个粒度,则返回时间戳而不是字典。

例外

DataException

has_dominant_frequency

确定数据集是否符合 dominant_frequency。

注意:在此快速测试中,我们仅测试数据集能否根据给定的时间增量符合此频率,但这一点无法保证,对大部分数据点是否在频率网格中的实际检查应该在之后进行。 :param timedeltas:来自单个序列的时间增量。 :param delta_mode:系列中最常见的时间增量。 :param frequency:检测到的要进行测试的主导频率。 :param tolerance:预期时间增量中允许的异常值百分比。 :returns:如果数据集可以在此频率网格中,则返回 True;否则为 False。

has_dominant_frequency(timedeltas: pandas.core.series.Series, delta_mode: pandas._libs.tslibs.timedeltas.Timedelta, dominant_frequency: pandas._libs.tslibs.offsets.DateOffset, tolerance: float) -> bool

参数

timedeltas
delta_mode
dominant_frequency
tolerance

improved_infer_freq_one_grain

改进了可应用于一种粒度的频率推理版本。

在此算法中,我们首先尝试在频率检测时使用 infer_freq 机制,生成相应的频率网格;如果不适合网格的数据百分比在 FREQUENCY_REJECT_TOLERANCE 内,则返回给定粒度的此频率和开始日期。 如果 infer_freq 机制在网格外部留下许多数据点,我们将估计数据点之间的时间增量,并采用这些值的模式。 然后,此模式用于重新构造频率。 如果具有相同时间增量的点组由其他时间间隔分隔,则我们认为它是不同的数据网格。 我们构造多个网格,并选择一个主导网格,其中具有的非拟合点百分比在 FREQUENCY_REJECT_TOLERANCE 内。 我们还返回用于网格生成的起点。 如果时间增量提醒月份、年份或季度,我们会尝试这些 DateOffset,看看是否适合大多数数据点。 如果两个网格都不够好,我们会从 infer_freq 机制返回以前的频率。 :param df_grain:表示一种粒度的数据帧。 :p freq_offset:由 infer_freq 机制确定的频率。 :param grain:给定粒度的名称。 :param user_frequency:用户设置的频率。 :p custom_freq_reject_tolerance:新检测到的频率必须涵盖的点的比例

,以选择它。

improved_infer_freq_one_grain(df_grain: azureml.automl.runtime._time_series_data_set.TimeSeriesDataSet, freq_offset: pandas._libs.tslibs.offsets.DateOffset, grain: Union[Tuple[str], str, List[str]], user_frequency: Optional[pandas._libs.tslibs.offsets.DateOffset] = None, custom_freq_reject_tolerance: float = 0.9) -> pandas.core.series.Series

参数

df_grain
freq_offset
grain
user_frequency
默认值: None
custom_freq_reject_tolerance
默认值: 0.9

返回

具有频率和开始日期的序列。 示例:pd.Series{freq=<Days * 7>, start='2019-01-01'}

str_to_offset_safe

安全地调用 pandas to_offset 函数来控制日期偏移。

str_to_offset_safe(freq: Optional[str], ref_code: Optional[str] = None) -> pandas._libs.tslibs.offsets.DateOffset

参数

freq
必需

要转换为 pd.DateOffset 的频率的字符串表示形式。

ref_code
默认值: None

引发异常时要使用的参考代码。

返回

与字符串对应的频率。

例外

ConfigException if the frequency can not be converted to the pd.DateOffset.