编码器分类器

class EncoderClassifier(n_epochs=100, batch_size=12, kernel_size=None, n_filters=None, dropout_proba=0.2, activation='sigmoid', max_pool_size=2, padding='same', strides=1, fc_units=256, callbacks=None, file_path='./', save_best_model=False, save_last_model=False, save_init_model=False, best_file_name='best_model', last_file_name='last_model', init_file_name='init_model', verbose=False, loss='categorical_crossentropy', metrics='accuracy', random_state=None, use_bias=True, optimizer=None)[source]

为编码器建立网络结构。

改编自[1]中使用的实现。

Parameters:
kernel_sizearray of int, default = [5, 11, 21]

指定一维卷积窗口的长度。

n_filtersarray of int, default = [128, 256, 512]

指定每层使用的一维卷积滤波器的数量,此数组的形状应与kernel_size相同。

max_pool_sizeint, default = 2

最大池化窗口的大小。

activationstring, default = sigmoid

Keras 激活函数。

dropout_probafloat, default = 0.2

指定dropout层的概率。

paddingstring, default = same

指定用于1D卷积的填充类型。

stridesint, default = 1

指定一维卷积滤波器的滑动速率。

fc_unitsint, default = 256

指定在EncoderNetwork中使用的隐藏全连接层的单元数量。

verboseboolean, default = False

是否输出额外信息。

lossstr, default = “categorical_crossentropy”

Keras 训练损失函数的名称。

metricsstr or list[str], default=”accuracy”

训练期间使用的评估指标。如果提供单个字符串指标,它将作为唯一指标使用。如果提供了一系列指标,所有指标都将用于评估。

optimizerkeras.optimizer, default = tf.keras.optimizers.Adam()

用于训练的keras优化器。

callbackskeras callback or list of callbacks,

默认 = None 默认的回调列表设置为 ModelCheckpoint。

file_pathstr, default = “./”

保存模型检查点回调时的文件路径。

n_epochsint, default = 2000

训练模型的轮数。

batch_sizeint, default = 16

每次梯度更新的样本数量。

use_mini_batch_sizebool, default = False

是否使用小批量大小公式。

save_best_modelbool, default = False

是否保存最佳模型,如果默认使用模型检查点回调, 此条件如果为True,将防止自动删除从文件中保存的最佳模型, 用户可以选择文件名。

save_last_modelbool, default = False

是否使用基类方法 save_last_model_to_file 保存最后一个模型,最后一个训练周期。

save_init_modelbool, default = False

是否保存模型的初始化。

best_file_namestr, default = “best_model”

最佳模型文件的名称,如果 save_best_model 设置为 False,则此参数将被忽略。

last_file_namestr, default = “last_model”

最后一个模型的文件名,如果 save_last_model 设置为 False,则此参数将被丢弃。

init_file_namestr, default = “init_model”

初始化模型文件的名称,如果 save_init_model 设置为 False,则此参数将被忽略。

random_stateint, RandomState instance or None, default=None

如果int,random_state是随机数生成器使用的种子; 如果RandomState实例,random_state是随机数生成器; 如果None,随机数生成器是np.random使用的RandomState实例。 只能在CPU处理上保证种子随机数生成, GPU处理将是非确定性的。

注释

Capabilities

缺失值

多线程

单变量

多变量

不等长

训练估计

可收缩

改编自源代码 https://github.com/hfawaz/dl-4-tsc/blob/master/classifiers/encoder.py

参考文献

[1]

Serrà 等人。 迈向通用时间序列神经网络编码器

在《加泰罗尼亚人工智能协会国际会议论文集》中,120-129页,2018年。

方法

build_model(input_shape, n_classes, **kwargs)

构建一个已编译、未训练的keras模型,该模型已准备好进行训练。

clone([random_state])

获取具有相同超参数的对象的克隆。

convert_y_to_keras(y)

将 y 转换为所需的 Keras 格式。

fit(X, y)

将时间序列分类器拟合到训练数据。

fit_predict(X, y, **kwargs)

拟合分类器并预测X的类别标签。

fit_predict_proba(X, y, **kwargs)

拟合分类器并预测X的类别标签概率。

get_class_tag(tag_name[, raise_error, ...])

从估计器类获取标签值(仅限类标签)。

