plot_feature_freq = function(results) {
# browser()
# get list of features from full predictor since this uses every feature
# feature_freq_results = NULL
plots = list()
datasets = unique(results$dataset)
for(datasetLoop in datasets) {
fp = results[results$ids == "full_predictor" & results$dataset == datasetLoop,]
features = strsplit(toString(fp[1,"features"]),", ")[[1]]
resultsFilterred = results %>%
dplyr::filter(ids != "full_predictor" & dataset == datasetLoop)
# browser()
features_freq = data.frame(
'feature' = c(),
'freq' = c(),
'dataset' = c()
)
for (feature in features) {
freq = 0
for (row in (1:nrow(resultsFilterred))) {
# skip full_predictor
featureVector = strsplit(toString(resultsFilterred[row, "features"]),", ")
if (feature %in% featureVector[[1]]) {
freq = freq + 1
}
}
features_freq = rbind(features_freq, data.frame("feature" = feature, 'freq' = freq, 'dataset' = datasetLoop))
}
# browser()
# calc perc
features_freq$perc = features_freq$freq / nrow(resultsFilterred)
features_freq = features_freq[order(-features_freq$perc),]
# filter out features which were nevery picked
features_freq = features_freq %>% dplyr::filter(perc > 0)
plot = ggplot2::ggplot(data = features_freq, ggplot2::aes(x = reorder(feature, perc), y = perc)) +
ggplot2::geom_bar(stat = "identity", width = .5, position = "dodge") +
ggplot2::xlab("") +
ggplot2::ylab("% chosen") +
# ggplot2::ggtitle('Feature Choice over all Feature selection method') +
ggplot2::coord_flip()
plots[[datasetLoop]] = plot
# plots = c(plots, c(plot))
# if(is.null(feature_freq_results)) {
# feature_freq_results = features_freq
# } else {
# feature_freq_results = rbind(feature_freq_results, features_freq)
# }
}
# plot
# distinguish between one or multiple plots
if(length(plots) > 1) {
return(plotly::ggplotly(do.call(plotly::subplot,plots)))
} else {
return(plotly::ggplotly(plots[[1]]))
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.