• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: Matlab
  • 标签: lof  outlier  detection  

资源简介

自己写的local outlier detection 的matlab 代码

资源截图

代码片段和文件信息

function LOF
clc
clear
fileOrder=1;
%读取原始数据
x=readFile(fileOrder);
K=10;
%对数据操作
count=1;%outlier点个数
x=opeData(xcountfileOrder);
[mn]=size(x);
%% 计算各个点之间距离
for i=1:m
    for j=i:m
        dist(ij)=abs(x(i)-x(j));
        dist(ji)=dist(ij);
    end
end

%% 核心部分,对每个点分别计算LOF值
for i=1:m
    %计算k-distance
    [distancenum]=sort(dist(i:)‘ascend‘);
    kdistance=distance(K+1);
    %集合
    pointArray(i:)=num(2:K+1);
    %   对集合中每个点计算可达距离
    n=size(pointArray2);
    for j=1:n
        d(ij)=distance(j+1);
        [distempnumtemp]=sort(dist(i:)‘ascend‘);
        kdistemp=distemp(K+1);
        kdis(j)=kdistemp;
        %可达距离
        reachdis(ij)=max(d(ij)kdis(j));
    end
    sum_reachdis=0;
    for j=1:n
        sum_reachdis=sum_reachdis+reachdis(ij);
    end
    %计算每个点的lrd
    lrd(i)=n/sum_reachdis;
end
%% 得到lof值
for i=1:m
    sumlrd=0;
    for j=1:n
        sumlrd=sumlrd+lrd(j)/lrd(i);
    end
    lof(i)=sumlrd/n;
end
%%画图
subplot(211)
plot(1:size(x1)x‘-b.‘‘linewidth‘2‘markersize‘14.5);
legend(‘原始数据‘);
title(‘LOF方法效果图‘);
set(legend‘location‘‘best‘);
subplot(212)
plot(1:size(lof2

评论

共有 条评论