1. 项目简介
网络流量分类或网络流量异常检测,采用基于聚类的机器学习算法,实现异常检测与分类,即划分为正常流量和异常流量。 数据集来源自 KDD
CUP,该数据集是从一个模拟的美国空军局域网上采集来的 9 个星期的网络连接数据,
分成具有标识的训练数据和未加标识的测试数据。测试数据和训练数据有着不同的概率分布, 测试数据包含了一些未出现在训练数据中的攻击类型,
这使得入侵检测更具有现实性。本项目利用 pandas + Matplotlib + seaborn + sklearn
对网络流量数据进行统计分析,并构建聚类算法实现对流量的分类建模。
2. 功能组成
基于聚类方法的网络流量分类的主要功能包括:
3. 工具包导入和数据读取
import warnings
warnings.filterwarnings(‘ignore’)
import os
import gc
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
from IPython.display import display
np.random.seed(7)
plt.style.use(‘seaborn’)
from tqdm import tqdm
import requests
from bs4 import BeautifulSoup
import json
import time
利用 pandas 完成数据集的读取,并将 attack_ type 进行类型转换:
data_df = pd.read_csv(‘data/kddcup.data_10_percent’, sep=‘,’, error_bad_lines=False, header=None)
def transform_target(attack_type):
attack_type = attack_type[:-1]
if attack_type == ‘normal’:
return attack_type
elif attack_type not in {‘smurf’, ‘neptune’}:
return ‘attack’
else:
return ‘None’
data_df['attack_type'] = data_df['attack_type'].map(transform_target)
data_df = data_df[data_df['attack_type'] != 'None']
| duration| protocol_type| service| flag| src_bytes| dst_bytes| land|
wrong_fragment| urgent| hot| …| dst_host_srv_count| dst_host_same_srv_rate|
dst_host_diff_srv_rate| dst_hos