distToGram: transform dist object to Gram matrix

Description Usage Arguments Examples

Description

transform dist object to Gram matrix

Usage

1

Arguments

x

a dist object

Examples

 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
data <- matrix(data = rnorm(300),nrow = 100)
distance <- dist(data)
g <- distToGram(distance)
m <- as.matrix(scale(data, center = TRUE, scale = FALSE) )
g2 <- m %*% t(m)
round(sum(g - g2), 7)

# Using the between cluster distances
set.seed(3141593)
data <- rbind(matrix(rnorm(100, mean = 10, sd = 2), nrow = 50),
              matrix(rnorm(100, mean = 0, sd = 1), nrow = 50),
              matrix(rnorm(100, mean = -10, sd = 3), nrow = 50))
              
clustering1 <- stats::hclust(dist(data),method='single')
clustering2 <- kmeans(data,centers=3)
clustering3 <- dbscan::dbscan(data,eps=.8)
library(mclust)
clustering4 <- Mclust(data)
distance <- clusDist(clustering1,clustering2,
                     clustering3, clustering4)
distance
gram <- distToGram(distance)
decomp <- eigen(gram)
evals <- eigen(gram)$values
coords <- eigen(gram)$vectors
savePar <- par(mfrow = c(1,2))
plot(evals/max(evals), type ="b", ylab = "contribution",
     main = "Contributions to dimensionality",
     sub = "Only two dimensions needed")
plot(coords[, 1:2], pch = 0:3, cex = 3,
     xlab = "Var 1", ylab = "Var 2",
     main = "Comparing clusters in cluster space",
     sub = "kmeans and model based agree")
par(savePar)

rwoldford/trec documentation built on May 15, 2019, 6:29 p.m.