plot_pixel = function(results) {
# get datasets
datasets = unique(results$dataset)
rotate = FALSE
# define layout of plot
image_rows = ceiling(nrow(results %>% dplyr::filter(ids != "full_predictor") %>% dplyr::group_by(dataset, classifier, ids) %>% dplyr::count()) / 5)
par(mfrow=c(image_rows,5), mar = c(1,1,1,1) + 1)
for(data in datasets) {
# get results for this dataset
results_dataset = results %>% dplyr::filter(dataset == data)
# get features of full_predictor
pixel_feats = results_dataset %>% dplyr::filter(ids == "full_predictor") %>% dplyr::select(features)
pixel_feats = pixel_feats$features[[1]]
pixel_feats = stringr::str_split(pixel_feats, ", ")[[1]]
# rotate image for PixRaw10P
if(data == "PixRaw10P") {
rotate = TRUE
range = (length(pixel_feats)-1):1
}
else {
rotate = FALSE
range = 1:(length(pixel_feats)-1)
}
# define width height and range
width_height = sqrt(length(pixel_feats))
# range = 1:length(pixel_feats)
# get classifier
classifiers = unique(results_dataset %>% dplyr::filter(ids != "full_predictor") %>% dplyr::select(classifier))$classifier
# get methods
methods = sort(unique(results_dataset %>% dplyr::filter(ids != "full_predictor") %>% dplyr::select(ids))$ids)
for(class in classifiers) {
for(method in methods) {
# get best performing
best_result = results_dataset %>% dplyr::filter(ids == method & classifier == class) %>% dplyr::filter(metric == min(metric)) %>% dplyr::select(features)
if(nrow(best_result) <= 0) {
break
}
best_result = best_result$features
# create matrix for selected pixels
pixels = rep(0, width_height*width_height)
selectedPixels = pixel_feats[range] %in% stringr::str_split(best_result, ", ")[[1]]
pixels[selectedPixels] = 255
pixels = matrix(as.numeric(pixels),width_height,width_height)
# browser()
# rotate if needed
if(rotate) {
pixels = t(pixels)
}
# browser()
image(1:width_height, 1:width_height, pixels, col=gray(1-(0:255)/255), xlab = "", ylab = "")
title(main = paste(method, class, sep="_"))
}
}
}
# rotate = FALSE
#
# if(grepl("mnist", tolower(dataset))) {
# data = loadMnistNumbers(1)$data
# width_height = sqrt(ncol(data)-1)
# range = 1:(ncol(data)-1)
# }
# else if(grepl("pixraw", tolower(dataset))) {
# data = loadPixRaw10P()$data
# width_height = sqrt(ncol(data)-1)
# rotate = TRUE
# range = (ncol(data)-1):1
# }
# browser()
# par(mar=c(1,1,1,1))
}
# plot_pixel(fs_results)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.