Machine Learning 之 LOF离群点检验
来源:互联网 发布:网络小胖学生表情包 编辑:程序博客网 时间:2024/05/21 08:00
#coding=utf-8#本质是基于密度的检测 缺点:计算量巨大#优化 重复点计算import mathprint sorted([1,3,2])[:1],[1,3,2][1:]class LOF: def __init__(self,data,k,threshold): self.data=data self.k=k self.threshold=threshold self.outliners=[] def __calDistance(self,a,b): sum1=0 for k in range(len(a)): sum1+=((a[k]-b[k])**2) sum1=math.sqrt(sum1) if sum1==0: sum1=0.00000001 return sum1 def __calNk(self,point): Nk=[] disList=[] for j in range(len(self.data)): dis=self.__calDistance(point,self.data[j]) disList.append([dis,data[j]]) distList=sorted(distList) distance=distList[k-1][0] distList=distList[0:k-1] disList2=[] for di in distList[k-1:]: if di[0]==distList[k-1][0]: disList2.append(di) Nk=distList+disList2 Nk=[nk[1] for nk in Nk] return Nk,distance def __getReachDis(self,point,Nk): reachDis=[] for nk in Nk: Nk1,dis1=self.__calNk(point) dis2=self.__calNk(point,nk) reachDis.append(max(distance,distance2)) return reachDis def __getLrd(self,point): Nk,distance=self.__calNk(point) reachDis=self.__getReachDis(point,Nk) lrdPoint=1.0*sum(reachDis)/len(reachDis) return lrdPoint,Nk def __getLrdList(self,num): lrdList=[] lrdPoint,Nk=self.__getLrd(self.data[num]) for l in range(len(Nk)): lr,=self.__getLrd(Nk(l)) lrdList.append(lr) return lrdPoint,lrdList def __getLOF(self,num): lrdPoint,lrdList=self.__getLrdList(num) lofValue=0 for lrd in lrdList: lofValue+=1.0*(lrd/lrdPoint) lofValue=lofValue/len(lrdList) return self.data[i],lofValue def run(self): for i in range(len(data)): lofP,lofV=self.__getLOF(i) if lofV>self.threshold: self.outliners.append(lofP) self.outliners=list[(self.outliners)] return self.outliners
阅读全文
0 0
- Machine Learning 之 LOF离群点检验
- 异常点/离群点检测算法——LOF
- 异常点/离群点检测算法——LOF
- [数据挖掘]离群点检测---基于kNN的离群点检测、LOF算法和CLOF算法
- 基于密度的局部离群点检测(lof算法) (Java 实现)
- Machine Learning 之 Learning
- machine learning 注意点
- 离群点
- 数据挖掘技术之离群点检测
- 数据挖掘之离群点检测
- Machine Learning之概述
- R语言︱异常值检验、离群点分析、异常值处理
- R语言︱异常值检验、离群点分析、异常值处理
- 离群点检测方法
- 离群点检测方法
- 离群点过滤
- Machine Learning 之 Types of Learning
- machine learning之logistic regression
- SVN
- JDBC操作数据库的步骤
- Mybatis实现CURD代码篇
- 从零开始实现朴素贝叶斯分类算法(离散特征情形)
- CF878C,图论与数据结构
- Machine Learning 之 LOF离群点检验
- python什么是高阶函数
- HDU 4307:Matrix
- Linux查看系统开机时间
- 基于Hadoop的第二个分布式算法Day4
- ps 阔值抠图 帮助一个爱好ps的妹子
- 分区隔离与数据安全交换技术
- Mysql数据库知识整理
- 【POJ】2728 Desert King 分数规划