add comments, fix some things. TODO: comment tests, finish computeWerDists, test it
[epclust.git] / epclust / tests / testthat / helper.clustering.R
index 21a791a..273a0b7 100644 (file)
@@ -1,15 +1,18 @@
-#shorthand: map 1->1, 2->2, 3->3, 4->1, ..., 149->2, 150->3, ... (is base==3)
+# Shorthand: map 1->1, 2->2, 3->3, 4->1, ..., 149->2, 150->3, ... (is base==3)
 I = function(i, base)
        (i-1) %% base + 1
 
-# NOTE: medoids can be a big.matrix
+# Compute the sum of (normalized) sum of squares of closest distances to a medoid.
+# Note: medoids can be a big.matrix
 computeDistortion = function(series, medoids)
 {
+       if (bigmemory::is.big.matrix(medoids))
+               medoids = medoids[,] #extract standard matrix
+
        n = nrow(series) ; L = ncol(series)
        distortion = 0.
-       if (bigmemory::is.big.matrix(medoids))
-               medoids = medoids[,]
        for (i in seq_len(n))
                distortion = distortion + min( colSums( sweep(medoids,1,series[,i],'-')^2 ) / L )
+
        distortion / n
 }