当前位置:   article > 正文

Graph Neural Network-Based Anomaly Detection in Multivariate Time Series 代码配置及解析_msl数据集

msl数据集

可以在GPU上跑通的代码(含数据集),我已经放到了以下链接,
链接:https://pan.baidu.com/s/1gM4KTbRNHzfbGEGgvEjXAw
提取码:e7wu

在服务器上跑
先创建一个虚拟环境
conda create -n GDN python==3.7
conda activate GDN

按照read me一步一步安装包。

### Requirements
* Python >= 3.6
* cuda == 10.2
* [Pytorch==1.5.1](https://pytorch.org/)要去这个网站复制下载命令
* [PyG: torch-geometric==1.5.0](https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html)

### Install packages
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
# run after installing correct Pytorch package
bash install.sh
  • 1
  • 2
安装
pip install scikit-learn==1.0.2
              matplotlib == 3.1.1
             numpy == 1.19.4
             pandas == 0.25.1
  • 1
  • 2
  • 3
  • 4
  • 5

bash run.sh cpu swat
在这里插入图片描述
在这里插入图片描述
接下来按照两个readme一步步来

因为data/swat/train.csv是从process_swat.py生成的,所以先用现有的处理好的msl数据集试验一下环境是否已配好。

    bash run.sh cpu msl
    # or with gpu
    bash run.sh <gpu_id> msl    # e.g. bash run.sh 1 msl
    
  • 1
  • 2
  • 3
  • 4

We use part of msl dataset(refer to telemanom) as demo example.

Data Preparation

# put your dataset under data/ directory with the same structure shown in the data/msl/

data
 |-msl
 | |-list.txt    # the feature names, one feature per line
 | |-train.csv   # training data
 | |-test.csv    # test data
 |-your_dataset
 | |-list.txt
 | |-train.csv
 | |-test.csv
 | ...

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Notices:

*.csv中的第一列将被视为索引列。
*.csv中的列序列不需要匹配list.txt中的序列。我们将根据list.txt中的顺序重新排列数据列。
*test.csv应该有一个名为“attack”的列,其中包含被攻击或未被攻击的地面真相标签(0/1)(0:正常,1:被攻击)

Run

    # using gpu
    bash run.sh <gpu_id> <dataset>

    # or using cpu
    bash run.sh cpu <dataset>
  • 1
  • 2
  • 3
  • 4
  • 5

You can change running parameters in the run.sh.

Others

SWaT and WADI datasets can be requested from iTrust

下面是处理数据的readme
The directory contains the main preprocessing code for SWaT and WADI.

SWaT

转化SWaT_Dataset_Normal_v0/SWaT_Dataset_Attack_v0.xlsx成为csv文件,重命名’Normal’ / ‘Normal/Attack’列为’attack’ with label 0/1
重命名修改后的文件为’swat_train.csv’和’swat_test.csv’,作为process_swat.py的输入文件
运行脚本python process_swat.py处理数据集
运行脚本会生成train.csv和test.csv,需要自己copy到data/swat/train.csv或者更改一下生成保存的路径。
还要自己创建一下list.txt,模仿msl的。

WADI

基于attack描述文件,在WADI_attackdata.csv中添加 0/1 ‘attack’列,并重命名文件为’WADI_attackdata_labelled.csv’
运行脚本python process_wadi.py

Others

We have provided part of the processed data via link.
我们在此链接中提供了部分已处理的数据,这是经过process_swat的csv文件,可以直接放到data/swat/train.csv.

终于运行成功啦!
bash run.sh cpu swat
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

出现问题:
只能在cpu上跑,在GPU上报错,是因为pytorch和cuda版本和显卡算力不符,显卡是最新的,算力很强,得用新版本的pytorch和cuda。
在这里插入图片描述
在这里插入图片描述

pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
  • 1
conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 cudatoolkit=11.3 -c pytorch -c conda-forge
  • 1

在这里插入图片描述
又报错,是因为pytorch-geometric包的版本和pytorch,cuda又不对应了,可以看到刚才安装install.sh中
在这里插入图片描述
先查看一下我服务器上的cuda版本,刚才安装的pytorch是1.10.0版本的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
去官网https://pytorch-geometric.com/whl安装对应的pytorch-geometric包版本
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注意torch-geometric务必是1.5.0版本的!!!
在这里插入图片描述
运行程序,又有错误,是因为1.8.0以上版本的pytorch的six文件有所变化
在这里插入图片描述
解决:

找到提示的dataloader.py文件中的在这里插入图片描述
替换为

import collections.abc as container_abcs
int_classes = int
string_classes = str
  • 1
  • 2
  • 3

以上,可以正常运行。

以下是另一篇论文的配置,别看了……

IOT报错
在这里插入图片描述
这是因为前面下载的pytorch-geometric的版本不对,重新下载2.0.0版本的,就可以了。

再运行程序,又报错了
在这里插入图片描述
是因为我程序中用的cuda序号5,都改成0.

在这里插入图片描述
终于成功啦!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/366272?site
推荐阅读
相关标签
  

闽ICP备14008679号