入侵检测阅读论文(下)——基于BiLSTM的入侵检测系统代码_基于lstm的网络入侵检测

本文介绍了使用NLS-KDD数据集建立的基于BiLSTM的入侵检测系统,涵盖了数据预处理、BiLSTM模型设计和二分类系统代码实现。通过数据归一化、SMOTE过采样技术解决样本不平衡问题,提供了完整的二分类检测代码,并分享了网络安全学习资源。
摘要由CSDN通过智能技术生成

​ht+1​

​+bh

​)(2)

y

t

=

W

h

y

h

t

W

h

y

h

t

b

y

y_t=W_{\overrightarrow{h}y}\overrightarrow{h_t}+W_{\overleftarrow{h}y}\overleftarrow{h_t}+b_y

yt​=Wh

y​ht​

​+Wh

y​ht​

​+by​ (3)

数据集

本系统实现使用了NLS-KDD数据集,该数据集是用来评估入侵检测系统的标准数据集之一,是著名的KDD99数据集的修订版本.由四个子数据集组成:KDDTest+、KDDTest-21、KDDTrain+、KDDTrain+_20Percent.其中KDDTest-21和KDDTrain+_20Percent是KDDTrain+和KDDTest+的子集.数据集每条记录包含 43 个特征,如表1所示.其中41个特征指的是流量输入本身,最后两个是标签(正常或攻击)和分数(流量输入本身的严重性).
数据集下载地址: NLS-KDD
在这里插入图片描述
该数据集中包括了4种不同类型的攻击:拒绝服务(Denial of service,DoS)、探测(probe)、用户到根(U2R) 和远程到本地(R2L).同时每种攻击又包含了多种子类型,具体如表2所示。
在这里插入图片描述
数据集中数据分布情况如表3所示。
在这里插入图片描述

数据预处理

数据归一化及标签编码
由上面的数据集描述可知,NLS-KDD数据集中有三个非数值型的特征,分别是协议类型、服务和标志.但是由于本文所使用的深度学习模型BiDLSTM和LSTM只能处理数值型数据,因此在进行模型训练之前必须进行数据预处理:将非数值型数据转化为数值型数据.特征缩放可以确保数据集处于标准化形式,本文使用了sklearn库进行数据归一化,使用 Min–Max 缩放将每个特征的值缩放到 (0, 1) 范围内。
最小-最大特征缩放的表达式如下:

z

=

X

X

m

i

n

X

m

a

x

X

m

i

n

z^{'} =\frac{X-X_{min}}{X_{max}-X_{min}}

z′=Xmax​−Xmin​X−Xmin​​
实现代码:

from sklearn import preprocessing
import numpy as np
# 原始数据X\_train
df = pd.read_csv(filename, header=None)
X_train = df.iloc[:, :df.shape[1] - 1]  # pandas中的iloc切片是完全基于位置的索引
labels = df.iloc[:, df.shape[1] - 1:]
# 初始化数据预处理器,本例中为最小最大值缩放
scaler = MinMaxScaler().fit(X_train)
X_train= scaler.transform(X_train)

数据增强
由于数据集中存在样本不平衡问题,本系统使用了SMOTE过采样技术处理数据。
实现代码:

test_data_filename = "/nls-kdd/data
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值