readme
This commit is contained in:
151
README.md
Normal file
151
README.md
Normal file
@@ -0,0 +1,151 @@
|
||||
时间序列异常检测实验工具脚本使用说明
|
||||
======
|
||||
说明
|
||||
------
|
||||
本工具用于进行时间序列异常检测模型实验,基于PyTorch框架实现的深度学习训练脚本。
|
||||
为了方便实验创新,本工具封装了dataloader、训练流程、测试流程、评估流程、日志记录与模型导出功能,
|
||||
并内置了部分数据集、预处理算法、模型与评估方法。
|
||||
在进行创新实验时,可以仅修改数据集、预处理算法、模型与评估方法四个内容中的一个就开始快速实验,节省实验的冗余代码开发。
|
||||
数据集、预处理算法、模型与评估方法四部分内容进行自定义时,请按照指定格式设计。
|
||||
实验的参数请通过config.ini文件进行设置。
|
||||
|
||||
如需特殊接口,请联系开发人员郑延钦,邮箱:zhengyanqin@iie.ac.cn
|
||||
|
||||
安装
|
||||
------
|
||||
环境依赖
|
||||
|
||||
python==3.9.7
|
||||
|
||||
* eventlet==0.33.3
|
||||
* gevent==22.10.2
|
||||
* loguru==0.6.0
|
||||
* numpy==1.21.2
|
||||
* pandas==1.4.1
|
||||
* scikit_learn==1.2.2
|
||||
* torch==1.10.2
|
||||
* tqdm==4.63.1
|
||||
|
||||
|
||||
python第三方库安装方法
|
||||
|
||||
pip3 install -r requirements.txt
|
||||
|
||||
配置文件参数说明
|
||||
------
|
||||
config.ini文件用于配置相关设置,包括数据集、算法模型、预处理方法、评估方法、模型参数加载、实验基本参数与自定义参数。
|
||||
|
||||
[Dataset]
|
||||
# 填写数据集名称(文件夹名称),同时训练测试多个数据集,请用逗号隔开
|
||||
# 请确保数据集已经按照要求格式放置在./dataset路径下
|
||||
name=SWAT
|
||||
|
||||
[Method]
|
||||
# 填写模型名称(文件名称,不用写".py"),同时训练测试多个算法,请用逗号隔开
|
||||
# 请确保模型文件已经按照要求格式放置在./model路径下
|
||||
# 模型名称请全部由字母组成
|
||||
name=MtadGatAtt
|
||||
|
||||
[Preprocess]
|
||||
# 填写预处理方法名称(文件名称,不用写".py")
|
||||
# 请确保预处理方法文件已经按照要求格式放置在./preprocess路径下
|
||||
name=standardization
|
||||
|
||||
[Evaluation]
|
||||
# 填写评估方法名称(文件名称,不用写".py"),同时使用多个评估方法,请用逗号隔开
|
||||
# 请确保评估方法文件已经按照要求格式放置在./evaluation路径下
|
||||
name=f1,f1pa,ftad,affiliation
|
||||
|
||||
[ModelPath]
|
||||
# 模型加载先前参数,请用"模型名_数据集名"作为变量名
|
||||
# 路径名称从TSAD文件夹下开始写相对路径,或者直接写绝对路径
|
||||
MtadGatAtt_SWAT=none
|
||||
|
||||
[BaseParameters]
|
||||
# train表示是否训练模型,请填写true或者false,为false时,仅测试模型
|
||||
train=true
|
||||
# epoch表示训练轮数,请填写正整数
|
||||
epochs=20
|
||||
# batch-size表示每个batch的尺寸,请填写正整数
|
||||
batch_size=32
|
||||
# learning-rate表示学习率,建议不要高于0.001
|
||||
learning_rate=1e-4
|
||||
# device表示使用的设备,可以选auto、cpu、cuda,其中auto代表自动判断,有gpu使用gpu,没有则使用cpu;选gpu时需要选择gpu序号,例如cuda:0
|
||||
device=auto
|
||||
|
||||
[CustomParameters]
|
||||
# 此处可以填入自定义参数,数量不限,用于填写特殊需求输入,例如模型文件所需的所有外部参数,构建数据集的部分参数
|
||||
# 输入数据长度input_size,即截取数据的窗口长度
|
||||
input_size=60
|
||||
# 输出数据长度output_size
|
||||
output_size=1
|
||||
# 截取数据的窗口的移动步长
|
||||
step=1
|
||||
# 数据集文件(csv)中,第一行是否需要忽略(第一行为列名的话需要忽略)
|
||||
del_column_name=true
|
||||
# 数据集文件(csv)中,第一列是否是时间戳
|
||||
time_index=true
|
||||
|
||||
启动与停止
|
||||
------
|
||||
通过运行main.py脚本文件,启动程序。可以选择 start | stop | daemon 三个参数。
|
||||
|
||||
* start是启动普通进程,前台运行,日志实时输出并本地记录,可输出训练进度条。
|
||||
* stop是停止当前实验进程。
|
||||
* daemon是启动守护进程,后台运行程序,日志仅保存本地,日志不包含训练进度条内容。
|
||||
|
||||
如无输入参数,默认选择start参数。使用方法如下所示:
|
||||
|
||||
python3 main.py start/stop/daemon
|
||||
|
||||
本工具会输出实验日志、所有模型的最佳检测标签、模型参数文件到./records路径下。
|
||||
|
||||
数据集文件配置说明
|
||||
-----
|
||||
所有数据集文件,均存放在./dataset路径下。
|
||||
数据集可以包含子数据集,数据以csv格式文件存储,必须包含train.csv和test.csv。
|
||||
|
||||
* train.csv和test.csv的数据内容必须全为数值型数据,第一行可保留列名。
|
||||
* train.csv和test.csv如包含时间戳,请置于第一列。
|
||||
* test.csv最后一列为异常标签,建议用0表示正常数据,1表示异常数据(如标签含义相反,本工具会自动识别并反转标签)。
|
||||
|
||||
数据集路径示例如下:
|
||||
|
||||
└── dataset
|
||||
├── 数据集1名称
|
||||
│ ├── 子数据集1名称
|
||||
│ │ ├── train.csv
|
||||
│ │ ├── test.csv
|
||||
│ ├── 子数据集2名称
|
||||
...
|
||||
│ └── 子数据集m名称
|
||||
├── 数据集2名称
|
||||
│ ├── train.csv
|
||||
│ └── test.csv
|
||||
...
|
||||
└── 数据集n名称
|
||||
|
||||
预处理文件配置说明
|
||||
----
|
||||
所有预处理方法的文件,均存放在./preprocess路径下,并写入__init__文件。
|
||||
每个预处理方法单独建立一个文件,新建预处理方法的命名全部采用英文和数字组成,文件名称直接使用预处理方法的命名。
|
||||
|
||||
文件内需包含MyDataset类,MyDataset类继承torch.utils.data.Dataset,必须定义__len__、__getitem__两个方法。
|
||||
各个方法的具体设计要求,详见./preprocess/template.py文件。
|
||||
|
||||
模型文件配置说明
|
||||
-----
|
||||
所有模型结构的文件,需存放于./method路径下,并写入__init__文件。
|
||||
每个模型单独建立一个文件,新建模型的命名全部采用英文和数字组成,文件名称直接使用模型的命名。
|
||||
|
||||
文件内需包含Model类,Model类继承nn.Module,必须定义forward方法、loss方法和detection方法。
|
||||
各个方法的具体设计要求,详见./method/template.py文件。
|
||||
|
||||
评估方法文件配置说明
|
||||
-----
|
||||
所有评估方法的文件,需存放于./evaluation路径下,并写入__init__文件。
|
||||
每个评估方法单独建立一个文件,新建评估方法的命名全部采用英文和数字组成,文件名称直接使用模型的命名。
|
||||
|
||||
文件内需定义evaluate方法,方法的输入输出设计详见./evaluation/template.py文件。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user