Java 在一组双值中查找异常值
我有一个双值列表,我想在其中找到异常值。weka是否提供了解决问题的算法 您可能需要计算列表中数字的平均值和标准偏差。手工编写这些代码应该相对简单,请参阅 您还可以使用来进行计算。(第一个链接),您有一个使用WEKA的异常值算法的全文实现 此外,还介绍了所使用的算法 S.Shekhar等人在论文“中”提出。论文显示 几个空间异常检测测试。例如,一个 变异函数云显示邻域相关的数据点 关系。对于每一对位置,该值的平方根 位置处的属性值与 绘制位置之间的欧几里德距离。在数据集中 表现出强烈的空间依赖性,属性中的方差 差异数据集表现出强烈的空间依赖性 属性差异中的方差将随着值的增加而增加 位置之间的距离。相互靠近的位置, 但如果属性差异较大,则可能表示存在空间差异 异常值,即使两个位置的值看起来都是 在非空间地检查数据集时合理。一个主要的 其他离群点检测算法的缺点导致了一些真实的错误 忽略了空间异常值,并发现了一些虚假的空间异常值 确定Java 在一组双值中查找异常值,java,statistics,weka,outliers,Java,Statistics,Weka,Outliers,我有一个双值列表,我想在其中找到异常值。weka是否提供了解决问题的算法 您可能需要计算列表中数字的平均值和标准偏差。手工编写这些代码应该相对简单,请参阅 您还可以使用来进行计算。(第一个链接),您有一个使用WEKA的异常值算法的全文实现 此外,还介绍了所使用的算法 S.Shekhar等人在论文“中”提出。论文显示 几个空间异常检测测试。例如,一个 变异函数云显示邻域相关的数据点 关系。对于每一对位置,该值的平方根 位置处的属性值与 绘制位置之间的欧几里德距离。在数据集中 表现出强烈的空间依赖性
对于异常值检测算法,您可以看一看。SIAM教程内容丰富,非常有用,特别是对于非正态分布。是的,但是仍然缺少一个简单的java示例,该示例使用简单的数字列表来查找异常值
package test;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
double[] data = { 20, 65, 72, 75, 77, 78, 80, 81, 82, 83 };
double[] data1 = null;
double[] data2 = null;
if (data.length % 2 == 0) {
data1 = Arrays.copyOfRange(data, 0, data.length / 2);
data2 = Arrays.copyOfRange(data, data.length / 2, data.length);
} else {
data1 = Arrays.copyOfRange(data, 0, data.length / 2);
data2 = Arrays.copyOfRange(data, data.length / 2 + 1, data.length);
}
double q1 = getMedian(data1);
double q3 = getMedian(data2);
double iqr = q3 - q1;
double lowerFence = q1 - 1.5 * iqr;
double upperFence = q3 + 1.5 * iqr;
System.out.println("Lower Fence: " + lowerFence);
System.out.println("Upper Fence: " + upperFence);
}
public static double getMedian(double[] data) {
if (data.length % 2 == 0)
return (data[data.length / 2] + data[data.length / 2 - 1]) / 2;
else
return data[data.length / 2];
}
}