数据分析 | 离散型数据的类别转换 | Python代码

        有一列类别数据,共有25433条样本,38个类别,其中有24个类别有对应的大类,现需要将38个类别全部转换成其对应的大类,没有对应的大类的类别转换成unknown。

数据集见GitHub连接:https://github.com/ChuanTaoLai/Corresponding_category_conversion

        标签转换.xlsx : 整理后代码运行的文件

        KDDTrain+.csv、KDDTest+.csv : 原始数据集

        Attack Types.csv : 类别和大类对应的文件

        converted_dataset_test.csv、converted_dataset_train.csv : 转后后输出的结果

import pandas as pd

# 读取 Excel 文件
data = pd.read_excel(r'D:\0文献整理\网络入侵检测\KDD99\标签转换.xlsx')
original_labels = data['label1']

# 转化字典
label_mapping = {
    'dos': ['back', 'land', 'neptune', 'pod', 'smurf', 'teardrop'],
    'u2r': ['buffer_overflow', 'loadmodule', 'perl', 'rootkit'],
    'r2l': ['ftp_write', 'guess_passwd', 'imap', 'multihop', 'phf', 'spy', 'warezclient', 'warezmaster'],
    'probe': ['ipsweep', 'nmap', 'portsweep', 'satan'],
    'normal': ['normal'],
}

# 转化函数
def convert_labels(original_labels, label_mapping):
    converted_labels = []

    for label in original_labels:
        for new_label, original_labels_list in label_mapping.items():
            if label in original_labels_list:
                converted_labels.append(new_label)
                break
        else:
            # 如果标签不在映射字典中,则转化为'unknown'
            converted_labels.append('unknown')

    return converted_labels

# 进行标签转化
converted_labels = convert_labels(original_labels, label_mapping)

# 创建DataFrame
df = pd.DataFrame({'Original_Label': original_labels, 'Converted_Label': converted_labels})

# 保存为CSV文件
df.to_csv('converted_dataset_train.csv', index=False)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值