【异常检测】基于常用数据集LANL和CERT的异常检测源代码(https://github.com/pnnl/safekit)实践

写在前面

花了很长时间,总算把https://github.com/pnnl/safekit中的源码部分跑完了,踩了一些坑,这里记录一下我的解决过程。

环境

我的电脑是win10系统,python是3.6.5版本,Tensorflow是1.14.0版本。

源码

源码是一个基于常用数据集LANL和CERT的异常检测代码https://github.com/pnnl/safekit。前面的博客已经介绍了这个源码的结构和每个文件的作用。要注意的是该源码是基于Linux的,所以里面的命令啥的都是基于Linux的,还有就是论文作者用的是python2.注意一下这两点。下面是我对源码的几个地方的修改:
修改一:
safekit/model/simple_lm.py文件的line 167,添加了一行代码,如下:
在这里插入图片描述我添加了 outfile_name=outfile_name.replace(’:’,’-’)。先说一下line 167这里的意思,这里的outfile_name其实就是后面要写入训练结果的文件名字。因为在运行test/lanl_lm_tests.py的时候,会实践好几个输入,对应会生成好几个文件,所以这里通过文件命名来区分生成的文件。outfile_name其实就是一次训练的时间,学习率等这些参数通过下划线连接在一起。但是这里的time.ctime(time.time()).replace(’ ', ‘-’)对应的时间是诸如这种格式12:25,也就是通过冒号进行连接,windows中文件命名是不能有:的,所以我添加line 178代码,就是将:用-进行替换。不然在windows下跑后面会报文件命名的错误。
修改二:
safekit/model/simple_lm.py文件的line 190,我进行了如下修改,这里其实原来的语句os.system(“mkdir /tmp/lanl_result; chmod o+rwx /tmp/lanl_result”)目的是生成一个/tmp/lanl_result文件,再对其赋予权限。这里的命令应该是基于Linux的,反正我在windows下跑是有问题的,根本不能生成/tmp/lanl_result文件。所以我将这一句替换成保险的下面两句,其实就是用os.mkdir创建目录,用os.chmod赋予权限。如下(注意我把我的目录路径做了修改,大家也可以根据个人需要修改路径):

在这里插入图片描述
修改三:
safekit/model/simple_lm.py的这里其实是可以不用修改的,但是为了方便我还是做了一下修改。这里的outfile = open("/bishe_github_2020_03_16/tmp2/lanl_result/" + results_file, ‘w’)其实是生成一个文件方便后面写入训练结果。但是这里源码中生成的文件是没有后缀的,为了方便后面打开,我添加了+’.txt’直接生成txt文档,如下:
在这里插入图片描述

注意点

(1)我在解决问题的时候增加了很多对os等的用法,对路径也有了很多了解、刚开始的时候我运行源码我就一直找不到/tmp/lanl_result,不知道这个目录在哪,后来才知道/是代表根目录,这里是从根目录创建过来的。所以还是要多实践,多学习,多积累。
(2)还有就是,这里的源码是在cmd中通过python xx 来运行的,所以有点不方便,但是大家可以直接去test.log中查看错误,因为源码把整个训练过程的错误啥的都写到test.log中去了。
(3)大家要注意在python中的路径不要这样写:tmp\lanl_results,因为在python中\是转义字符,会产生很多问题,很多歧义。建议大家直接写成tmp/lanl_results或者是tmp\lanl_results,或者网上很方便的一种写法是在tmp\lanl_results前面加个r就可以实现自动转义。
(4)要注意运行test/lanl_lm_tests.py的时候,每次都会训练好几个模型,生成好几个文件。如果不需要全部训练,可以屏蔽掉一些代码,避免等待花费太多时间。
(5)我上面举得例子是test/lanl_lm_tests.py,test/agg_tests.py的相关修改也是一样的。上面只修改了safekit/model/simple_lm.py,safekit/model/tiered_lm.py文件修改也是一样的。你去比较两个文件就会发现有很多相似之处。

写在后面

现在已经把源代码跑通了,后面就是在上面进行模型优化和参数优化,之后再补充。。。

猜你喜欢

转载自blog.csdn.net/qq_38391210/article/details/104904900