1. 程式人生 > >學習筆記(二):使用K近鄰演算法檢測Web異常操作

學習筆記(二):使用K近鄰演算法檢測Web異常操作

使用全量比較,而不是最頻繁和最不頻繁的比較。

1.資料蒐集

       我們使用詞集的模型,將全部命令去重後形成一個大型向量空間,每個命令代表一個特徵,首先通過遍歷全部命令,生成對應詞集。

with open(filename) as f:
for line in f:
    line = line.strip('\n')
    dist.append(line)
fdist = FreqDist(dist).key()

2.特徵化

      使用詞集將操作命令向量化。

def get_user_cmd_feature_new(user_cmd_list,dist):
    user_cmd_feature=[]
    for cmd_list in user_cmd_list:
        v=[0]*len(dist)
        for i in range(0,len(dist)):
            if dist[i] in cmd_list:
                v[i] += 1
          user_cmd_feature.append(v)
return user_cmd_featrue

3.訓練模型

user_cmd_list,dist = load_user_cmd_new("..")
user_cmd_featrue = get_user_cmd_feature_new(user_cmd_list,dist)

labels = get_label("...",2)
y = [0]*50+labels
neigh =KneightborsClassifier(n_neighbors = 3)

4.效果驗證

       使用交叉驗證,10次取樣和驗證,提高驗證可信度。

cross_validation.cross_val_score(neight, user_cmd_feature, y, n_jobs=-1, cv=10)

       準確率達到93%