#LOF异常检测算法主要用异常点的检测输出

from scipy.spatial.distance import cdist

import numpy as np

class LOF:

def __init__(self, data, k, epsilon=1.0):

self.data = data

self.k = k

self.epsilon = epsilon

self.N = self.data.shape[0]

def get_dist(self):

# 计算欧式距离矩阵

return cdist(self.data, self.data)

def _kdist(self, arr):

# 计算k距离

inds_sort = np.argsort(arr)

neighbor_ind = inds_sort[1:self.k + 1] # 邻域内点索引

return neighbor_ind, arr[neighbor_ind[-1]]

def get_rdist(self):

# 计算可达距离

dist = self.get_dist()

nei_kdist = np.apply_along_axis(self._kdist, 1, dist)

nei_inds, kdist = zip(*nei_kdist)

for i, k in enumerate(kdist):

ind = np.where(dist[i] < k) # 实际距离小于k距离,则可达距离为k距离

dist[i][ind] = k

return nei_inds, dist

def get_lrd(self, nei_inds, rdist):

# 计算局部可达密度

lrd = np.zeros(self.N)

for i, inds in enumerate(nei_inds):

s = 0

for j in inds:

s += rdist[j, i]

lrd[i] = self.k / s

return lrd

def run(self):

# 计算局部离群因子

nei_inds, rdist = self.get_rdist()

lrd = self.get_lrd(nei_inds, rdist)

score = np.zeros(self.N)

for i, inds in enumerate(nei_inds):

N = len(inds)

lrd_nei = sum(lrd[inds])

score[i] = lrd_nei / self.k / lrd[i]

return score, np.where(score > self.epsilon)[0]

if __name__ == ‘__main__‘:

np.random.seed(42)

import pandas as pd

data=pd.read_excel("finaldata.xlsx")

data=data.loc[:,["p1","p2","p3"]]

print(data)

x = np.random.normal(2, 1, size=(10000, 2))

print(x)

y = np.random.normal(5, 1, size=(20, 2))

print(y)

z = np.vstack((x, y))

print(z)

data=z

data=np.array(data)

lof = LOF(data,5, epsilon=3)

score, out_ind = lof.run()

outliers = data[out_ind]

import matplotlib.pyplot as plt

plt.scatter(data[:, 0], data[:, 1], color=‘b‘)

plt.scatter(outliers[:, 0], outliers[:, 1], color=‘r‘)

plt.show()

print(data)

print(outliers)

print(out_ind)

原文:https://www.cnblogs.com/Yanjy-OnlyOne/p/13367505.html

java实现lof,LOF异常检测算法实现相关推荐

  1. 《异常检测——从经典算法到深度学习》16 基于VAE和LOF的无监督KPI异常检测算法

    <异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...

  2. 异常检测算法之LOF算法

    异常检测算法之LOF 首先了解什么是LOF算法 算法特点 实现方法 实践检验 首先了解什么是LOF算法 LOF算法又叫局部异常因子算法,它是一种基于距离的异常检测算法,我认为该算法比较详细的博客如下: ...

  3. 异常检测:PyOD工具库(含SUOD库)【包括近30种常见的异常检测算法:ABOD、HBOS、IForest、KNN、LOF、OCSVM、PCA等】【Outlier detection (OD) 】

    pyod(Python Outlier Detection)是一个集成了30余种异常检测方法和模型的Python工具箱.从经典的 LOF (SIGMOD 2000) 到近两年的 COPOD (ICDM ...

  4. 四类异常检测算法综述:Isolation Forest、LOF、PCA及DAGMM

    异常检测(Anomaly detection)问题是机器学习算法的一个常见应用.这种算法的一个有趣之处在于:它虽然主要用于非监督学习问题,但从某些角度看,它又类似于一些监督学习问题.本文总结了四种机器 ...

  5. 【机器学习】异常检测算法速览(Python代码)

    正文共: 8636字 8图 预计阅读时间: 22分钟 一.异常检测简介 异常检测是通过数据挖掘方法发现与数据集分布不一致的异常数据,也被称为离群点.异常值检测等等. 1.1 异常检测适用的场景 异常检 ...

  6. 一文详解8种异常检测算法(附Python代码)

    文章目录 一.异常检测简介 1.1 异常检测适用的场景 1.2 异常检测存在的挑战 二.异常检测方法 2.1 基于聚类的方法 2.2 基于统计的方法 2.3 基于深度的方法 2.4 基于分类模型 2. ...

  7. 基于时间序列的异常检测算法小结

    简介 搜罗了网上几乎所有的基于时间序列的异常检测方法,没有包括文献,整理记录一下. 综合引用以下文章: 数据挖掘导论 时间序列异常检测机制的研究 KPI异常检测竞赛笔记 异常检测之时间序列的异常检测 ...

  8. 数学建模:异常检测算法

    一.简介 – 关于异常检测 异常检测(outlier detection)在以下场景: 数据预处理 病毒木马检测 工业制造产品检测 网络流量检测 等等,有着重要的作用.由于在以上场景中,异常的数据量都 ...

  9. 异常检测算法概述(全)

    异常检测算法概述(全) ​ --序列数据异常检测 1.异常的一些概念及异常检测的挑战 2.异常检测问题的不同方面 3.基于分类的异常检测算法 4.基于最近邻的异常检测技术 5.基于聚类的异常检测技术 ...

最新文章

  1. Nanopore sequencing technology and tools for genome assembly: computational analysis of the current
  2. iPhone开发:09年开发领域的最热看点!
  3. 使用【飞桨】实现【手写数字识别】
  4. Matlab中plot函数绘图基本用法
  5. Java并发编程中volatile实现过程详细解析
  6. C#的float、double与decimal
  7. php井字游戏代码_PHP初级笔试题:Tic-Tac-Toe(n阶井字棋)判断胜负
  8. Linux 系统增加Swap分区扩容运行内存
  9. 腾讯广告招人啦,校招优质岗位你不容错过!
  10. 自己整理的几个免费的李炎恢php实战开发教程
  11. 6行代码生成全部6位数字密码字典
  12. centos7 访问php 该网页无法正常运作 目前无法处理此请求
  13. 【我奶奶都能看懂系列005】☀️python基础语法——容器,小学生也可以学!
  14. AMESim锂离子电池包电化学机理模型
  15. C#学习笔记之匿名方法
  16. Golang IDE总汇
  17. OS第二章五大经典PV
  18. Java大象进冰箱线程_把大象装进冰箱:HTTP传输大文件的方法
  19. 微服务与SOA架构,java架构师视频九个阶段百度云
  20. c语言字符数组重置,C语言字符数组初始化

热门文章

  1. 使用history.back()出现警告: 网页已过期的解决办法
  2. IOS KVO与NSNotificationCenter简单使用
  3. 【ZOJ】3380 Patchouli's Spell Cards
  4. spring官网下载
  5. 对单个文件禁用arc
  6. MOQL—过滤器(Filter)
  7. 关于TCP报文段以及拥塞窗口cwnd的理解纠正
  8. 【何之源-21个项目玩转深度学习】——Chapter3-3.2 数据准备-将图像数据转为tfrecord形式
  9. 感想篇:11)只怀了1/4的才是不够的
  10. Docker删除/停止容器