• 大小: 1KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: 其他
  • 标签: lof,matlab  

资源简介

lof为基于密度的离群点检测算法,该上传代码,能够直观显示每个数据点的离群因子大小,帮助理解该算法。

资源截图

代码片段和文件信息

%LOF算法
function lof = LOF(dist)

K=10;
m=size(dist1);                 %m为对象数,dist为两两之间的距离
distance = zeros(mm);
num = zeros(mm);               %distance 和num用来记录排序后的顺序,和对象编号顺序
kdistance = zeros(m1);         %计算每个对象的kdistance
count  = zeros(m1);            %k邻域的对象数
reachdist = zeros(mm);         %计算两两之间的reachable-distance
lrd = zeros(m1);
lof = zeros(m1);
%计算k-distance
for i=1:m 
    [distance(i:)num(i:)]=sort(dist(i:)‘ascend‘);
    kdistance(i)=distance(iK+1); 
    count(i) = -1;%自己的距离为0,要去掉自己
    for j = 1:m
        if dist(ij)<=kdistance(i)
            count(i) = count(i)+1;
        end
    end
end
    
for i = 1:m
    for j=1:i-1
        reachdist(ij) = max(dist(ij)kdistance(j));
        reachdist(ji) = reachdist(ij);
    end
end

for i = 1:m
    sum_reachdist=0;
    for j=1:count(i)
        sum_reachdist=sum_reachdist+reachdist(inum(j+1));
    end
    %计算每个点的lrd
    lrd(i)=count(i)/sum_reachdist;
end
% 得到lof值
for i=1:m
    sumlrd=0;
    for j=1:count(i)
        sumlrd=sumlrd+lrd(num(j+1))/lrd(i);
    end
    lof(i)=sumlrd/count(i);
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)lof‘-r.‘‘linewidth‘2‘markersize‘14.5);
% legend(‘LOF值‘);
% set(legend‘location‘‘best‘);
end


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1519  2017-12-28 15:40  LOF.m
     文件         455  2017-12-28 15:40  testLOF.m

评论

共有 条评论

相关资源