From 74e5dbd53227d093a393d6736ed92d5194a34d44 Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Sun, 27 Dec 2015 15:04:38 +0100 Subject: [PATCH] Remove unused KMeans clustering (half broken implementation anyway) --- src/main/java/eva2/tools/Cluster.java | 33 ----- src/main/java/eva2/tools/KMEANSJAVA.java | 154 ----------------------- 2 files changed, 187 deletions(-) delete mode 100644 src/main/java/eva2/tools/Cluster.java delete mode 100644 src/main/java/eva2/tools/KMEANSJAVA.java diff --git a/src/main/java/eva2/tools/Cluster.java b/src/main/java/eva2/tools/Cluster.java deleted file mode 100644 index 1398e5db..00000000 --- a/src/main/java/eva2/tools/Cluster.java +++ /dev/null @@ -1,33 +0,0 @@ -package eva2.tools; - -/** - * This class represents a cluster object in the R^N. - */ -public class Cluster { - /** - * Number of samples in the cluster. - */ - public int samplesInCluster; - /** - * Center of the cluster. - */ - public double[] center; - /** - * nearest sample (double[]) to the center of the cluster. - */ - public double[] nearestSample; - - /** - * This class represents a cluster of - * sample points. - * - * @param center center - * @param SamplesInCluster Number of samples in cluster - * @param nearestSample Nearest sample to cluster center. - */ - public Cluster(double[] center, int SamplesInCluster, double[] nearestSample) { - samplesInCluster = SamplesInCluster; - this.center = center; - this.nearestSample = nearestSample; - } -} \ No newline at end of file diff --git a/src/main/java/eva2/tools/KMEANSJAVA.java b/src/main/java/eva2/tools/KMEANSJAVA.java deleted file mode 100644 index c99282b6..00000000 --- a/src/main/java/eva2/tools/KMEANSJAVA.java +++ /dev/null @@ -1,154 +0,0 @@ -package eva2.tools; - -import eva2.tools.math.RNG; - -import java.util.Comparator; - -/** - * - */ -public class KMEANSJAVA { - protected double[][] c; - protected int[] indices; - - /** - * - */ - public double[][] getC() { - return c; - } - - /** - * - */ - public int[] getIDX() { - return indices; - } - - /** - * - */ - private double dist(double[] x1, double[] x2) { - double ret = 0; - for (int i = 0; i < x1.length; i++) { - ret += (x1[i] - x2[i]) * (x1[i] - x2[i]); - } - return Math.sqrt(ret); - } - - /** - * - */ - public KMEANSJAVA(double[][] samples, int K, int iterations) { - if (K > samples.length) { - K = samples.length; - } - int counter = 0; - c = new double[K][]; - for (int i = 0; i < K; i++) { - c[i] = samples[i].clone(); - } - indices = new int[samples.length]; - while (counter++ < iterations) { - // determine indices start - for (int i = 0; i < indices.length; i++) { - int index_nc = 0; // index of nearest cluster - double mindist = 999999999; - for (int j = 0; j < c.length; j++) { - if (mindist > dist(samples[i], c[j])) { - mindist = dist(samples[i], c[j]); - index_nc = j; - } - } - indices[i] = index_nc; - } - // determine indices end ! - // determine the new centers - for (int indexofc = 0; indexofc < c.length; indexofc++) { - double[] newcenter = new double[samples[0].length]; - int treffer = 0; - for (int indice : indices) { //System.out.println("j="+j); - if (indice == indexofc) { - treffer++; - for (int d = 0; d < newcenter.length; d++) { - newcenter[d] += c[indice][d]; - //newcenter[d] = newcenter[d] + samples[j][d]; - } - } - } - for (int d = 0; d < newcenter.length; d++) { - newcenter[d] /= treffer; - } - c[indexofc] = newcenter; - } - // determine the new centers - } - } - - /** - * Just a test function. - */ - public static void main(String[] args) { - int k = 3; - int samples = 10; - int d = 2; - double[][] test = new double[samples][d]; - for (int i = 0; i < samples; i++) { - for (int j = 0; j < d; j++) { - test[i][j] = RNG.randomDouble(0, 10); - } - } - KMEANSJAVA app = new KMEANSJAVA(test, k, 5); - double[][] c = app.getC(); - int[] idx = app.getIDX(); - System.out.println("c"); - for (int i = 0; i < c.length; i++) { - for (int j = 0; j < c[i].length; j++) { - System.out.print(c[i][j] + " "); - } - System.out.println(""); - } - System.out.println("test"); - for (double[] aTest : test) { - for (int j = 0; j < aTest.length; j++) { - System.out.print(aTest[j] + " "); - } - System.out.println(""); - } - } -} - -/** - * - */ -class ClusterComp implements Comparator { - /** - * - */ - public ClusterComp() { - } - - /** - * - */ - @Override - public int compare(Object p1, Object p2) { - int x1 = ((Cluster) p1).samplesInCluster; - int x2 = ((Cluster) p2).samplesInCluster; - if (x1 > x2) { - return -1; - } - if (x1 <= x2) { - return 1; - } - return 0; - } - - /** - * - */ - @Override - public boolean equals(Object x) { - return false; - } -} \ No newline at end of file