mlr3 — Как изменить resample_results и выполнить pca

#r #pca #r6 #mlr3 #autoplot

Вопрос:

Я хочу визуализировать результат классификатора, как показано в этом блоге. Однако в этих примерах они используют только двумерные данные. Но я хотел бы визуализировать данные более высокого измерения. Одной из основных процедур было бы применить PCA к пространству объектов и построить только первые два компонента PCA.

Было бы здорово просто изменить класс rr resample_result R6. Но я не могу узнать, как получить доступ к этим данным.

Любая помощь была бы очень признательна. Заранее спасибо.

 library("mlr3verse")
library("mlr3viz")

learners = list(
  # k-nearest neighbours classifier
  lrn("classif.kknn", id = "kkn", predict_type = "prob", k = 3),
  
  # linear svm
  lrn("classif.svm", id = "lin. svm", predict_type = "prob", kernel = "linear")
)

design = benchmark_grid(
  tasks = tsk("iris"),
  learners = learners,
  resamplings = rsmp("holdout")
)

bmr = benchmark(design, store_models = TRUE)

perf = bmr$aggregate(msr("classif.acc"))[, c("task_id", "learner_id", "classif.acc")]
perf


n = bmr$n_resample_results
plots = vector("list", n)
for (i in seq_len(n)) {
  rr = bmr$resample_result(i)
  
  rr.pred <- as.data.table(as.data.table(rr)$prediction[[1]])
  ## doing pca ... with something like %>>% po("pca")
  plots[[i]] = autoplot(rr, type = "prediction")
  ## Error: Plot learner prediction only works for tasks with two features for classification! 
}
 

Комментарии:

1. Совет: Задавайте только один вопрос за раз. Если вы хотите выполнить PCA с помощью конвейера, посмотрите на линии mlr3pip в книге mlr3 и как работают «Обучающие программы».