这篇博客是对书中《web安全深度学习入门》DGA域名检测XGBoost的代码进行复现与解释。代码大部分与之前我发布的朴素贝叶斯算法的代码差不多。
实验步骤如下:
1. 获取样本数据
2. 提取特征
3. 将样本划分为训练集和测试集
4. 使用XGBoost算法在训练集上训练,获得模型数据
5. 使用模型数据在测试集上进行测试
6. 验证XGBoost算法的结果
获取样本数据
老规矩,加载正常样本和黑样本。
提取特征与划分数据集
(一)提取统计特征
以每个域名元音字母个数,不重复字符个数,数字个数三个特征来标记一个域名,将其向量化
这个代码和叶贝斯的一模一样,看不懂的可以看我的博客DGA之叶贝斯(一)
(二)提取2-Gram
训练、预测和验证XGBoost
验证结果
(一) 统计特征的XGBoost
(二)2-Gram特征的XGBoost
源代码在GitHub上:xb_dga.py