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,未经允许禁止转载

相关推荐
Boxsc_midnight1 小时前
【MCP+ComfyUI+CherryStudio+Ollama】实现对话式智能批量生成图片(或视频)的方案,硬件友好方案!
网络·人工智能
海天一色y1 小时前
从零构建医疗AI Agent:RAG增强检索、混合搜索与模型部署实战
人工智能·langchain·智能体开发
Katecat996631 小时前
基于YOLOv10的混凝土蜂窝缺陷检测系统深度学习模型
人工智能·深度学习·yolo
自然语1 小时前
人工智能之数字生命-观察的实现
数据结构·人工智能·学习·算法
龙亘川1 小时前
城市大脑:智慧城市演进的核心引擎与实践路径探析
人工智能·智慧城市·城市大脑
专注方法攻略分享1 小时前
网站显示503 Service Unavailable错误怎么办
网络·html
AI Echoes1 小时前
对接自定义向量数据库的配置与使用
数据库·人工智能·python·langchain·prompt·agent
8125035331 小时前
计算机网络全栈连载计划
linux·网络·网络协议·计算机网络
得一录1 小时前
LoRA(Low-Rank Adaptation)的原理和实现
python·算法·机器学习