阿里云安全恶意程序检测之数据探索

数据说明

训练数据共有 file_id、label、api、tid、index 5个字段

测试数据共有 file_id、api、tid、index 4个字段

阿里云安全恶意程序检测之数据探索_第1张图片

每个 file_id 对应一个 label 用来标记程序的种类,每个 file_id 有多个 tid,每个 tid 会调用多个 api,api 按照调用的先后顺序编号多个 index

这是一个序列分类的问题,从一串超长的文本序列中提取出信息并进行分类。

特征工程

  • 文本预处理

不同于传统的中文文本分类,不需要进行分词、去停用词处理,并且数据经过处理,没有缺失值异常值等。

这里先按照 file_id 分组,设置 labels 和 files 列表,分别用来存储对应 file_id 的种类和 api 拼接序列,最后将 labels 和 files 存储为 pkl 文件

labels = []
files = []
data = pd.read_csv(path) 
group_fileid = data.groupby('file_id')
for file_name, file_group in group_fileid:
    file_labels = file_group['label'].values[0]  # 属于哪一类病毒
    result = file_group.sort_values(['tid', 'index'], ascending=True)  # 按照 tid 和 index 升序排列
    api_sequence = ' '.join(result['api'])  # 把 api 拼接起来
    labels.append(file_labels)
    files.append(api_sequence)
with open("security_train.csv.pkl", 'wb') as f:
    pickle.dump(labels, f)
    pickle.dump(files, f)
  • 特征提取

因为所给数据特征维度不高,这里所有特征都进行选取

  • 文本表示

接下来的文本表示会分别使用不同方法,探索不同表示方法对模型的效果及思考所得结果的原因。

你可能感兴趣的:(阿里云)