## ---- eval = F, echo = T, warning = F, message = F, cache = T----------------- # # # using system('wget..') on a linux OS # # system("wget https://raw.githubusercontent.com/mlampros/DataSets/master/mnist.zip") # # mnist <- read.table(unz("mnist.zip", "mnist.csv"), nrows = 70000, header = T, # # quote = "\"", sep = ",") # ## ---- eval = F, cache = T----------------------------------------------------- # X = mnist[, -ncol(mnist)] # dim(X) # # ## [1] 70000 784 # # # the KernelKnn function requires that the labels are numeric and start from 1 : Inf # # y = mnist[, ncol(mnist)] + 1 # table(y) # # ## y # ## 1 2 3 4 5 6 7 8 9 10 # ## 6903 7877 6990 7141 6824 6313 6876 7293 6825 6958 # ## ---- eval = T, echo = F------------------------------------------------------ knitr::kable(data.frame(irlba_singlular_vectors = 40, k = 8, method = 'braycurtis', kernel = 'biweight_tricube_MULT'), align = 'l') ## ---- eval = F, cache = T----------------------------------------------------- # # library(irlba) # # svd_irlb = irlba(as.matrix(X), nv = 40, nu = 40, verbose = F) # irlba truncated svd # # new_x = as.matrix(X) %*% svd_irlb$v # new_x using the 40 right singular vectors # ## ---- eval = F, cache = T, warning = FALSE, message = FALSE, results = 'hide'---- # # library(KernelKnn) # # fit = KernelKnnCV(as.matrix(new_x), y, k = 8, folds = 4, method = 'braycurtis', # # weights_function = 'biweight_tricube_MULT', regression = F, # # threads = 6, Levels = sort(unique(y))) # # # # str(fit) # # # # evaluation metric # # acc = function (y_true, preds) { # # out = table(y_true, max.col(preds, ties.method = "random")) # # acc = sum(diag(out))/sum(out) # # acc # } # ## ---- eval = F, cache = F----------------------------------------------------- # # acc_fit = unlist(lapply(1:length(fit$preds), # # function(x) acc(y[fit$folds[[x]]], # # fit$preds[[x]]))) # acc_fit # # ## [1] 0.9742857 0.9749143 0.9761143 0.9741143 # # cat('mean accuracy using cross-validation :', mean(acc_fit), '\n') # # ## mean accuracy using cross-validation : 0.9748571 # ## ---- eval = F, cache = T----------------------------------------------------- # # library(OpenImageR) # # hog = HOG_apply(X, cells = 6, orientations = 9, rows = 28, columns = 28, threads = 6) # # ## # ## time to complete : 1.802997 secs # # dim(hog) # # ## [1] 70000 324 # ## ---- eval = F, cache = T, warning = FALSE, message = FALSE, results = 'hide'---- # # fit_hog = KernelKnnCV(hog, y, k = 20, folds = 4, method = 'braycurtis', # # weights_function = 'biweight_tricube_MULT', regression = F, # # threads = 6, Levels = sort(unique(y))) # # # #str(fit_hog) # ## ---- eval = F, cache = F----------------------------------------------------- # # acc_fit_hog = unlist(lapply(1:length(fit_hog$preds), # # function(x) acc(y[fit_hog$folds[[x]]], # # fit_hog$preds[[x]]))) # acc_fit_hog # # ## [1] 0.9833714 0.9840571 0.9846857 0.9838857 # # cat('mean accuracy for hog-features using cross-validation :', mean(acc_fit_hog), '\n') # # ## mean accuracy for hog-features using cross-validation : 0.984 # ## ---- eval = F, echo = T, warning = F, message = F, cache = T----------------- # # # using system('wget..') on a linux OS # # system("wget https://raw.githubusercontent.com/mlampros/DataSets/master/cifar_10.zip") # # cifar_10 <- read.table(unz("cifar_10.zip", "cifar_10.csv"), nrows = 60000, header = T, # # quote = "\"", sep = ",") # ## ---- eval = F, cache = T----------------------------------------------------- # X = cifar_10[, -ncol(cifar_10)] # dim(X) # # ## [1] 60000 1024 # # # the KernelKnn function requires that the labels are numeric and start from 1 : Inf # # y = cifar_10[, ncol(cifar_10)] # table(y) # # ## y # ## 1 2 3 4 5 6 7 8 9 10 # ## 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 # ## ---- eval = T, echo = F------------------------------------------------------ knitr::kable(data.frame(irlba_singlular_vectors = 40, k = 8, method = 'braycurtis', kernel = 'biweight_tricube_MULT'), align = 'l') ## ---- eval = F, cache = T----------------------------------------------------- # # svd_irlb = irlba(as.matrix(X), nv = 40, nu = 40, verbose = F) # irlba truncated svd # # new_x = as.matrix(X) %*% svd_irlb$v # new_x using the 40 right singular vectors # ## ---- eval = F, cache = T, warning = FALSE, message = FALSE, results = 'hide'---- # # fit = KernelKnnCV(as.matrix(new_x), y, k = 8, folds = 4, method = 'braycurtis', # # weights_function = 'biweight_tricube_MULT', regression = F, # # threads = 6, Levels = sort(unique(y))) # # # # str(fit) # ## ---- eval = F, cache = F----------------------------------------------------- # # acc_fit = unlist(lapply(1:length(fit$preds), # # function(x) acc(y[fit$folds[[x]]], # # fit$preds[[x]]))) # acc_fit # # ## [1] 0.4080667 0.4097333 0.4040000 0.4102667 # # cat('mean accuracy using cross-validation :', mean(acc_fit), '\n') # # ## mean accuracy using cross-validation : 0.4080167 # ## ---- eval = F, cache = T----------------------------------------------------- # # hog = HOG_apply(X, cells = 6, orientations = 9, rows = 32, # # columns = 32, threads = 6) # # ## # ## time to complete : 3.394621 secs # # dim(hog) # # ## [1] 60000 324 # ## ---- eval = F, cache = T, warning = FALSE, message = FALSE, results = 'hide'---- # # fit_hog = KernelKnnCV(hog, y, k = 20, folds = 4, method = 'braycurtis', # # weights_function = 'biweight_tricube_MULT', regression = F, # # threads = 6, Levels = sort(unique(y))) # # # # str(fit_hog) # ## ---- eval = F, cache = F----------------------------------------------------- # # acc_fit_hog = unlist(lapply(1:length(fit_hog$preds), # # function(x) acc(y[fit_hog$folds[[x]]], # # fit_hog$preds[[x]]))) # acc_fit_hog # # ## [1] 0.5807333 0.5884000 0.5777333 0.5861333 # # cat('mean accuracy for hog-features using cross-validation :', mean(acc_fit_hog), '\n') # # ## mean accuracy for hog-features using cross-validation : 0.58325 # ## ---- eval = F, echo = F------------------------------------------------------ # # # remove cache and mnist.zip once vignettes are built # # # unlink("image_classification_using_MNIST_CIFAR_data_cache", recursive = TRUE) # USE this chunk in case of 'eval = TRUE' # # unlink("mnist.zip", recursive = TRUE) # # unlink("cifar_10.zip", recursive = TRUE)