KMeansAD¶
- class KMeansAD(n_clusters: int = 20, window_size: int = 20, stride: int = 1, random_state: int | None = None)[source]¶
KMeans异常检测器。
k-Means异常检测器使用k-Means聚类来检测时间序列中的异常。时间序列被分割成固定大小的窗口,并使用k-Means算法对这些窗口进行聚类。每个时间点的异常得分是该时间点的窗口与窗口对应的聚类中心之间的平均欧几里得距离。
k-MeansAD支持单变量和多变量时间序列。它也可以在干净的参考时间序列上进行拟合,并用于检测具有相同维度的不同目标时间序列中的异常。- Parameters:
- n_clustersint, default=20
在k-Means算法中使用的聚类数量。聚类数量越大,异常分数的噪声就越少。然而,聚类数量不应过高,因为这可能导致过拟合。
- window_sizeint, default=20
用于将时间序列分割成窗口的滑动窗口的大小。窗口越大,异常上下文就越大。然而,如果窗口太大,检测器可能会将非异常点标记为异常。如果窗口太小,检测器可能无法检测到较大的异常或上下文异常。如果
window_size小于异常的大小,检测器可能只能检测到正常数据和异常子序列之间的过渡。- strideint, default=1
滑动窗口的步长。步长决定了窗口之间的时间点间隔。步长为1意味着窗口相对于前一个窗口向前移动一个时间点。步长越大,创建的窗口越少,这会导致异常分数更加嘈杂。
- random_stateint, default=None
在k-Means算法中使用的随机状态。
注释
Capabilities ¶ 缺失值
无
多线程
否
单变量
是
多变量
是
此实现灵感来源于[1]。然而,原始论文提出了一种不同的预处理方法,并且使用了先进的技术对聚类进行后处理。
参考文献
[1]Yairi, Takehisa, Yoshikiyo Kato, 和 Koichi Hori. “通过从维护数据中挖掘关联规则进行故障检测。” 在国际人工智能、机器人和自动化空间研讨会(-SAIRAS)的会议记录中,第6卷,2001年。
示例
>>> import numpy as np >>> from aeon.anomaly_detection import KMeansAD >>> X = np.array([1, 2, 3, 4, 1, 2, 3, 3, 2, 8, 9, 8, 1, 2, 3, 4], dtype=np.float64) >>> detector = KMeansAD(n_clusters=3, window_size=4, stride=1, random_state=0) >>> detector.fit_predict(X) array([1.97827709, 2.45374147, 2.51929879, 2.36979677, 2.34826601, 2.05075554, 2.57611912, 2.87642119, 3.18400743, 3.65060425, 3.36402514, 3.94053744, 3.65448197, 3.6707922 , 3.70341266, 1.97827709])
方法
clone([random_state])获取具有相同超参数的对象的克隆。
fit(X[, y, axis])将时间序列异常检测器拟合到X。
fit_predict(X[, y, axis])拟合时间序列异常检测器并查找X的异常。
get_class_tag(tag_name[, raise_error, ...])从估计器类获取标签值(仅限类标签)。
从估计器类及其所有父类中获取类标签。
get_fitted_params([deep])获取拟合参数。
Sklearn 元数据路由。
get_params([deep])获取此估计器的参数。
get_tag(tag_name[, raise_error, ...])从估计器类中获取标签值。
get_tags()从估计器中获取标签。
predict(X[, axis])在X中查找异常。
reset([keep])将对象重置为初始化后的干净状态。
set_params(**params)设置此估计器的参数。
set_tags(**tag_dict)将动态标签设置为给定值。
- clone(random_state=None)[source]¶
获取具有相同超参数的对象克隆。
克隆是一个没有共享引用的不同对象,处于初始化后的状态。 这个函数等同于返回自身的
sklearn.clone。 在值上等同于type(self)(**self.get_params(deep=False))。- Parameters:
- random_stateint, RandomState instance, or None, default=None
设置克隆的随机状态。如果为None,则不设置随机状态。 如果为int,random_state是随机数生成器使用的种子。 如果为RandomState实例,random_state是随机数生成器。
- Returns:
- estimatorobject
type(self)的实例,self 的克隆(见上文)
- fit(X, y=None, axis=1)[source]¶
将时间序列异常检测器拟合到X。
如果标签
fit_is_empty为真,这只会将is_fitted标签设置为真。否则,它会检查self是否可以处理X,将X格式化为self所需的结构,然后将X(可能还有y)传递给_fit。- Parameters:
- Xone of aeon.base._base_series.VALID_SERIES_INPUT_TYPES
用于拟合模型的时间序列。 一个有效的aeon时间序列数据结构。有关aeon支持的类型,请参见 aeon.base._base_series.VALID_SERIES_INPUT_TYPES。
- yone of aeon.base._base_series.VALID_SERIES_INPUT_TYPES, default=None
时间序列的目标值。 一个有效的aeon时间序列数据结构。请参阅 aeon.base._base_series.VALID_SERIES_INPUT_TYPES以了解aeon支持的类型。
- axisint
输入序列的时间点轴,如果是2D的。如果
axis==0,则假设每列是一个时间序列,每行是一个时间点。即数据的形状为(n_timepoints, n_channels)。axis==1表示时间序列在行中,即数据的形状为(n_channels, n_timepoints)。
- Returns:
- BaseAnomalyDetector
拟合的估计器,引用自身。
- fit_predict(X, y=None, axis=1) ndarray[source]¶
拟合时间序列异常检测器并查找X的异常。
- Parameters:
- Xone of aeon.base._base_series.VALID_SERIES_INPUT_TYPES
用于拟合模型的时间序列。 一个有效的aeon时间序列数据结构。请参阅 aeon.base._base_series.VALID_INPUT_TYPES以了解aeon支持的类型。
- yone of aeon.base._base_series.VALID_SERIES_INPUT_TYPES, default=None
时间序列的目标值。 一个有效的aeon时间序列数据结构。请参阅 aeon.base._base_series.VALID_SERIES_INPUT_TYPES以了解aeon支持的类型。
- axisint, default=1
输入序列的时间点轴,如果是2D的。如果
axis==0,则假设每列是一个时间序列,每行是一个时间点。即数据的形状为(n_timepoints, n_channels)。axis==1表示时间序列在行中,即数据的形状为(n_channels, n_timepoints)。
- Returns:
- np.ndarray
一个布尔、整数或浮点数数组,长度为len(X),其中每个元素指示相应的子序列是否异常或其异常分数。
- classmethod get_class_tag(tag_name, raise_error=True, tag_value_default=None)[source]¶
从估计器类获取标签值(仅限类标签)。
- Parameters:
- tag_namestr
标签值的名称。
- raise_errorbool, default=True
当未找到标签时是否引发ValueError。
- tag_value_defaultany type, default=None
如果未找到标签且未引发错误,则使用默认/回退值。
- Returns:
- tag_value
cls中
tag_name标签的值。 如果未找到,当raise_error为True时返回错误,否则返回tag_value_default。
- Raises:
- ValueError
如果
raise_error为 True 并且tag_name不在self.get_tags().keys()中
示例
>>> from aeon.classification import DummyClassifier >>> DummyClassifier.get_class_tag("capability:multivariate") True
- classmethod get_class_tags()[source]¶
从估计器类及其所有父类获取类标签。
- Returns:
- collected_tagsdict
标签名称和标签值对的字典。 通过嵌套继承从
_tags类属性中收集。 这些不会被set_tags或类__init__调用设置的动态标签覆盖。
- get_fitted_params(deep=True)[source]¶
获取拟合参数。
- State required:
需要状态为“已拟合”。
- Parameters:
- deepbool, default=True
如果为True,将返回此估计器的拟合参数以及包含的作为估计器的子对象。
- Returns:
- fitted_paramsdict
拟合参数名称映射到它们的值。
- get_params(deep=True)[source]¶
获取此估计器的参数。
- Parameters:
- deepbool, default=True
如果为True,将返回此估计器及其包含的子对象的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- get_tag(tag_name, raise_error=True, tag_value_default=None)[source]¶
从估计器类获取标签值。
包括动态和覆盖的标签。
- Parameters:
- tag_namestr
要检索的标签名称。
- raise_errorbool, default=True
当未找到标签时是否引发ValueError。
- tag_value_defaultany type, default=None
如果未找到标签且未引发错误,则使用默认/回退值。
- Returns:
- tag_value
自身中
tag_name标签的值。 如果未找到,当raise_error为True时返回错误,否则返回tag_value_default。
- Raises:
- ValueError
如果 raise_error 是
True并且tag_name不在self.get_tags().keys()中
示例
>>> from aeon.classification import DummyClassifier >>> d = DummyClassifier() >>> d.get_tag("capability:multivariate") True
- get_tags()[source]¶
从估计器中获取标签。
包括动态和覆盖的标签。
- Returns:
- collected_tagsdict
标签名称和标签值对的字典。 通过嵌套继承从
_tags类属性收集,然后从__init__或set_tags中收集任何被覆盖和新添加的标签。
- predict(X, axis=1) ndarray[source]¶
在X中查找异常。
- Parameters:
- Xone of aeon.base._base_series.VALID_SERIES_INPUT_TYPES
用于拟合模型的时间序列。 一个有效的aeon时间序列数据结构。有关aeon支持的类型,请参见 aeon.base._base_series.VALID_SERIES_INPUT_TYPES。
- axisint, default=1
输入序列的时间点轴,如果是2D的。如果
axis==0,则假设每列是一个时间序列,每行是一个时间点。即数据的形状为(n_timepoints, n_channels)。axis==1表示时间序列在行中,即数据的形状为(n_channels, n_timepoints)。
- Returns:
- np.ndarray
一个布尔、整数或浮点数数组,长度为len(X),其中每个元素指示相应的子序列是否异常或其异常分数。
- reset(keep=None)[source]¶
将对象重置为初始化后的干净状态。
在调用
self.reset()之后,self的值等于或类似于type(self)(**self.get_params(deep=False)),假设没有使用keep保留其他属性。- Detailed behaviour:
- removes any object attributes, except:
超参数(
__init__的参数) 包含双下划线的对象属性,即字符串“__”
使用当前超参数的值(
get_params的结果)运行__init__- Not affected by the reset are:
包含双下划线的对象属性 类和对象方法,类属性 在
keep参数中指定的任何属性
- Parameters:
- keepNone, str, or list of str, default=None
如果为None,则除了超参数外,所有属性都将被移除。 如果为str,则仅保留具有此名称的属性。 如果为str列表,则仅保留具有这些名称的属性。
- Returns:
- selfobject
自我引用。