学习笔记(二):使用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%

猜你喜欢

转载自blog.csdn.net/weixin_39878297/article/details/83042181