relabel_class {cola} | R Documentation |
Relabel class labels according to the reference labels
relabel_class(class, ref, full_set = union(class, ref), return_map = TRUE)
class |
A vector of class labels. |
ref |
A vector of reference labels. |
full_set |
The full set of labels. |
return_map |
Whether return the mapping or the adjusted labels. |
In partitions, the exact value of the class label is not of importance. E.g. for two partitions
a, a, a, b, b, b, b
and b, b, b, a, a, a, a
, they are the same partitions although the labels
of a
and b
are switched in the two partitions. Here relabel_class
function switches the labels
in class
vector according to the labels in ref
vector to maximize sum(class == ref)
.
Mathematically, this is called linear sum assignment problem and it is solved by solve_LSAP
.
A named vector where names correspond to the labels in class
and values correspond to ref
,
which means map = relabel_class(class, ref); map[class]
returns the relabelled labels.
The returned object attaches a data frame with three columns:
original labels. in class
adjusted labels. according to ref
reference labels. in ref
If return_map
in the relabel_class
is set to FALSE
, the function simply returns
a vector of adjusted class labels.
If the function returns the mapping vector (when return_map = TRUE
), the mapping variable
is always character, which means, if your class
and ref
are numeric, you need to convert
them back to numeric explicitely. If return_map = FALSE
, the returned relabelled vector has
the same mode as class
.
class = c(rep("a", 10), rep("b", 3)) ref = c(rep("b", 4), rep("a", 9)) relabel_class(class, ref) relabel_class(class, ref, return_map = FALSE) # if class and ref are from completely different sets class = c(rep("A", 10), rep("B", 3)) relabel_class(class, ref) # class labels are numeric class = c(rep(1, 10), rep(2, 3)) ref = c(rep(2, 4), rep(1, 9)) relabel_class(class, ref) relabel_class(class, ref, return_map = FALSE)