资源简介
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
评论
共有 条评论