File: test_classDist.R

package info (click to toggle)
r-cran-caret 7.0-1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 4,036 kB
  • sloc: ansic: 210; sh: 10; makefile: 2
file content (99 lines) | stat: -rw-r--r-- 2,093 bytes parent folder | download | duplicates (4)
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)


})