featuretools.primitives.RollingOutlierCount#
- class featuretools.primitives.RollingOutlierCount(window_length=3, gap=1, min_periods=0)[source]#
计算在给定窗口期内的异常值数量。
- 描述
给定一个数字列表和对应的日期时间列表,返回数字序列中异常值的滚动计数。计数从当前行向前偏移 gap 行开始,并回溯指定的窗口期(由 window_length 和 gap 确定)。异常值使用 IQR 方法判定,该方法基于整个序列计算。输入的日期时间应该是单调的。
- 参数:
window_length (int, string, optional) – 指定每个窗口包含的数据量。如果提供整数,它对应于行数。对于采样频率均匀的数据(例如每天采样一次),window_length 为 7 时将对应于一个时间周期,例如 7 天。如果提供字符串,它必须是 Pandas 的偏移别名字符串之一('1D'、'1H' 等),它将指示每个窗口应跨越的时间长度。可用偏移别名列表可在 https://pandas.ac.cn/pandas-docs/stable/user_guide/timeseries.html#offset-aliases 找到。默认为 3。
gap (int, string, optional) – 指定从每个实例回溯的间隔,然后才开始可用数据的窗口。如果提供整数,它对应于行数。如果提供字符串,它必须是 Pandas 的偏移别名字符串之一('1D'、'1H' 等),它将指示目标实例与其窗口起始之间的持续时间长度。默认为 1,表示从窗口中排除目标实例。
min_periods (int, optional) – 在窗口上执行计算所需的最小观测数。当 window_length 是整数时,min_periods 不能大于 window_length。当 window_length 是偏移别名字符串时,没有此限制,但应注意不要选择一个 min_periods,使其总是大于窗口中的观测数。默认为 0。
注意
只有固定频率的偏移别名才能用于定义 gap 和 window_length。这意味着不能使用诸如 M 或 W 之类的别名,因为它们可能指示不同的天数。('M' 是因为不同月份的天数不同;'W' 是因为周会指示一周中的某一天,例如 W-Wed,所以 depending on the锚定日期,它将指示不同的天数。)
注意
当使用偏移别名定义 gap 时,也必须使用偏移别名定义 window_length。当使用偏移别名定义 window_length 时,不存在此限制。实际上,如果数据采样频率均匀,最好使用数字 gap,因为它更有效率。
示例
>>> import pandas as pd >>> rolling_outlier_count = RollingOutlierCount(window_length=4) >>> times = pd.date_range(start='2019-01-01', freq='1min', periods=6) >>> rolling_outlier_count(times, [0, 0, 0, 0, 10, 0]).tolist() [nan, 0.0, 0.0, 0.0, 0.0, 1.0]
我们还可以控制滚动计算之前的间隔。>>> import pandas as pd >>> rolling_outlier_count = RollingOutlierCount(window_length=4, gap=0) >>> times = pd.date_range(start=’2019-01-01’, freq=’1min’, periods=6) >>> rolling_outlier_count(times, [0, 0, 0, 0, 10, 0]).tolist() [0.0, 0.0, 0.0, 0.0, 1.0, 1.0]
我们还可以控制滚动计算所需的最小周期数。>>> import pandas as pd >>> rolling_outlier_count = RollingOutlierCount(window_length=4, min_periods=3) >>> times = pd.date_range(start=’2019-01-01’, freq=’1min’, periods=6) >>> rolling_outlier_count(times, [0, 0, 0, 0, 10, 0]).tolist() [nan, nan, nan, 0.0, 0.0, 1.0]
我们还可以使用偏移别名字符串设置 window_length 和 gap。>>> import pandas as pd >>> rolling_outlier_count = RollingOutlierCount(window_length=’4min’, gap=’1min’) >>> times = pd.date_range(start=’2019-01-01’, freq=’1min’, periods=6) >>> rolling_outlier_count(times, [0, 0, 0, 0, 10, 0]).tolist() [nan, 0.0, 0.0, 0.0, 0.0, 1.0]
方法
__init__
([window_length, gap, min_periods])flatten_nested_input_types
(input_types)将嵌套的列 schema 输入展平为一个列表。
generate_name
(base_feature_names)generate_names
(base_feature_names)get_args_string
()get_arguments
()get_description
(input_column_descriptions[, ...])get_filepath
(filename)get_function
()get_outliers_count
(numeric_series)属性
base_of
base_of_exclude
commutative
default_value
如果未找到数据,此特征返回的默认值。
description_template
input_types
输入的 woodwork.ColumnSchema 类型
max_stack_depth
name
原语的名称
number_output_features
与此特征关联的特征矩阵中的列数
return_type
返回的 ColumnSchema 类型
stack_on
stack_on_exclude
stack_on_self
uses_calc_time
uses_full_dataframe