KDD CUP99数据集预处理(Python实现)

KDD CUP99数据集预处理(Python实现)目录KDDCUP99数据集预处理1、数据集下载2、KDD99网络入侵检测数据集介绍3、基于KDD99数据集的入侵检测分析4、符号型特征数值化5、KDDCUP99数据集预处理(Python实现)KDDCUP99数据集预处理1、数据集下载KDDCUP99数据集2、KDD99网络入侵检测数据集介绍介绍一介绍二3、基于KDD99数据集的入侵检测分…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

目录

一、KDD99网络入侵检测数据集介绍

二、KDD99网络入侵检测数据集下载

三、KDD CUP99数据集预处理(Python实现)

1、字符型特征转换为数值型特征(即符号型特征数值化)

2、数值标准化

3、数值归一化


一、KDD99网络入侵检测数据集介绍

        该数据集是从一个模拟的美国空军局域网上采集来的9个星期的网络连接数据,分成具有标识的训练数据和未加标识的测试数据。测试数据和训练数据有着不同的概率分布,测试数据包含了一些未出现在训练数据中的攻击类型,这使得入侵检测更具有现实性。
        在训练数据集中包含了1种正常的标识类型normal和22种训练攻击类型,如表1-1所示。另外有14种攻击仅出现在测试数据集中。

表1-1 KDDCup99入侵检测实验数据的标识类型

标识类型 含义 具体分类标识
Normal 正常记录 Normal
DOS 拒绝服务攻击 back、land、neptune、pod、smurf、teardrop
Probing 监视和其他探测活动 ipsweep、nmap、portsweep、satan
R2L 来自远程机器的非法访问 ftp_write、guess_passwd、imap、multihop、phf、spy、warezclient、warezmaster
U2R 普通用户对本地超级用户特权的非法访问 buffer_overflow、loadmodule、perl、rootkit

        数据特征:KDDCup99训练数据集中每个连接记录包含了41个固定的特征属性和1个类标识,如图1-1所示,标识用来表示该条连接记录是正常的,或是某个具体的攻击类型。在41个固定的特征属性中,9个特征属性为离散(symbolic)型,其他均为连续(continuous)型。 

二、KDD99网络入侵检测数据集下载

三、KDD CUP99数据集预处理(Python实现)

1、字符型特征转换为数值型特征(即符号型特征数值化)

         Python3对KDD CUP99数据集预处理代码实现(仅实现字符型特征转为数值型特征)

#kdd99数据集预处理
#将kdd99符号型数据转化为数值型数据

#coding:utf-8

import numpy as np
import pandas as pd
import csv
import time
global label_list  #label_list为全局变量

#定义kdd99数据预处理函数
def preHandel_data():
    source_file='kddcup.data_10_percent_corrected'
    handled_file='kddcup.data_10_percent_corrected.csv'
    data_file=open(handled_file,'w',newline='')     #python3.x中添加newline=''这一参数使写入的文件没有多余的空行
    with open(source_file,'r') as data_source:
        csv_reader=csv.reader(data_source)
        csv_writer=csv.writer(data_file)
        count=0   #记录数据的行数,初始化为0
        for row in csv_reader:
            temp_line=np.array(row)   #将每行数据存入temp_line数组里
            temp_line[1]=handleProtocol(row)   #将源文件行中3种协议类型转换成数字标识
            temp_line[2]=handleService(row)    #将源文件行中70种网络服务类型转换成数字标识
            temp_line[3]=handleFlag(row)       #将源文件行中11种网络连接状态转换成数字标识
            temp_line[41]=handleLabel(row)   #将源文件行中23种攻击类型转换成数字标识
            csv_writer.writerow(temp_line)
            count+=1
            #输出每行数据中所修改后的状态
            print(count,'status:',temp_line[1],temp_line[2],temp_line[3],temp_line[41])
        data_file.close()


#将相应的非数字类型转换为数字标识即符号型数据转化为数值型数据
def find_index(x,y):
    return [i for i in range(len(y)) if y[i]==x]

#定义将源文件行中3种协议类型转换成数字标识的函数
def handleProtocol(input):
    protocol_list=['tcp','udp','icmp']
    if input[1] in protocol_list:
        return find_index(input[1],protocol_list)[0]

#定义将源文件行中70种网络服务类型转换成数字标识的函数
def handleService(input):
   service_list=['aol','auth','bgp','courier','csnet_ns','ctf','daytime','discard','domain','domain_u',
                 'echo','eco_i','ecr_i','efs','exec','finger','ftp','ftp_data','gopher','harvest','hostnames',
                 'http','http_2784','http_443','http_8001','imap4','IRC','iso_tsap','klogin','kshell','ldap',
                 'link','login','mtp','name','netbios_dgm','netbios_ns','netbios_ssn','netstat','nnsp','nntp',
                 'ntp_u','other','pm_dump','pop_2','pop_3','printer','private','red_i','remote_job','rje','shell',
                 'smtp','sql_net','ssh','sunrpc','supdup','systat','telnet','tftp_u','tim_i','time','urh_i','urp_i',
                 'uucp','uucp_path','vmnet','whois','X11','Z39_50']
   if input[2] in service_list:
       return find_index(input[2],service_list)[0]

