context("Supervised")
# categorical y
res <- umap(iris10,
n_neighbors = 4, n_epochs = 2, learning_rate = 0.5, min_dist = 0.001,
init = "rand", verbose = FALSE, n_threads = 1, y = ycat
)
expect_ok_matrix(res)
# numeric y
res <- umap(iris10,
n_neighbors = 4, n_epochs = 2, learning_rate = 0.5, min_dist = 0.001,
init = "rand", verbose = FALSE, n_threads = 1, y = ynum
)
expect_ok_matrix(res)
# mixed categorical and numeric
res <- umap(iris10,
n_neighbors = 4, n_epochs = 2, learning_rate = 0.5, min_dist = 0.001,
init = "rand", verbose = FALSE, n_threads = 1,
y = data.frame(ycat, ynum)
)
expect_ok_matrix(res)
# multiple categorical y
res <- umap(iris10,
n_neighbors = 4, n_epochs = 2, learning_rate = 0.5, min_dist = 0.001,
init = "rand", verbose = FALSE, n_threads = 1,
y = data.frame(ycat, ycat2)
)
expect_ok_matrix(res)
# multiple numeric y
res <- umap(iris10,
n_neighbors = 4, n_epochs = 2, learning_rate = 0.5, min_dist = 0.001,
init = "rand", verbose = FALSE, n_threads = 1,
y = data.frame(ynum, ynum2)
)
expect_ok_matrix(res)
# multiple numeric and categorical
res <- umap(iris10,
n_neighbors = 4, n_epochs = 2, learning_rate = 0.5, min_dist = 0.001,
init = "rand", verbose = FALSE, n_threads = 1,
y = data.frame(ynum, ynum2, ycat, ycat2)
)
expect_ok_matrix(res)
# multiple numeric with different metrics and categorical
set.seed(1337)
res <- umap(iris10,
n_neighbors = 4, n_epochs = 2, learning_rate = 0.5, min_dist = 0.001,
init = "rand", verbose = FALSE, n_threads = 1,
target_metric = list("euclidean" = 1, "cosine" = 2),
target_weight = 0.5,
y = data.frame(ynum, ynum2, ycat, ycat2)
)
expect_ok_matrix(res)
sm <- Matrix::drop0(matrix(c(
-0.9183907, -1.4071020, 0.70400164,
0.4990913, -0.1631884, -0.03232201,
0.2156861, 0.4341653, 0.92592670
), byrow = TRUE, nrow = 3))
# make matrix positive and symmetric like typical UMAP fuzzy graph
sms <- (Matrix::t(sm) + sm) ^ 2
expected <- matrix(c(1,
1, 0.43551409, 1, 0.24170431, 0.23371835,
0.43551409, 0.23371835, 1
), byrow = TRUE, nrow = 3)
# checked against python version
expect_equal(as.matrix(reset_local_connectivity(sms)), expected,
tol = 1e-7,
check.attributes = FALSE
)
# tested on a modified python version with the effect n_neighbors changed
expected_reset_local_metric <-
matrix(c(1, 1, 0.5972302,
1, 0.44010492, 0.43783589,
0.5972302, 0.43783589, 1
), byrow = TRUE, nrow = 3)
expect_equal(
as.matrix(
reset_local_connectivity(sms, reset_local_metric = TRUE, num_local_metric_neighbors = 3)),
expected_reset_local_metric,
tol = 1e-7,
check.attributes = FALSE
)
expect_equal(
as.matrix(
reset_local_connectivity(sms, reset_local_metric = TRUE, num_local_metric_neighbors = 3, n_threads = 2)),
expected_reset_local_metric,
tol = 1e-7,
check.attributes = FALSE
)
sparr <- new("dgCMatrix",
i = c(0L, 2L, 0L, 1L, 2L, 0L, 1L),
p = c(0L, 2L, 5L, 7L),
Dim = c(3L, 3L), Dimnames = list(NULL, NULL),
x = c(
0.918390745913514, 0.215686070576616, 1.40710203887692,
0.163188411813119, 0.434165332563817, 0.704001636268765,
0.0323220081795518
), factors = list()
)
sparr2 <- new("dgCMatrix",
i = c(0L, 1L, 2L, 1L, 2L, 0L, 1L),
p = c(0L, 3L, 5L, 7L),
Dim = c(3L, 3L), Dimnames = list(NULL, NULL),
x = c(
1.68463092, 2.91620546, 0.26469792,
1.08820257, 0.96444675, 1.46399222, 2.72643589
),
factors = list()
)
# Numbers taken from Python implementation
int09 <- general_simplicial_set_intersection(sparr, sparr2, 0.9)
res09 <- matrix(c(
1.66877087146, 0.137467853888, 1.40799953091,
1.84399206494, 0.889673751622, 1.86201852389,
0.223218799442, 0.879058365893, 0.000000
),
nrow = 3, byrow = TRUE
)
expect_equal(as.matrix(int09), res09, check.attributes = FALSE, tol = 1e-6)
int01 <- general_simplicial_set_intersection(sparr, sparr2, 0.1)
res01 <- matrix(c(
0.97318335824, 1.12392924757, 0.734457833761,
0.0182018202924, 0.164728272878, 0.0361324854953,
0.186072986202, 0.432422466467, 0.000000
),
nrow = 3, byrow = TRUE
)
expect_equal(as.matrix(int01), res01, check.attributes = FALSE, tol = 1e-6)
sp34 <- Matrix::drop0(matrix(nrow = 3, byrow = TRUE, c(
0, 0.7403984, 0, 0.6574427,
0, 0, 0.9472488, 0,
0, 0.3039677, 0.2868714, 0
)))
expect_equal(colMaxs(sp34), c(0, 0.7403984, 0.9472488, 0.6574427))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.