set.seed(8)
n_instances <- 10
n_samples <- 20
y <- rep(c(1, -1), each = n_samples * n_instances / 2)
instances <- as.character(rep(1:n_instances, each = n_samples))
x <- data.frame(x1 = rnorm(length(y), mean = 1*(y==1)),
x2 = rnorm(length(y), mean = 2*(y==1)),
x3 = rnorm(length(y), mean = 3*(y==1)))
mdl <- smm(x, y, instances, control = list(sigma = 1/3))
# instance level predictions (training data)
suppressWarnings(library(dplyr))
data.frame(instance_name = instances, y = y, x) %>%
bind_cols(predict(mdl, type = "raw", new_data = x, new_instances = instances)) %>%
bind_cols(predict(mdl, type = "class", new_data = x, new_instances = instances)) %>%
distinct(instance_name, y, .pred, .pred_class)
# test data
new_inst <- rep(c("11", "12"), each = 30)
new_y <- rep(c(1, -1), each = 30)
new_x <- data.frame(x1 = rnorm(length(new_inst), mean = 1*(new_inst=="11")),
x2 = rnorm(length(new_inst), mean = 2*(new_inst=="11")),
x3 = rnorm(length(new_inst), mean = 3*(new_inst=="11")))
# instance level predictions (test data)
data.frame(instance_name = new_inst, y = new_y, new_x) %>%
bind_cols(predict(mdl, type = "raw", new_data = new_x, new_instances = new_inst)) %>%
bind_cols(predict(mdl, type = "class", new_data = new_x, new_instances = new_inst)) %>%
distinct(instance_name, y, .pred, .pred_class)
Run the code above in your browser using DataLab