F065_基于机器学习的KDD CUP 99网络入侵检测系统实战

🚀 基于机器学习的KDD CUP 99网络入侵检测系统实战

关注B站:麦麦大数据

编号: F065

摘要:本文介绍了一个基于机器学习的网络入侵检测系统(IDS),采用Vue2 + Flask前后端分离架构,使用KDD CUP 99数据集,支持决策树、KNN、朴素贝叶斯、BP神经网络四种算法,提供单条检测、批量检测、模型训练等核心功能。系统采用香槟金暗色主题设计,具有良好的用户体验。


📚 目录

  1. 项目概述
  2. 技术架构
  3. 核心功能
  4. 界面展示
  5. 核心代码实现
  6. 快速开始
  7. 总结

一、项目概述

1.1 背景介绍

网络入侵检测系统(Intrusion Detection System,IDS)是网络安全的重要组成部分。随着网络攻击手段日益复杂,传统的基于规则的攻击检测已经难以满足需求。机器学习技术的引入,使得IDS能够通过学习正常流量和攻击流量的特征模式,自动识别未知攻击。

KDD CUP 99数据集是网络入侵检测领域最经典的数据集之一,包含约500万条网络连接记录,每条记录有41个特征属性,标记为正常或具体攻击类型。

1.2 项目简介

本项目是一个基于机器学习的网络入侵检测系统,采用前后端分离架构:

  • 前端:Vue 2 + Element UI + ECharts
  • 后端:Flask + MySQL + Scikit-learn + PyTorch
  • 算法:决策树、K近邻(KNN)、朴素贝叶斯、BP神经网络

二、技术架构

2.1 系统架构图

复制代码
┌─────────────────────────────────────────────────────┐
│                   前端 (Vue2)                     │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│  │ 仪表盘  │ │ 入侵检测 │ │ 模型管理 │ │ 数据可视化│ │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────┘
                         │
                      Axios API
                         │
┌─────────────────────────────────────────────────────┐
│                   后端 (Flask)                       │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│  │ 用户模块 │ │ 检测模块 │ │ 模型模块 │ │ 数据模块 │ │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│                        │                          │
│                   MySQL 数据库                      │
└─────────────────────────────────────────────────────┘

2.2 核心技术栈

层级 技术选型 说明
前端框架 Vue 2.6 渐进式JavaScript框架
UI组件 Element UI 2.15 桌面端组件库
图表 ECharts 5.5 可视化图表库
状态管理 Vuex 状态管理模式
后端框架 Flask Python轻量级Web框架
数据库 MySQL 关系型数据库
机器学习 Scikit-learn Python机器学习库
深度学习 PyTorch 深度学习框架

三、核心功能

3.1 用户模块

  • ✅ 用户注册/登录
  • ✅ Session状态管理
  • ✅ 头像上传
  • ✅ 个人信息修改

3.2 检测模块

单条检测

支持41个网络连接特征输入,选择不同算法进行实时检测:

特征类别 主要特征
基本特征 duration, protocol_type, service, flag
字节特征 src_bytes, dst_bytes
流量特征 count, srv_count
错误率 serror_rate, rerror_rate

支持选择:

  • 算法:决策树、KNN、朴素贝叶斯、BP神经网络
  • 分类:二分类(Normal/Attack)、多分类(具体攻击类型)
批量检测

支持CSV文件批量上传,自动处理并保存检测结果到数据库。

3.3 模型模块

模型训练
  • 批量训练所有算法模型
  • 异步处理大数据集
  • 训练进度实时反馈
模型评估
  • 准确率(Accuracy)
  • 精确率(Precision)
  • 召回率(Recall)
  • F1分数
  • 混淆矩阵可视化
  • ROC曲线、P-R曲线

3.4 数据模块

  • KDD CUP 99数据集导入
  • 异步导入(支持百万级数据)
  • 导入进度实时显示
  • 数据统计分析


3.5 可视化模块

  • 攻击类型分布(环形饼图)
  • 协议类型分布(南丁格尔玫瑰图)
  • 服务类型分布(渐变柱状图)

四、界面展示

4.1 登录页面

采用香槟金暗色主题设计,包含流星雨背景动画和扫描线效果。


4.2 仪表盘

展示系统核心指标和图表:

  • 总检测次数
  • 今日检测
  • 检测到攻击
  • 已训练模型

4.3 检测日志

记录所有检测历史,支持分页查询。

4.4 用户管理

用户CRUD操作,支持搜索和分页。


五、核心代码实现

5.1 机器学习模型基类

python 复制代码
class BaseModel:
    def __init__(self, name, category=2):
        self.name = name
        self.category = category
        self.model = None
        self.model_path = os.path.join(MODEL_DIR, f"{category}_{name}")

    def predict(self, X):
        if self.model is None:
            self.load()
        return self.model.predict(X)

    def predict_proba(self, X):
        if self.model is None:
            self.load()
        return self.model.predict_proba(X)

📝 获取完整源码 :请联系麦麦大数据获取

5.2 BP神经网络模型

使用PyTorch实现的BP神经网络:

