1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
context('classDist')
test_that("errors working", {
trainSet = 1:3
expect_error(
distData <- classDist(
iris[trainSet, 1:4],
iris$Species[trainSet]
)
,"more rows than columns"
)
})
test_that("Object matches expectations - factor y", {
trainSet <- sample(1:150, 100)
x = iris[trainSet, 1:4]
y = iris$Species[trainSet]
distData <- classDist(x, y, pca = FALSE)
# values
expect_true(length(distData$values) == length(levels(y)))
# classes
expect_true(all(distData$classes %in% levels(y)))
## n
expect_true(all(table(y) == distData$n))
## cuts
expect_null(distData$cuts)
## p
expect_true(distData$p == ncol(x))
## PCA - FALSE
expect_null(distData$pca)
## PCA - TRUE
distData2 <- classDist(x, y, pca = TRUE)
PCA <- prcomp(x, center = TRUE, scale = TRUE, tol = sqrt(.Machine$double.eps))
expect_true(all(distData2$pca$sdev == PCA$sdev))
expect_true(all(distData2$pca$rotation == PCA$rotation))
})
test_that("Object matches expectations - numeric y", {
trainSet <- sample(1:150, 100)
x = iris[trainSet, 1:4]
y = as.numeric(iris$Species[trainSet])
groups = 4
distData <- classDist(x, y, pca = FALSE, groups = groups)
# values
expect_true(length(distData$values) == length(unique(y)) - 1)
# classes
expect_true(all(distData$classes %in% as.character(seq(0, 100, 25))[2:5]))
## p
expect_true(distData$p == ncol(x))
## PCA - FALSE
expect_null(distData$pca)
## PCA - TRUE
distData2 <- classDist(x, y, pca = TRUE)
PCA <- prcomp(x, center = TRUE, scale = TRUE, tol = sqrt(.Machine$double.eps))
expect_true(all(distData2$pca$sdev == PCA$sdev))
expect_true(all(distData2$pca$rotation == PCA$rotation))
})
test_that("predictions", {
trainSet <- sample(1:150, 100)
x = iris[trainSet, 1:4]
y = iris$Species[trainSet]
groups = 4
distData <- classDist(x, y, pca = FALSE, groups = groups)
distData2 <- classDist(x, y, pca = TRUE, groups = groups)
## PCA and non-PCA preds match
expect_equal(predict(distData, x), predict(distData2, x), tolerance = .0001)
})
|