6.7 示例:使用随机森林算法检测FTP暴力破解

完整演示代码请见本书GitHub上的6-4.py。

1.数据搜集和数据清洗

继续使用ADFA-LD数据集中FTP暴力破解的相关数据,ADFA-LD数据集详细介绍请阅读第3章相关内容。

2.特征化

由于ADFA-LD数据集都记录了函数调用序列,每个文件包含的函数调用序列的个数都不一致,可以参考第3章中的词集模型进行特征化。具体思路请参考6.4节。

3.训练样本

实例化决策树和随机森林算法:


clf1 = tree.DecisionTreeClassifier()
clf2 = RandomForestClassifier(n_estimators=10, 

4.效果验证

我们使用十折交叉验证。


score=cross_validation.cross_val_score(clf1, x, y, n_jobs=-1, cv=10)
print  np.mean(score)
score=cross_validation.cross_val_score(clf2, x, y, n_jobs=-1, cv=10)
print  np.mean(score)

测试结果如下,决策树准确率约为96%,随机森林准确率约为98%。


0.963786878688
0.984888688869