## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "#>", fig.width = 6, fig.height = 4) library(simOutrank) ## ----base--------------------------------------------------------------------- traces <- as_traces(illustrative_log, "case_id", "activity", "timestamp") criteria <- list( crit_activity_profile(weight = 0.2, indifference = 0.7, similarity = 0.8, veto = 0.4), crit_edit_distance(weight = 0.2, similarity = 2, indifference = 3, veto = 6), crit_nominal("status", weight = 0.3), crit_nominal("satisfaction", weight = 0.3) ) sim <- outrank_similarity(traces, criteria) run1 <- cluster_traces(sim, k = 4, seed = 42)$memberships ## ----run1-mix----------------------------------------------------------------- tier <- illustrative_log$status[match(names(run1), illustrative_log$case_id)] table(cluster = run1, tier = tier) ## ----run2--------------------------------------------------------------------- sim$S["1", "11"] # a GOLD-NORMAL pair, before sim2 <- cannot_link(sim, "status") sim2$S["1", "11"] # severed to 0 run2 <- cluster_traces(sim2, k = 4, seed = 42)$memberships table(cluster = run2, tier = illustrative_log$status[match(names(run2), illustrative_log$case_id)]) ## ----mustlink----------------------------------------------------------------- sim_ml <- must_link(sim, cbind("24", "25"), reward = 2) # the two outliers sim_ml$S["24", "25"] ## ----trim--------------------------------------------------------------------- trimmed <- trim_outliers(sim, prop = 0.04) # remove floor(0.04 * 25) = 1 case attr(trimmed, "trimmed") ## ----trim-lp------------------------------------------------------------------ identical(attr(trim_outliers(sim, prop = 0.04, method = "lp"), "trimmed"), attr(trim_outliers(sim, prop = 0.04, method = "greedy"), "trimmed")) ## ----trim-cluster------------------------------------------------------------- run3 <- cluster_traces(trimmed, k = 4, seed = 42)$memberships split(names(run3), run3) ## ----compose------------------------------------------------------------------ final <- cluster_traces(cannot_link(trimmed, "status"), k = 4, seed = 42) if (requireNamespace("clValid", quietly = TRUE)) validate_clusters(final)