#定义将源文件行中11种网络连接状态转换成数字标识的函数
def handleFlag(input):
    flag_list=['OTH','REJ','RSTO','RSTOS0','RSTR','S0','S1','S2','S3','SF','SH']
    if input[3] in flag_list:
        return find_index(input[3],flag_list)[0]

#定义将源文件行中攻击类型转换成数字标识的函数(训练集中共出现了22个攻击类型,而剩下的17种只在测试集中出现)
def handleLabel(input):
    #label_list=['normal.', 'buffer_overflow.', 'loadmodule.', 'perl.', 'neptune.', 'smurf.',
    # 'guess_passwd.', 'pod.', 'teardrop.', 'portsweep.', 'ipsweep.', 'land.', 'ftp_write.',
    # 'back.', 'imap.', 'satan.', 'phf.', 'nmap.', 'multihop.', 'warezmaster.', 'warezclient.',
    # 'spy.', 'rootkit.']
    global label_list  #在函数内部使用全局变量并修改它
    if input[41] in label_list:
        return find_index(input[41],label_list)[0]
    else:
        label_list.append(input[41])
        return find_index(input[41],label_list)[0]

if __name__=='__main__':
    start_time=time.clock()
    global label_list   #声明一个全局变量的列表并初始化为空
    label_list=[]
    preHandel_data()
    end_time=time.clock()
    print("Running time:",(end_time-start_time))  #输出程序运行时间

      该代码仅对10%的训练集(kddcup.data_10_percent_corrected)进行处理

2、数值标准化

        设 X’ijXij数值标准化后的值

KDD CUP99数据集预处理(Python实现)

3、数值归一化

KDD CUP99数据集预处理(Python实现)

1、网络安全相关数据集介绍与下载

2、one-hot编码处理符号型数据

3、Weka进阶—基于KDD99数据集的入侵检测分析

KDD99入侵检测数据预处理和分类源代码及数据集资源下载:

KDD99入侵检测数据预处理和分类源代码及数据集.zip-机器学习文档类资源-CSDN下载

交流学习资料共享欢迎入群:955817470(群一),801295159(群二)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/181297.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • linux查看udp端口占用命令,详解Linux查看端口占用「建议收藏」

    linux查看udp端口占用命令,详解Linux查看端口占用「建议收藏」在使用计算机的过程中,有时会碰到端口被占用的情况,这时候需要查看端口占用情况进行问题排查。在linux系统中,端口占用的情况也时有发生,一般情况下可以使用lsof和netstat两个命令来查看端口占用情况。下面我们就分别介绍Linux查看端口占用用到的lsof和netstat命令:1、lsof命令lsof(listopenfiles)命令功能:列出当前系统打开文件。在linux系统中,一切皆文…

  • 输出数组的全排列java_java用sort对一个数组排序

    输出数组的全排列java_java用sort对一个数组排序packagetest;importjava.util.ArrayList;importjava.util.List;publicclass Test{staticList<int[]>allSorts=newArrayList<int[]>();publicstaticvoidpermutation(int[]nums,i…

    2022年10月11日
  • java删除文件,重命名文件

    java删除文件,重命名文件在做项目时,遇到需要对文件做一些删除重命名等操作。基于java语言,保存代码段如下。//文件重命名,缩小数据量,将对应的文件列为一张2维的表,方便对摘要文档等的操作 publicstaticbooleanrenameFile(Stringpath,Stringoldname,Stringnewname){ Fileoldfile=newFile(path+oldnam

  • 不要再走弯路了,最全的黑客入门学习路线在这[通俗易懂]

    不要再走弯路了,最全的黑客入门学习路线在这[通俗易懂]在大多数的思维里总觉得学习网络安全得先收集资料、学习编程、学习计算机基础,这样不是不可以,但是这样学效率太低了!你要知道网络安全是一门技术,任何技术的学习一定是以实践为主的。也就是说很多的理论知识其实是可以在实践中去验证拓展的,这样学习比起你啃原理、啃书本要好理解很多。所以想要学习网络安全选对正确的学习方法很重要,这可以帮你少走很多弯路。因为如果你选择了一个低效的方法,也许别人都已经彻底学会了,你还停留在入门阶段。对于小白来说,有个人引导会比自学要高效的多,尤其是容易坚持不下去的小伙伴。学姐

  • OpenCV单目视觉定位(测量)系统

    OpenCV单目视觉定位(测量)系统转自:http://blog.csdn.net/chenmohousuiyue/article/details/56300915OpenCV单目视觉定位(测量)系统TheSystemofVisionLocationwithSignalCameraAbstract:Thispassagemainlydescribeshowtolo

  • word2vec原理总结

    word2vec原理总结CBOW与Skip-Gram模型基础:https://www.cnblogs.com/pinard/p/7160330.htmlHierarchicalSoftmax的模型:https://www.cnblogs.com/pinard/p/7243513.htmlNegativeSampling的模型:https://www.cnblogs.com/pinard/p/7249903.h…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号