IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> K临近算法检测异常操作(一) -> 正文阅读

[人工智能]K临近算法检测异常操作(一)

概述

K近邻(K-Nearest Neighbor,KNN)算法是机器学习领域使用最广 泛的算法之一,所谓KNN,就是K个最近的邻居的意思,说的是每个样 本都可以用它最接近的K个邻居来代表。KNN算法的核心思想是:如果 一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类 别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策时,只依据最邻近的一个或者 几个样本的类别来决定待分样本所属的类别。KNN方法在类别决策时, 只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样 本,而不是靠判别类域的方法来确定所属类别,因此对于类域交叉或重 叠较多的待分样本集来说,KNN方法较其他方法更为适合。

数据来源

Schonlau在他的个人网站:http://www.schonlau.net/上发布了训练数据。
在这里插入图片描述
训练数据中包括50个用户的操作日志(见图5-4),每个日志包含 15000条操作命令,其中前5000条都是正常操作,后面的10000条日志中 随机包含有异常操作。为了便于分析,数据集每100条操作作为一个操 作序列,同时进行了标注,每个操作序列只要有1条操作异常就认为这个操作序列异常。
其中以用户名作为文件名,每个用户的操作都记录在对应的文件里 面。每个文件中,按照操作顺序依次记录了操作命令。

代码及注释

import numpy as np
from nltk.probability import FreqDist
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
from sklearn import metrics

#测试样本数
N=100

def load_user_cmd(filename):
    cmd_list=[]
    dist=[]
    dist_max=[]
    dist_min=[]
#依次读取每行操作命令,每100个命令组成一个操作序列,保存在列表里面:
    with open(filename) as f:
        i=0
        x=[]
        for line in f:
            line=line.strip('\n')
            x.append(line)
            dist.append(line)
            i+=1
            if i == 100:
                cmd_list.append(x)
                x=[]
                i=0
#统计最频繁使用的前50个命令和最不频繁的前50个命令:
    fdist = FreqDist(dist).keys()
    dist_max=set(list(fdist)[0:50])
    dist_min = set(list(fdist)[-50:])
    return cmd_list,dist_max,dist_min
#特征化
def get_user_cmd_feature(user_cmd_list,dist_max,dist_min):
    user_cmd_feature=[]
    for cmd_block in user_cmd_list:
#去重操作命令的个数。
#以100个命令为统计单元,作为一个操作序列,去重后的操作命令个数作为特征。
        f1=len(set(cmd_block))
        fdist = FreqDist(cmd_block).keys()
#最频繁使用的前10个操作
        f2=list(fdist)[0:10]
#最不常使用的前10个操作
        f3=list(fdist)[-10:]
#统计的最频繁使用的前50个命令以及最不频繁使用的前50 个命令计算重合程度
        f2 = len(set(f2) & set(dist_max))
        f3=len(set(f3)&set(dist_min))
        x=[f1,f2,f3]
        user_cmd_feature.append(x)
    return user_cmd_feature
#标识文件的内容:每行50列,分别代表每个用户的当前操作序列, 正常操作标识为0,异常操作标识为1。
def get_label(filename,index=0):
    x=[]
    with open(filename) as f:
        for line in f:
            line=line.strip('\n')
            x.append( int(line.split()[index]))
    return x

if __name__ == '__main__':
    user_cmd_list,user_cmd_dist_max,user_cmd_dist_min=load_user_cmd("data/MasqueradeDat/User3")
#加载user3的操作数据,并将前120个操作序列作为训练序列,后30 个操作序列作为测试序列。  
 	user_cmd_feature=get_user_cmd_feature(user_cmd_list,user_cmd_dist_max,user_cmd_dist_min)
    
    labels=get_label("data/MasqueradeDat/label.txt",2)
    y=[0]*50+labels

    x_train=user_cmd_feature[0:N]
    y_train=y[0:N]

    x_test=user_cmd_feature[N:150]
    y_test=y[N:150]

    neigh = KNeighborsClassifier(n_neighbors=3)
    neigh.fit(x_train, y_train)
    y_predict=neigh.predict(x_test)

    score=np.mean(y_test==y_predict)*100

    #print y
    #print y_train
    print(y_test)
    print(y_predict)
    print(score)

    print(classification_report(y_test, y_predict))

    print(metrics.confusion_matrix(y_test, y_predict))
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 07:56:48  更:2021-11-24 07:57:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 4:23:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码