python 复制代码
class BPModel(BaseModel):
    def __init__(self, category=2, input_dim=41, hidden_dims=[20]):
        super().__init__("bp", category)
        self.input_dim = input_dim
        self.hidden_dims = hidden_dims

    def _build_model(self):
        layers = []
        prev_dim = self.input_dim
        for hidden_dim in self.hidden_dims:
            layers.append(torch.nn.Linear(prev_dim, hidden_dim))
            layers.append(torch.nn.ReLU())
            prev_dim = hidden_dim
        layers.append(torch.nn.Linear(prev_dim, self.category))
        return torch.nn.Sequential(*layers)

    def train(self, X, y, epochs=100, lr=0.01):
        # 训练逻辑
        self.model = self._build_model()
        # ... 训练过程
        self.save()

📝 获取完整源码 :请联系麦麦大数据获取

5.3 检测接口

python 复制代码
@detect_bp.route("/predict", methods=["POST"])
def predict():
    data = request.json
    features = preprocess_features(data)
    
    model = get_model(algorithm, category)
    model.load()
    
    prediction = model.predict(features)[0]
    proba = model.predict_proba(features)[0]
    
    label = "Normal" if prediction == 0 else "Attack"
    
    # 保存检测日志
    log = DetectionLog(prediction=label, confidence=float(max(proba)), ...)
    db.session.add(log)
    db.session.commit()
    
    return make_response(code=0, data={
        "prediction": label,
        "confidence": float(max(proba))
    })

5.4 前端检测组件

vue 复制代码
<template>
  <el-form :model="form" label-width="150px">
    <el-form-item label="选择算法">
      <el-select v-model="form.algorithm">
        <el-option label="决策树" value="tree"></el-option>
        <el-option label="KNN" value="knn"></el-option>
        <el-option label="朴素贝叶斯" value="bayes"></el-option>
        <el-option label="BP神经网络" value="bp"></el-option>
      </el-select>
    </el-form-item>
  </el-form>
</template>

📝 获取完整源码 :请联系麦麦大数据获取


六、快速开始

6.1 环境准备

bash 复制代码
# Python环境
Python >= 3.8

# Node环境
Node.js >= 14

# 数据库
MySQL >= 5.7

6.2 后端启动

bash 复制代码
cd kddcup-ids-flask

# 安装依赖
pip install -r requirements.txt

# 配置数据库
# 修改 config.py 中的数据库连接信息

# 启动服务
python run.py

6.3 前端启动

bash 复制代码
cd kddcup-ids-vue

# 安装依赖
npm install

# 启动开发服务器
npm run serve

6.4 使用流程

  1. 注册/登录 - 创建账户
  2. 导入数据 - 上传KDD CUP 99数据集
  3. 训练模型 - 选择分类类型,训练检测模型
  4. 入侵检测 - 单条或批量检测网络流量
  5. 查看结果 - 检测日志和数据分析

七、总结

7.1 项目亮点

  1. 前后端分离架构 - 良好的可维护性和扩展性
  2. 多种机器学习算法 - 决策树、KNN、朴素贝叶斯、BP神经网络
  3. 香槟金暗色主题 - 现代化UI设计,流星雨动画效果
  4. 异步处理 - 大数据集导入和模型训练不阻塞主线程
  5. ECharts可视化 - 直观的数据展示

7.2 后续优化方向

  • 🔄 增加更多检测算法(如SVM、Random Forest)
  • 🔄 支持实时网络流量捕获
  • 🔄 添加告警通知功能
  • 🔄 优化模型性能

🙏 致谢

感谢KDD CUP 99数据集的提供者,感谢开源社区的无私奉献。


关注B站:麦麦大数据

获取更多技术干货,请关注麦麦大数据!


本文首发于CSDN,未经允许禁止转载

相关推荐
wq8973879 分钟前
[AI问答]OpenSSL3.0+上的异步调用
网络安全
袋鼠云数栈14 分钟前
集团数字化统战实战:统一数据门户与全业态监管体系构建
大数据·数据结构·人工智能·多模态
廋到被风吹走19 分钟前
【AI】Codex 多语言实测:Python/Java/JS/SQL 效果横评
java·人工智能·python
cskywit26 分钟前
【IEEE TNNLS 2025】赋予大模型“跨院行医”的能力:基于全局与局部提示的医学图像泛化框架 (GLP) 解析
人工智能
2501_948114241 小时前
AI API Gateway 选型指南:2026 年生产环境下的聚合平台深度对比
人工智能·gateway
实在智能RPA1 小时前
Agent 在物流行业能实现哪些自动化?——深度拆解 AI Agent 驱动的智慧物流新范式
运维·人工智能·ai·自动化
TechubNews1 小时前
Jack Dorsey:告别传统公司层级,借助 AI 走向智能体架构
大数据·人工智能
伴野星辰1 小时前
如何提高YOLO8目标检测的准确性?
人工智能·目标检测·机器学习
NiKick2 小时前
在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)
linux·服务器·网络
胡耀超2 小时前
Token的八副面孔:为什么“词元“不需要更好的翻译,而需要更多的读者
大数据·人工智能·python·agent·token·代币·词元