get_class_tags()

从估计器类及其所有父类中获取类标签。

get_fitted_params([deep])

获取拟合参数。

get_metadata_routing()

Sklearn 元数据路由。

get_params([deep])

获取此估计器的参数。

get_tag(tag_name[, raise_error, ...])

从估计器类中获取标签值。

get_tags()

从估计器中获取标签。

load_model(model_path, classes)

加载预训练的keras模型而不是进行拟合。

predict(X)

预测X中时间序列的类别标签。

predict_proba(X)

预测X中时间序列的类别标签概率。

reset([keep])

将对象重置为初始化后的干净状态。

save_last_model_to_file([file_path])

保存训练好的深度学习模型的最后一个周期。

score(X, y[, metric, use_proba, metric_params])

在X上对预测标签与真实标签进行评分。

set_params(**params)

设置此估计器的参数。

set_tags(**tag_dict)

将动态标签设置为给定值。

summary()

摘要函数,用于返回模型拟合的损失/指标。

build_model(input_shape, n_classes, **kwargs)[source]

构建一个已编译、未训练的keras模型,该模型已准备好进行训练。

在aeon中,时间序列存储在形状为(d, m)的numpy数组中,其中d是维度数,m是序列长度。Keras/tensorflow假设数据形状为(m, d)。此方法也假设为(m, d)。转置应在fit中发生。

Parameters:
input_shapetuple

输入层输入数据的形状应为 (m, d)。

n_classesint

类的数量,即输出层的大小。

Returns:
outputa compiled Keras Model
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 的克隆(见上文)

convert_y_to_keras(y)[source]

将 y 转换为所需的 Keras 格式。

fit(X, y) BaseCollectionEstimator[source]

将时间序列分类器拟合到训练数据。

Parameters:
Xnp.ndarray or list

输入数据,可以是任意数量的通道,形状为( n_cases, n_channels, n_timepoints) 的等长序列,或形状为(n_cases, n_timepoints) 的2D np.array(单变量,等长序列),或形状为[n_cases]的numpy数组列表(任意数量的通道,不等长序列), 其中每个数组为2D np.array (n_channels, n_timepoints_i), 其中n_timepoints_i是序列i的长度。其他类型的数据也是允许的,并且会被转换为上述类型之一。

不同的估计器具有处理不同类型输入的不同能力。如果self.get_tag("capability:multivariate")为False,它们无法处理多变量序列,因此要么n_channels == 1为真,要么X是形状为(n_cases, n_timepoints)的二维数组。如果self.get_tag("capability:unequal_length")为False,它们无法处理不等长的输入。在这两种情况下,如果X具有估计器不具备的能力特征,则会引发ValueError

ynp.ndarray

1D np.array 的 float 或 str,形状为 (n_cases) - 类标签 (真实值)用于拟合与 X 中实例索引对应的索引。

Returns:
selfBaseClassifier

自我引用。

注释

通过创建一个拟合模型来改变状态,该模型更新以“_”结尾的属性,并将is_fitted标志设置为True。

fit_predict(X, y, **kwargs) ndarray[source]

拟合分类器并预测X的类别标签。

fit_predict 仅使用训练数据生成预测估计值。 默认情况下,这是通过10倍交叉验证进行的,尽管一些估计器可能会使用特殊技术,如袋外估计或留一法交叉验证。

重写 _fit_predict 的分类器将具有 capability:train_estimate 标签设置为 True。

通常,这与在整个训练数据上拟合然后进行训练预测不同。要做到这一点,你应该调用 fit(X,y).predict(X)

Parameters:
Xnp.ndarray or list

输入数据,任意数量的通道,形状为( n_cases, n_channels, n_timepoints) 的等长序列或形状为(n_cases, n_timepoints) 的2D np.array(单变量,等长序列)或形状为[n_cases]的numpy数组列表(任意数量的通道,不等长序列), 其中(n_channels, n_timepoints_i), 其中n_timepoints_i是序列i的长度。允许其他类型并转换为上述类型之一。

不同的估计器具有处理不同类型输入的不同能力。如果self.get_tag("capability:multivariate")为False,它们无法处理多变量序列,因此要么n_channels == 1为真,要么X是形状为(n_cases, n_timepoints)的二维数组。如果self.get_tag("capability:unequal_length")为False,它们无法处理不等长的输入。在这两种情况下,如果X具有估计器不具备的能力特征,则会引发ValueError

