入侵检测

文本预处理


合并稀疏特征


  • service的某些属性值会恒对应某一种攻击类型
  • 这些特征值对应的攻击类型相同,说明这些特征之间是不存在区别的,合并属性值可以降低计算成本和错误分类的可能性
def merge_sparse_feature(df):
    df.loc[(df['service'] == 'ntp_u')
           | (df['service'] == 'urh_i')
           | (df['service'] == 'tftp_u')
           | (df['service'] == 'red_i')
    , 'service'] = 'normal_service_group'

    df.loc[(df['service'] == 'pm_dump')
           | (df['service'] == 'http_2784')
           | (df['service'] == 'harvest')
           | (df['service'] == 'aol')
           | (df['service'] == 'http_8001')
    , 'service'] = 'satan_service_group'
    return df

One-hot编码


  • 模型一般默认是连续型数值进行处理
  • 需要把离散性特征数字化,算法才可以处理
  • 决策树这种不计算距离的,可以用1,2,3,4……进行转换
  • SVM、逻辑回归不仅需要将离散特征转化为连续特征,也需要保证不同取值之间的距离是相等的
  • 什么是独热编码?
protocol_type取值1取值2
tcp1001
icmp2010
udp3100

- 既保证了离散特征转化为连续特征,也保证了不同取值之间的距离相等
- 采用独热编码对protocol_type、service、flag用来处理离散特征

def one_hot(df):
    service_one_hot = pd.get_dummies(df["service"])
    df = df.drop('service', axis=1)
    df = df.join(service_one_hot)
    if 'icmp' in df.columns:
        df = df.drop('icmp', axis=1)

    protocol_type_one_hot = pd.get_dummies(df["protocol_type"])
    df = df.drop('protocol_type', axis=1)
    df = df.join(protocol_type_one_hot)

    flag_type_one_hot = pd.get_dummies(df["flag"])
    df = df.drop('flag', axis=1)
    df = df.join(flag_type_one_hot)
    return df

五分类


37种攻击类别综合为4种大的攻击类别

提取主成分


独热编码会提高数据集的维数
将42维变为了115维
降维:通过随机森林进行选取44个显著特征

训练集去均值和方差归一化


  • 去均值和方差归一化?
  • 消除大数吃小数的问题,并且一定程度上可以加速训练所以对每个算法的文本预处理部分都进行了去均值和方差归一化
  • 去均值就是将数据减去平均值,即进行中心化处理
  • 归一化保证所有的维度上数据都在一个变化幅度上
Standarder = StandardScaler().fit(X)
X = Standarder.transform(X)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值