資源簡介
LOF離群因子算法,是基于密度的用于噪聲和異常數據檢測的常用算法,它通過為每個數據計算異常因子,來判斷該數據是否為噪聲或干擾數據。
代碼片段和文件信息
%LOF算法
%dist為m*m的距離矩陣每一行代表一個數據與其它數據距離的列向量,所以該矩陣為
%對角線為0的,關于對角線對稱的矩陣K為k-近鄰
%?function?lof?=?LOF(distK)
clear;
clc;
A=importdata(‘data.mat‘);%需要進行離群因子算法處理的數據集
numData=size(A1);
KD=[];
for?i=1:1:numData
[~dist]=knnsearch(A(i:)A(::));
KD=[KD;dist‘];
end
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‘);%distance按照升序對dist進行排序,num記錄排序前各個dist所在位置信息
????kdistance(i)=distance(iK+1);%獲得k近鄰距離,因為排序后第一個值為自身到自身的距離為0,所以k+1才是第k個最近距離
????count(i)?=?-1;???????????????%自己的距離為0,要去掉自己
????for?j?=?1:m????????????
評論
共有 條評論