ynp.ndarray

1D np.array 的 float 或 str,形状为 (n_cases) - 类标签 (真实值)用于拟合与 X 中实例索引对应的索引。

kwargsdict

关键字参数用于配置默认的交叉验证,如果使用基类的默认fit_predict(即如果函数_fit_predict未被重写。如果_fit_predict被重写,kwargs可能不会按预期工作。如果_fit_predict未被重写,有效的输入是cv_size整数,这是用于估计训练数据的交叉验证折数。如果未传递cv_size,则默认为10。如果cv_size大于任何类别中的最小样本数,则将其设置为该最小值。

Returns:
predictionsnp.ndarray

形状 [n_cases] - 预测的类别标签索引对应于实例索引

fit_predict_proba(X, y, **kwargs) ndarray[source]

拟合分类器并预测X的类别标签概率。

fit_predict_proba 仅使用训练数据生成概率估计。 默认情况下,这是通过10倍交叉验证完成的,尽管一些估计器可能会使用特殊技术,如袋外估计或留一法交叉验证。

覆盖 _fit_predict_proba 的分类器将具有 capability:train_estimate 标签设置为 True。

通常,这与在整个训练数据上拟合然后进行训练预测不同。要做到这一点,你应该调用 fit(X,y).predict_proba(X)

Parameters:
Xnp.ndarray or list

输入数据,任意数量的通道,形状为( n_cases, n_channels, n_timepoints) 的等长序列或形状为(n_cases, n_timepoints) 的2D np.array(单变量,等长序列)或形状为[n_cases]的numpy数组列表(任意数量的通道,不等长序列), 其中(n_channels, n_timepoints_i), 其中n_timepoints_i是序列i的长度。允许其他类型并转换为上述类型之一。

不同的估计器具有处理不同类型输入的不同能力。如果self.get_tag("capability:multivariate")为False,它们无法处理多变量序列,因此要么n_channels == 1为真,要么X是形状为(n_cases, n_timepoints)的二维数组。如果self.get_tag("capability:unequal_length")为False,它们无法处理不等长的输入。在这两种情况下,如果X具有估计器不具备的能力特征,则会引发ValueError

ynp.ndarray

1D np.array 的 float 或 str,形状为 (n_cases) - 类标签 (真实值)用于拟合与 X 中实例索引对应的索引。

kwargsdict

关键字参数用于配置默认的交叉验证,如果使用基类的默认fit_predict(即如果函数_fit_predict未被重写。如果_fit_predict被重写,kwargs可能不会按预期工作。如果_fit_predict未被重写,有效的输入是cv_size整数,这是用于估计训练数据的交叉验证折数。如果未传递cv_size,则默认为10。如果cv_size大于任何类别中的最小样本数,则将其设置为该最小值。

Returns:
probabilitiesnp.ndarray

形状为(n_cases, n_classes)的二维数组 - 预测的类别概率 第一维度的索引对应于X中的实例索引, 第二维度的索引对应于类别标签,(i, j)项是 第i个实例属于第j类的估计概率

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_metadata_routing()[source]

Sklearn 元数据路由。

不支持 aeon 估计器。

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中收集任何被覆盖和新添加的标签。

load_model(model_path, classes)[source]

加载一个预训练的keras模型,而不是进行拟合。

调用此函数时,可以使用所有功能,例如使用加载的模型进行predict、predict_proba等操作。

Parameters:
model_pathstr (path including model name and extension)

模型将被保存的目录,包括带有“.keras”扩展名的模型名称。 示例:model_path=”path/to/file/best_model.keras”

classesnp.ndarray

预训练加载模型在分类任务中训练用于预测的唯一类别集合。

Returns:
None
predict(X) ndarray[source]

预测X中时间序列的类别标签。

Parameters:
Xnp.ndarray or list

输入数据,可以是任意数量的通道,形状为( n_cases, n_channels, n_timepoints) 的等长序列,或形状为(n_cases, n_timepoints) 的2D np.array(单变量,等长序列),或形状为[n_cases]的numpy数组列表(任意数量的通道,不等长序列),其中每个数组为2D np.array (n_channels, n_timepoints_i), 其中n_timepoints_i是序列i的长度。 其他类型的数据也是允许的,并且会被转换为上述类型之一。

不同的估计器具有处理不同类型输入的不同能力。如果self.get_tag("capability:multivariate")为False,它们无法处理多变量序列,因此要么n_channels == 1为真,要么X是形状为(n_cases, n_timepoints)的二维数组。如果self.get_tag("capability:unequal_length")为False,它们无法处理不等长的输入。在这两种情况下,如果X具有估计器不具备的能力特征,则会引发ValueError

Returns:
predictionsnp.ndarray

1D np.array of float, 形状为 (n_cases) - 预测的类别标签 索引对应于 X 中的实例索引

predict_proba(X) ndarray[source]

预测X中时间序列的类别标签概率。

Parameters:
Xnp.ndarray or list

输入数据,任意数量的通道,形状为( n_cases, n_channels, n_timepoints) 的等长序列或形状为(n_cases, n_timepoints) 的2D np.array(单变量,等长序列)或形状为[n_cases]的numpy数组列表(任意数量的通道,不等长序列), 其中(n_channels, n_timepoints_i), 其中n_timepoints_i是序列i的长度。允许其他类型并转换为上述类型之一。

不同的估计器具有处理不同类型输入的不同能力。如果self.get_tag("capability:multivariate")为False,它们无法处理多变量序列,因此要么n_channels == 1为真,要么X是形状为(n_cases, n_timepoints)的二维数组。如果self.get_tag("capability:unequal_length")为False,它们无法处理不等长的输入。在这两种情况下,如果X具有估计器不具备的能力特征,则会引发ValueError

Returns:
probabilitiesnp.ndarray

形状为(n_cases, n_classes)的二维数组 - 预测的类别概率 第一维度的索引对应于X中的实例索引, 第二维度的索引对应于类别标签,(i, j)项是 第i个实例属于第j类的估计概率

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

自我引用。

save_last_model_to_file(file_path='./')[source]

保存训练好的深度学习模型的最后一个周期。

Parameters:
file_pathstr, default = “./”

模型将被保存的目录

Returns:
None
score(X, y, metric='accuracy', use_proba=False, metric_params=None) float[source]

在X上预测标签与真实标签的得分。

Parameters:
Xnp.ndarray or list

输入数据,任意数量的通道,形状为( n_cases, n_channels, n_timepoints) 的等长序列或形状为(n_cases, n_timepoints) 的2D np.array(单变量,等长序列)或形状为[n_cases]的numpy数组列表(任意数量的通道,不等长序列), 其中(n_channels, n_timepoints_i), 其中n_timepoints_i是序列i的长度。允许其他类型并转换为上述类型之一。

不同的估计器具有处理不同类型输入的不同能力。如果self.get_tag("capability:multivariate")为False,它们无法处理多变量序列,因此要么n_channels == 1为真,要么X是形状为(n_cases, n_timepoints)的二维数组。如果self.get_tag("capability:unequal_length")为False,它们无法处理不等长的输入。在这两种情况下,如果X具有估计器不具备的能力特征,则会引发ValueError

ynp.ndarray

1D np.array 的 float 或 str,形状为 (n_cases) - 类标签 (真实值)用于拟合与 X 中实例索引对应的索引。

metricUnion[str, callable], default=”accuracy”,

定义用于测试模型拟合度的评分指标。有关支持的字符串参数,请查看sklearn.metrics.get_scorer_names

use_probabool, default=False,

用于检查评分器是否适用于概率估计的参数。

metric_paramsdict, default=None,

包含要传递给评分函数的参数。如果为None,则不传递任何参数。

Returns:
scorefloat

预测(X)与y的准确率得分。

set_params(**params)[source]

设置此估计器的参数。

该方法适用于简单的估计器以及嵌套对象(如Pipeline)。后者具有<component>__<parameter>形式的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_tags(**tag_dict)[source]

将动态标签设置为给定值。

Parameters:
**tag_dictdict

标签名称和标签值对的字典。

Returns:
selfobject

自我引用。

summary()[source]

摘要函数,用于返回模型拟合的损失/指标。

Returns:
historydict or None,

包含模型的训练/验证损失和指标的字典