學習筆記(五):使用決策樹演算法檢測POP3暴力破解
阿新 • • 發佈:2018-11-10
1.資料蒐集
載入KDD 99中的資料:
def load_kdd99(filename):
x=[]
with open(filename) asf:
for line in f:
line=line.strip('\n')
line=line.split(',')
x.append(line)
return x
篩選標記為guess-passwd和normal並且是POP3協議的資料:
if (x1[41] in ['guess_passwd','normal.']) and (x1[2]=='pop_3'): if x1[41]=='guess_passwd.': y.append(1) else: y.append(0)
2.特徵化
x1 = [x1[0]]+x1[4:8]+x1[22:30]
v.append(x1)
for x1 in v:
v1 =[]
for x2 in x1:
v1.append(float(x2))
w.append(v1)
3.訓練樣本
clf=tree.DecisionTreeClassifier()
4.效果驗證
print cross_validation.cross_val_score(clf,x,y,n_jobs=-1,cv=10)
5.視覺化決策樹
dot_data=tree.export_graphviz(clf,out_file=None) graph = pydotplus.graph_from_dot_data(dot_data) graph.write_pdf("...")