## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  message = FALSE,
  eval = identical(Sys.getenv("IN_PKGDOWN"), "true") ||
    identical(Sys.getenv("CUDA_ML_GPU_VIGNETTES"), "true")
)

## ----random-forest-specification----------------------------------------------
# library(cuda.ml)
# library(parsnip)
# 
# forest_spec <- rand_forest(
#   mode = "classification",
#   mtry = 2,
#   trees = 500,
#   min_n = 5
# ) |>
#   set_engine(
#     "cuda.ml",
#     max_depth = 20,
#     n_bins = 256
#   )
# 
# set.seed(1)
# forest_fit <- fit(forest_spec, class ~ ., data = modeldata::hpc_data)
# 
# class_predictions <- predict(forest_fit, modeldata::hpc_data, type = "class")
# probabilities <- predict(forest_fit, modeldata::hpc_data, type = "prob")

## ----recipe-example-----------------------------------------------------------
# library(cuda.ml)
# library(parsnip)
# library(recipes)
# library(workflows)
# 
# set.seed(1)
# training_rows <- sample(
#   seq_len(nrow(modeldata::two_class_dat)),
#   floor(0.8 * nrow(modeldata::two_class_dat))
# )
# training_data <- modeldata::two_class_dat[training_rows, ]
# testing_data <- modeldata::two_class_dat[-training_rows, ]
# 
# classifier_recipe <- recipe(Class ~ ., data = training_data) |>
#   step_normalize(all_numeric_predictors())
# 
# knn_spec <- nearest_neighbor(
#   mode = "classification",
#   neighbors = 5,
#   dist_power = 2
# ) |>
#   set_engine(
#     "cuda.ml",
#     algo = "brute",
#     metric = "euclidean"
#   )
# 
# knn_workflow <- workflow() |>
#   add_recipe(classifier_recipe) |>
#   add_model(knn_spec)
# 
# knn_fit <- fit(knn_workflow, data = training_data)
# 
# results <- cbind(
#   truth = testing_data$Class,
#   predict(knn_fit, testing_data, type = "class"),
#   predict(knn_fit, testing_data, type = "prob")
# )
# head(results)

## ----direct-api---------------------------------------------------------------
# direct_fit <- cuda_ml_svm(
#   Class ~ .,
#   data = modeldata::two_class_dat,
#   kernel = "tanh",
#   cost = 2,
#   gamma = 0.1,
#   coef0 = 0
# )
# 
# direct_predictors <- subset(modeldata::two_class_dat, select = -Class)
# direct_predictions <- predict(direct_fit, direct_predictors)

