MCPcopy Index your code
hub / github.com/KKKc3231/ML-DL_IDS

github.com/KKKc3231/ML-DL_IDS @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
6 symbols 148 edges 14 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

🤖ML&DL——IDS入侵检测

1、说明

  • 本文档记录机器学习作业,实现IDS入侵检测,数据集使用的UNSW_NB15公开的数据集,采用的方法参考论文《基于深度神经网络的网络入侵检测技术》根据论文的思路实现了机器学习和深度学习的方法来进行入侵检测。

  • 深度学习方法使用了简单的CNN、LSTM网络进行分类,没有使用论文中的BiGRU网络

  • 提出自己的一些改进方法,主要是在提取特征阶段,由于该数据集中特征属性是不连续的,不太适合使用皮尔逊相关系数来筛选特征,初步的思想是可以使用卡方过滤搭配RF来进行特征选择。

  • 对不平衡类别样本的处理,可以使用adasyn算法

  • 环境pip install -r requirements.txt 即可,注意keras和tensorflow的对应关系

tensorflow和keras对应关系

2、处理过程

2.1 字符型特征 --> 数值型特征

Lable-encoder.py

先用drop_duplicates删除重复值后,获取所有的协议。然后使用LabelEncoder()类将字符型特征转化为数值型。

!以proto字段为例子
# 提取proto的字段值,并将其转化为元组中的对应下表
proto = data_copy["proto"].drop_duplicates(inplace=False)
proto = np.array(proto)
print(proto)
# 转换proto
enc0 = preprocessing.LabelEncoder()
enc0 = enc0.fit(proto)
data_copy['proto'] = enc0.transform(data_copy["proto"])

2.2 归一化

Min-max.py

加快模型的训练

Min_max = MinMaxScaler().fit_transform(X) # 归一化
new_X = pd.DataFrame(Min_max,columns=columns)

2.3 处理不平衡类别样本

Process_Imbalance.py

使用adasyn算法进行处理。具体算法流程可参考ADASYN : 针对不平衡学习的自适应合成抽样方法

# adasyn方法平衡正负样本的个数
ada = ADASYN(random_state=1234)
X_res , Y_res = ada.fit_resample(X,Y)
print(X_res)
# 转化为pd的格式
X = pd.DataFrame(X_res,columns=x_columns)
Y = pd.DataFrame(Y_res)

2.4 特征间相关性系数

ML/Get_corr.py

计算不同特征之间的相关性系数,与RF一同进行特征选择,这个方法可以试一试,我使用的是Chi + RF,不过效果好像并没有太大提升。

2.5 RFP

RFP.py

RF和Pearson特征选择

2.6 卡方过滤和RF

​ 详见文档IDS.md

3、可视化

svm可视化

2维特征和3维特征的可视化绘图。

删除特征attack_cat,因为该特征为类别特征,效果和label的效果一样。

2d:classify.py

3d:3d.py

绘图的具体可参考博客:

SVM 分类器的分类超平面的绘制(2d)

SVM分类器绘制3维分类超平面

SVM简介及sklearn参数

4、CNN

cnn_train.py

使用最基础的cnn进行二分类,框架使用tensorflow的keras,简单方便,也可以使用pytorch,训练集Train-min-max.csv,是进行归一化后的数据。

需要注意的是,categorical_crossentropy损失函数对应的标签为独热编码

cnn_predict.py

加载训练好的模型,在测试集上测试,测试集Test-min-max.csv

new 更新了pytoch版本的样例

5、LSTM

长短期记忆网络,相对于CNN关注更多的时序信息。

模型的搭建与CNN类似,见lstm_train.pylstm_predict.py

Core symbols most depended-on inside this repo

plot_hyperplane
called by 1
ML/classify.py
forward
called by 0
cnn_pytorch.py
Get_feature
called by 0
ML/get_feature.py
Get_CorrList
called by 0
ML/Get_corr.py

Shape

Function 3
Method 2
Class 1

Languages

Python100%

Modules by API surface

cnn_pytorch.py3 symbols
ML/get_feature.py1 symbols
ML/classify.py1 symbols
ML/Get_corr.py1 symbols

For agents

$ claude mcp add ML-DL_IDS \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact