-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOutlierDetectionSample.java
More file actions
64 lines (48 loc) · 2.46 KB
/
OutlierDetectionSample.java
File metadata and controls
64 lines (48 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package samples;
import neural.Bounds;
import rwa.odet.NeuralOutlierDetector;
import rwa.odet.OutlierDetector;
import util.Util;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.stream.Collectors;
public class OutlierDetectionSample {
public static final String delimiter = ";";
private static int idx = 0;
private static final int bucketCount = 50;
private static final Bounds bounds = new Bounds(-1, 1);
private static final int maxNeuronSize = 10000;
public static void main(String[] args) throws IOException {
StringBuilder sb = new StringBuilder();
//all columns have an anomaly starting at point 4000 with 200-points length
double[][] sinData = Util.readAsDoubleArray(Path.of("src/main/resources/data/sin_autogenerated.csv"), delimiter);
OutlierDetector detector = new NeuralOutlierDetector(maxNeuronSize);
detector.addChannel(() -> sinData[idx][0], bounds, bucketCount);
detector.addChannel(() -> sinData[idx][1], bounds, bucketCount);
detector.addChannel(() -> sinData[idx][2], bounds, bucketCount);
OutlierDetector detector1 = new NeuralOutlierDetector(maxNeuronSize);
detector1.addChannel(() -> sinData[idx][0], bounds, bucketCount);
OutlierDetector detector2 = new NeuralOutlierDetector(maxNeuronSize);
detector2.addChannel(() -> sinData[idx][1], bounds, bucketCount);
OutlierDetector detector3 = new NeuralOutlierDetector(maxNeuronSize);
detector3.addChannel(() -> sinData[idx][2], bounds, bucketCount);
int total = sinData.length - 1;
for (; idx < total; idx++) {
System.out.println(idx + " of " + total);
double outlier = detector.next();
double outlier1 = detector1.next();
double outlier2 = detector2.next();
double outlier3 = detector3.next();
sb.append(idx).append(delimiter)
.append(Arrays.stream(sinData[idx]).mapToObj(String::valueOf).collect(Collectors.joining(delimiter))).append(delimiter)
.append(outlier).append(delimiter)
.append(outlier1).append(delimiter)
.append(outlier2).append(delimiter)
.append(outlier3).append(delimiter)
.append("\n");
}
Files.write(Path.of("src/main/resources/logs/sin_outlier_output.csv"), sb.toString().getBytes());
}
}