CIC-IDS-2018数据集 代码预处理
CIC-IDS-2018数据集 预处理数据集的获取地址在 https://aistudio.baidu.com/datasetdetail/60692 第一次登陆注册就行内容随便填就能注册create_sample_data() 在代码中被注释没有添加数据之前可以跑一下这个函数就当作检验环境是否有问题importcsvimportpandasaspdimportnumpyasnp# 配置数据路径data_path./data/file_nametotal.csvdefrecord_csv(): 记录CSV文件的表头信息 将表头保存到Excel文件中 print(记录CSV文件表头...)try:withopen(data_path02-14-2018.csv,r,encodingutf-8)asf:readercsv.reader(f)resultlist(reader)print(f表头内容:{result[0]})dfpd.DataFrame(result[0],columns[Column Name])df.to_excel(data_pathheads.xlsx,indexFalse)print(---------保存表头完成---------)exceptFileNotFoundError:print(警告: 数据文件不存在, 请先下载数据集)print(数据集地址: https://aistudio.baidu.com/datasetdetail/60692)exceptExceptionase:print(f记录表头时出错:{e})defwrite_csv(path): 读取CSV文件为DataFrame print(正在加载CSV文件: path)try:datapd.read_csv(path,headerNone,low_memoryFalse)returndataexceptExceptionase:print(f读取文件{path}时出错:{e})returnNonedefget_data(): 获取所有数据文件 print(获取所有数据文件...)# 只处理实际存在的文件files[02-14-2018.csv,02-15-2018.csv,02-16-2018.csv]data_frames[]forfileinfiles:full_pathdata_pathfiledfwrite_csv(full_path)ifdfisnotNoneandlen(df)0:# 删除表头行第一行df_cleaneddf.drop([0])data_frames.append(df_cleaned)print(f成功加载文件:{file})else:print(f加载文件失败:{file})returndata_framesdefmerge_data(data_frames): 合并数据 清除数据中的NaN和Infinity值 print(正在合并数据...)# 合并所有DataFramedatapd.concat(data_frames,ignore_indexTrue)# 清除NaN和Infinity值print(清除NaN和Infinity值...)datadata[~data.isin([np.nan,np.inf,-np.inf]).any(axis1)].dropna()returndatadefmerge_csv(): 合并数据到total.csv文件 print(开始合并CSV文件...)data_framesget_data()datamerge_data(data_frames)filedata_pathfile_name data.to_csv(file,indexFalse,headerFalse)print(---------Total CSV 保存完成---------)print(f合并后的数据形状:{data.shape})defcount_labels(): 统计标签类别 print(正在统计标签类别...)try:raw_datapd.read_csv(data_pathfile_name,headerNone,low_memoryFalse)index_numraw_data.shape[1]-1# 删除包含Label表头的行raw_dataraw_data.drop(raw_data[raw_data[index_num]Label].index,axis0)label_countsraw_data[index_num].value_counts()print(标签统计结果:)print(label_counts)returnlabel_countsexceptFileNotFoundError:print(total.csv文件不存在, 请先运行merge_csv())returnNone# def create_sample_data():# # 创建示例数据文件用于演示# # import os# os.makedirs(data_path, exist_okTrue)## # 创建示例CSV文件模拟真实数据格式# sample_data [# [Flow ID, Src IP, Src Port, Dst IP, Dst Port, Protocol, Timestamp, Flow Duration, Label],# [1, 192.168.1.1, 80, 192.168.1.2, 443, TCP, 2018-02-14 08:00:00, 1000, Benign],# [2, 192.168.1.3, 22, 192.168.1.4, 22, TCP, 2018-02-14 08:01:00, 2000, Bot],# [3, 192.168.1.5, 53, 192.168.1.6, 53, UDP, 2018-02-14 08:02:00, 1500, DDoS],# [4, 192.168.1.7, 8080, 192.168.1.8, 8080, TCP, 2018-02-14 08:03:00, 1800, Infiltration],# [5, 192.168.1.9, 25, 192.168.1.10, 25, TCP, 2018-02-14 08:04:00, 2200, Web Attack],# ]## # 创建多个日期的示例文件# dates [02-14-2018, 02-15-2018, 02-16-2018, 02-20-2018, 02-21-2018]## for date in dates:# filename data_path date .csv# with open(filename, w, newline, encodingutf-8) as f:# writer csv.writer(f)# writer.writerows(sample_data)# print(f创建示例文件: {filename})#defmain(): 主程序 print(*50)print(CIC-IDS-2018特征数据预处理)print(*50)# 创建示例数据# create_sample_data()# 记录表头record_csv()# 合并数据merge_csv()# 统计标签count_labels()print(\n数据处理完成!)# print(注意: 由于实际数据集较大, 这里使用了示例数据)# print(完整数据集请从以下地址下载: )# print(https://aistudio.baidu.com/datasetdetail/60692)if__name____main__:main()
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2464929.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!