資源簡介
自己寫的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
- 上一篇:自適應全變分圖像去噪Matlab源代碼
- 下一篇:高斯膚色模型分割matlab
評論
共有 條評論