学习笔记(二):使用K近邻算法检测Web异常操作

14 篇文章 3 订阅
13 篇文章 1 订阅

使用全量比较,而不是最频繁和最不频繁的比较。

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%

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值