This is an implementation of loss-compression

Data sourse is handwriting images of number 6 got from usps.

setwd("~/Desktop/Homework_backup/machinelearning/uspsdata")
data <- read.table("uspsdata.txt")
label <- read.table("uspscl.txt")
data <- cbind(label, data)
index <- which(data[, 1] == 1)
data <- data[index, ]
data <- data[, -1]
data <- as.matrix(data)
cov <- cov(data)
eigen <- eigen(cov)
ev <- eigen$vectors
plot(eigen$values, ylab = "eigen value")

plot of chunk unnamed-chunk-2

a <- 0
COMPRESS <- matrix(nrow = 256, ncol = 6)
for (i in c(1, 4, 8, 16, 32, 64)) {
    a <- a + 1
    ev <- matrix(nrow = 256, ncol = i)
    compress <- rep(0, 256)
    for (n in 1:i) {
        ev[, n] <- eigen$vectors[, n]
        compress <- compress + (ev[, n] %*% data[1, ]) * ev[, n]
    }
    COMPRESS[, a] <- compress
}
image <- c()
pc <- c(1, 4, 8, 16, 32, 64)
par(mfrow = c(3, 3))
for (a in 1:6) {
    image <- matrix(COMPRESS[, a], ncol = 16, byrow = T)
    title <- paste("number of eigen vectors used in compression =", pc[a], sep = "")
    image(x = c(1:16), y = c(1:16), z = image, col = grey((1:256)/256), main = title)
}

plot of chunk unnamed-chunk-4