## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----echo = FALSE------------------------------------------------------------- options(crayon.enabled = FALSE, cli.num_colors = 0) ## ----------------------------------------------------------------------------- library(metasnf) dl <- data_list( list(anxiety, "anxiety", "behaviour", "ordinal"), list(depress, "depressed", "behaviour", "ordinal"), uid = "unique_id" ) sc <- snf_config( dl = dl, n_solutions = 5 ) sc$"dist_fns_list" ## ----------------------------------------------------------------------------- sc <- snf_config( dl = dl, n_solutions = 10, cnt_dist_fns = list("standard_norm_euclidean" = sn_euclidean_distance), dsc_dist_fns = list("standard_norm_euclidean" = sn_euclidean_distance), use_default_dist_fns = TRUE ) sc ## ----eval = FALSE------------------------------------------------------------- # sol_df <- batch_snf(dl, sc) ## ----------------------------------------------------------------------------- sc <- snf_config( dl = dl, n_solutions = 10, cnt_dist_fns = list("standard_norm_euclidean" = sn_euclidean_distance), dsc_dist_fns = list("standard_norm_euclidean" = sn_euclidean_distance), ord_dist_fns = list("standard_norm_euclidean" = sn_euclidean_distance), mix_dist_fns = list("standard_norm_euclidean" = gower_distance), use_default_dist_fns = FALSE ) sc ## ----------------------------------------------------------------------------- sc <- snf_config( dl = dl, n_solutions = 10, cnt_dist_fns = list( "standard_norm_euclidean" = sn_euclidean_distance, "some_other_metric" = sn_euclidean_distance ), dsc_dist_fns = list( "standard_norm_euclidean" = sn_euclidean_distance, "some_other_metric" = sn_euclidean_distance ), use_default_dist_fns = TRUE, continuous_distances = 1, discrete_distances = c(2, 3) ) sc ## ----------------------------------------------------------------------------- sc$"weights_matrix" ## ----eval = FALSE------------------------------------------------------------- # # random weights: # sc <- snf_config( # dl = dl, # n_solutions = 10, # weights_fill = "uniform" # or fill = "exponential" # ) # # sc # # # custom weights # fts <- features(dl) # custom_wm <- matrix(nrow = 10, ncol = length(fts), rnorm(10 * length(fts))^2) # colnames(custom_wm) <- fts # custom_wm <- as_weights_matrix(custom_wm) # # sc <- snf_config( # dl = dl, # n_solutions = 10, # wm = custom_wm # ) # # sc ## ----------------------------------------------------------------------------- euclidean_distance ## ----------------------------------------------------------------------------- head(anxiety) ## ----------------------------------------------------------------------------- processed_anxiety <- anxiety |> na.omit() |> # no NAs dplyr::rename("uid" = "unique_id") |> data.frame(row.names = "uid") head(processed_anxiety) ## ----------------------------------------------------------------------------- my_scaled_euclidean <- function(df, weights_row) { # this function won't apply the weights it is given distance_matrix <- df |> stats::dist(method = "euclidean") |> as.matrix() # make sure it's formatted as a matrix distance_matrix <- distance_matrix / max(distance_matrix) return(distance_matrix) } ## ----------------------------------------------------------------------------- my_scaled_euclidean(processed_anxiety)[1:5, 1:5] ## ----------------------------------------------------------------------------- sc <- snf_config( n_solutions = 10, dl = dl, cnt_dist_fns = list( "my_scaled_euclidean" = my_scaled_euclidean ), use_default_dist_fns = TRUE ) sc