Nothing
library(testthat)
library(metaSVR)
# 1. svrHybrid Function Testing without Normalization
test_that("svrHybrid returns expected structure without normalization", {
x <- matrix(runif(50*8), ncol = 8)
y <- runif(50)
x_train <- x[1:35, ]
y_train <- y[1:35]
x_test <- x[36:50, ]
y_test <- y[36:50]
result <- svrHybrid(x_train, y_train, x_test, y_test,
optimizer = "CBO", kernel = "radial",
objective = "SMAPE",
is.y.normalize = FALSE,
max_iter = 100, N = 10)
expect_type(result, "list")
expect_true(all(c("best_params", "total_iter", "model", "time") %in% names(result)))
expect_s3_class(result$model, "svm")
expect_equal(ncol(result$model$SV), ncol(x_train)) # memastikan model SVR terbentuk
})
# 2. svrHybrid Function Testing with Normalization
test_that("svrHybrid returns expected structure with normalization", {
x <- matrix(runif(50*8), ncol = 8)
y <- runif(50)
x_norm <- normalize(x)
y_norm <- normalize(y)
min_y <- min(y)
max_y <- max(y)
x_train <- x_norm[1:35, ]
y_train <- y_norm[1:35]
x_test <- x_norm[36:50, ]
y_test <- y_norm[36:50]
result <- svrHybrid(x_train, y_train, x_test, y_test,
optimizer = "CBO", kernel = "radial",
objective = "SMAPE",
is.y.normalize = TRUE,
min_y, max_y,
max_iter = 100, N = 10)
expect_type(result, "list")
expect_true(all(c("best_params", "total_iter", "model", "time") %in% names(result)))
expect_s3_class(result$model, "svm")
expect_equal(ncol(result$model$SV), ncol(x_train)) # memastikan model SVR terbentuk
})
# 3. x_train Input in svrHybrid Validation
test_that("Input x_train as a factor in svrHybrid is invalid", {
set.seed(42)
n <- 20
x_train_bad <- data.frame(
cat_var = factor(sample(c("A","B","C"), n, replace = TRUE)),
num_var = runif(n)
)
y_train_bad <- rnorm(n)
x_test_bad <- x_train_bad
y_test_bad <- y_train_bad
expect_error(
svrHybrid(
x_train = x_train_bad,
y_train = y_train_bad,
x_test = x_test_bad,
y_test = y_test_bad,
optimizer = "AO",
kernel = "radial",
objective = "RMSE",
is.y.normalize = FALSE
)
)
})
# 4. x_test Input in svrHybrid Validation
test_that("Input x_test as a factor in svrHybrid is invalid", {
set.seed(42)
n <- 20
x_train_good <- data.frame(
var1 = runif(n),
var2 = rnorm(n)
)
y_train_good <- rnorm(n)
x_test_bad <- data.frame(
cat_var = factor(sample(c("A", "B", "C"), n, replace = TRUE)),
num_var = runif(n)
)
y_test_bad <- rnorm(n)
expect_error(
svrHybrid(
x_train = x_train_good,
y_train = y_train_good,
x_test = x_test_bad,
y_test = y_test_bad,
optimizer = "AO",
kernel = "radial",
objective = "RMSE",
is.y.normalize = FALSE
)
)
})
# 5. y_train Input in svrHybrid Validation
test_that("Input y_train in svrHybrid must be numeric", {
set.seed(123)
n <- 20
x_train_good <- data.frame(
var1 = runif(n),
var2 = rnorm(n)
)
x_test_good <- data.frame(
var1 = runif(n),
var2 = rnorm(n)
)
y_train_bad <- factor(sample(c("low", "medium", "high"), n, replace = TRUE))
y_test_good <- rnorm(n)
expect_error(
svrHybrid(
x_train = x_train_good,
y_train = y_train_bad,
x_test = x_test_good,
y_test = y_test_good,
optimizer = "AO",
kernel = "radial",
objective = "RMSE",
is.y.normalize = FALSE
)
)
})
# 6. y_test Input in svrHybrid Validation
test_that("Input y_test in svrHybrid must be numeric", {
set.seed(123)
n <- 20
x_train_good <- data.frame(
var1 = runif(n),
var2 = rnorm(n)
)
x_test_good <- data.frame(
var1 = runif(n),
var2 = rnorm(n)
)
y_test_bad <- factor(sample(c("low", "medium", "high"), n, replace = TRUE))
y_train_good <- rnorm(n)
expect_error(
svrHybrid(
x_train = x_train_good,
y_train = y_train_good,
x_test = x_test_good,
y_test = y_test_bad,
optimizer = "AO",
kernel = "radial",
objective = "RMSE",
is.y.normalize = FALSE
)
)
})
# 7. Input Data Training Length Validation
test_that("The lenght on x_train and y_train input in svrHybrid has to be SAME", {
x_train_bad <- data.frame(
var1 = runif(20),
var2 = rnorm(20)
)
y_train_bad <- rnorm(15)
x_test_good <- data.frame(
var1 = runif(10),
var2 = rnorm(10)
)
y_test_good <- rnorm(10)
expect_error(
svrHybrid(
x_train = x_train_bad,
y_train = y_train_bad,
x_test = x_test_good,
y_test = y_test_good,
optimizer = "AO",
kernel = "radial",
objective = "RMSE",
is.y.normalize = FALSE
)
)
})
# 8. Input Data Testing Length Validation
test_that("The lenght on x_test and y_test input in svrHybrid has to be SAME", {
x_train_good <- data.frame(
var1 = runif(20),
var2 = rnorm(20)
)
y_train_good <- rnorm(20)
x_test_bad <- data.frame(
var1 = runif(8),
var2 = rnorm(8)
)
y_test_bad <- rnorm(5)
expect_error(
svrHybrid(
x_train = x_train_good,
y_train = y_train_good,
x_test = x_test_bad,
y_test = y_test_bad,
optimizer = "AO",
kernel = "radial",
objective = "RMSE",
is.y.normalize = FALSE
)
)
})
# 9. Input x_train in Dataframe Validation
test_that("x_train input in svrHybrid must be matrix or dataframe", {
y_train <- rnorm(10)
y_test <- rnorm(10)
x_train_bad <- list(a = 1:10, b = 11:20)
x_test_good <- matrix(rnorm(20), ncol = 2)
expect_error(
svrHybrid(
x_train = x_train_bad,
y_train = y_train,
x_test = x_test_good,
y_test = y_test,
optimizer = "AO",
kernel = "radial",
objective = "RMSE",
is.y.normalize = FALSE
)
)
})
# 10. Input x_test in Dataframe Validation
test_that("x_test input in svrHybrid must be matrix or dataframe", {
y_train <- rnorm(10)
y_test <- rnorm(10)
x_test_bad <- list(a = 1:10, b = 11:20)
x_train_good <- matrix(rnorm(20), ncol = 2)
expect_error(
svrHybrid(
x_train = x_train_good,
y_train = y_train,
x_test = x_test_bad,
y_test = y_test,
optimizer = "AO",
kernel = "radial",
objective = "RMSE",
is.y.normalize = FALSE
)
)
})
# 11. Input Kernel in svrHybrid Testing
test_that("Incorrect kernel selection in svrHybrid", {
set.seed(123)
n_train <- 40
n_test <- 10
n_feat <- 3
x_train <- data.frame(
x1 = runif(n_train),
x2 = rnorm(n_train),
x3 = rnorm(n_train, mean = 5)
)
x_test <- data.frame(
x1 = runif(n_test),
x2 = rnorm(n_test),
x3 = rnorm(n_test, mean = 5)
)
y_train <- x_train$x1 * 2 + x_train$x2 - x_train$x3 + rnorm(n_train)
y_test <- x_test$x1 * 2 + x_test$x2 - x_test$x3 + rnorm(n_test)
expect_error(
svrHybrid(
x_train = x_train,
y_train = y_train,
x_test = x_test,
y_test = y_test,
optimizer = "AO",
kernel = "radialo",
objective = "RMSE",
is.y.normalize = FALSE
)
)
})
# 12. Input Optimizer in svrHybrid Testing
test_that("Incorrect optimizer selection in svrHybrid", {
set.seed(123)
n_train <- 40
n_test <- 10
n_feat <- 3
x_train <- data.frame(
x1 = runif(n_train),
x2 = rnorm(n_train),
x3 = rnorm(n_train, mean = 5)
)
x_test <- data.frame(
x1 = runif(n_test),
x2 = rnorm(n_test),
x3 = rnorm(n_test, mean = 5)
)
y_train <- x_train$x1 * 2 + x_train$x2 - x_train$x3 + rnorm(n_train)
y_test <- x_test$x1 * 2 + x_test$x2 - x_test$x3 + rnorm(n_test)
expect_error(
svrHybrid(
x_train = x_train,
y_train = y_train,
x_test = x_test,
y_test = y_test,
optimizer = "AOB",
kernel = "radial",
objective = "RMSE",
is.y.normalize = FALSE
)
)
})
# 13. Input Objective in svrHybrid Testing
test_that("Incorrect objective selection in svrHybrid", {
set.seed(123)
n_train <- 40
n_test <- 10
n_feat <- 3
x_train <- data.frame(
x1 = runif(n_train),
x2 = rnorm(n_train),
x3 = rnorm(n_train, mean = 5)
)
x_test <- data.frame(
x1 = runif(n_test),
x2 = rnorm(n_test),
x3 = rnorm(n_test, mean = 5)
)
y_train <- x_train$x1 * 2 + x_train$x2 - x_train$x3 + rnorm(n_train)
y_test <- x_test$x1 * 2 + x_test$x2 - x_test$x3 + rnorm(n_test)
expect_error(
svrHybrid(
x_train = x_train,
y_train = y_train,
x_test = x_test,
y_test = y_test,
optimizer = "AO",
kernel = "radial",
objective = "RMSEP",
is.y.normalize = FALSE
)
)
})
# 14. Validation for Input Maximum Iteration in svrHybrid Testing
test_that("Incorrect maximum iteration input on svrHybrid, must be positive", {
set.seed(123)
n_train <- 40
n_test <- 10
n_feat <- 3
x_train <- data.frame(
x1 = runif(n_train),
x2 = rnorm(n_train),
x3 = rnorm(n_train, mean = 5)
)
x_test <- data.frame(
x1 = runif(n_test),
x2 = rnorm(n_test),
x3 = rnorm(n_test, mean = 5)
)
y_train <- x_train$x1 * 2 + x_train$x2 - x_train$x3 + rnorm(n_train)
y_test <- x_test$x1 * 2 + x_test$x2 - x_test$x3 + rnorm(n_test)
expect_error(
svrHybrid(
x_train = x_train,
y_train = y_train,
x_test = x_test,
y_test = y_test,
optimizer = "AO",
kernel = "radial",
objective = "RMSE",
is.y.normalize = FALSE,
max_iter = 0,
N = 10
)
)
})
# 15. Validation for Input Population (N) in svrHybrid Testing
test_that("Incorrect population (N) input on svrHybrid, must be positive", {
set.seed(123)
n_train <- 40
n_test <- 10
n_feat <- 3
x_train <- data.frame(
x1 = runif(n_train),
x2 = rnorm(n_train),
x3 = rnorm(n_train, mean = 5)
)
x_test <- data.frame(
x1 = runif(n_test),
x2 = rnorm(n_test),
x3 = rnorm(n_test, mean = 5)
)
y_train <- x_train$x1 * 2 + x_train$x2 - x_train$x3 + rnorm(n_train)
y_test <- x_test$x1 * 2 + x_test$x2 - x_test$x3 + rnorm(n_test)
expect_error(
svrHybrid(
x_train = x_train,
y_train = y_train,
x_test = x_test,
y_test = y_test,
optimizer = "AO",
kernel = "radial",
objective = "RMSE",
is.y.normalize = FALSE,
max_iter = 100,
N = -2
)
)
})
# 16. Validation Testing for Normalization
set.seed(123)
n_train <- 40
n_test <- 10
n_feat <- 3
x_train <- data.frame(
x1 = runif(n_train),
x2 = rnorm(n_train),
x3 = rnorm(n_train, mean = 5)
)
x_test <- data.frame(
x1 = runif(n_test),
x2 = rnorm(n_test),
x3 = rnorm(n_test, mean = 5)
)
y_train <- x_train$x1 * 2 + x_train$x2 - x_train$x3 + rnorm(n_train)
y_test <- x_test$x1 * 2 + x_test$x2 - x_test$x3 + rnorm(n_test)
test_that("svrHybrid errors when is.y.normalize=TRUE but min.y/max.y missing", {
expect_error(
svrHybrid(x_train = x_train, y_train = y_train,
x_test = x_test, y_test = y_test,
is.y.normalize = TRUE,
# min.y & max.y tidak diberikan
optimizer = "AO", kernel = "radial"),
"When is.y.normalize = TRUE, both 'min.y' and 'max.y' must be provided\\."
)
})
test_that("svrHybrid errors when min.y or max.y not numeric scalar", {
expect_error(
svrHybrid(x_train = x_train, y_train = y_train,
x_test = x_test, y_test = y_test,
is.y.normalize = TRUE,
min.y = c(0,1), max.y = 1,
optimizer = "AO", kernel = "radial"),
"'min.y' must be a single numeric value\\."
)
expect_error(
svrHybrid(x_train = x_train, y_train = y_train,
x_test = x_test, y_test = y_test,
is.y.normalize = TRUE,
min.y = 0, max.y = "high",
optimizer = "AO", kernel = "radial"),
"'max.y' must be a single numeric value\\."
)
})
test_that("svrHybrid errors when min.y >= max.y", {
expect_error(
svrHybrid(x_train = x_train, y_train = y_train,
x_test = x_test, y_test = y_test,
is.y.normalize = TRUE,
min.y = 5, max.y = 5,
optimizer = "AO", kernel = "radial"),
"'min.y' must be strictly less than 'max.y'\\."
)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.