算法:基于密度的局部离群点检测(lof算法)
输入:样本集合D,正整数K(用于计算第K距离)
输出:各样本点的局部离群点因子
过程:
- 计算每个对象与其他对象的欧几里得距离
- 对欧几里得距离进行排序,计算第k距离以及第K领域
- 计算每个对象的可达密度
- 计算每个对象的局部离群点因子
- 对每个点的局部离群点因子进行排序,输出。
Node.java:
import java.util.ArrayList;
import java.util.List;
public class Node {
private String nodeName; // 样本点名
private double[] dimensioin; // 样本点的维度
private double kDistance; // k-距离
private List<Node> kNeighbor = new ArrayList<Node>(); // k-邻域
private double distance; // 到给定点的欧几里得距离
private double reachDensity; // 可达密度
private double reachDis; // 可达距离
private double lof; // 局部离群因子
public Node() {
}
public Node(String nodeName, double[] dimensioin) {
this.nodeName = nodeName;
this.dimensioin = dimensioin;
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
public double[] getDimensioin() {
return dimensioin;
}
public void setDimensioin(double[] dimensioin) {
this.dimensioin = dimensioi