Проблема с добавлением модели (МАКСНЕТ) в пастернак, если в ней нет формулы

Проблема:

Всем привет, мне очень интересно научиться работать с parsnipпакет, особенно добавление моих собственных моделей. Я пытаюсь работать с пакетом maxnet, это модель, которую я пытаюсь подражать с помощью Parsnip:

# load the package
library(maxnet)

# get the example dataset
data(bradypus)

# Subset presences
p <- bradypus$presence

# Get climatic variables
data <- bradypus[, -1]

# model the data
mod <- maxnet(p, data, regmult = 1, classes = "lq")

Создано 23.07.2020 с помощью пакета REPEX (v0.3.0)

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

Что я пробовал

Установка нового режима и зависимостей (должно быть хорошо)

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

поэтому я начал с добавления нового режима в модель logistic_regression и зависимости, я думаю, что все это в порядке:

library(tidymodels)
#> ── Attaching packages ──────────────────── tidymodels 0.1.1 ──
#> ✓ broom     0.7.0      ✓ recipes   0.1.13
#> ✓ dials     0.0.8      ✓ rsample   0.0.7 
#> ✓ dplyr     1.0.0      ✓ tibble    3.0.3 
#> ✓ ggplot2   3.3.2      ✓ tidyr     1.1.0 
#> ✓ infer     0.5.3      ✓ tune      0.1.1 
#> ✓ modeldata 0.0.2      ✓ workflows 0.1.2 
#> ✓ parsnip   0.1.2      ✓ yardstick 0.0.7 
#> ✓ purrr     0.3.4
#> ── Conflicts ─────────────────────── tidymodels_conflicts() ──
#> x purrr::discard() masks scales::discard()
#> x dplyr::filter()  masks stats::filter()
#> x dplyr::lag()     masks stats::lag()
#> x recipes::step()  masks stats::step()

## Set new mode
set_model_mode(model = "logistic_reg", mode = "classification")

# Establish de model engines
set_model_engine(
  "logistic_reg",
  mode = "classification",
  eng = "maxnet"
)
# Set package dependencies
set_dependency("logistic_reg", eng = "maxnet", pkg = "maxnet")

Создано 23.07.2020 с помощью пакета REPEX (v0.3.0)

Добавление аргументов (может быть неправильно)

Вот где я начинаю сомневаться, особенно в том, как добавить аргументы p и data:

# set arguments

set_model_arg(
  model = "logistic_reg",
  eng = "maxnet",
  parsnip = "formula",
  original = "f",
  func = list(pkg = "maxnet", fun = "maxnet"),
  has_submodel = FALSE
)

set_model_arg(
  model = "logistic_reg",
  eng = "maxnet",
  parsnip = "penalty",
  original = "regmult",
  func = list(pkg = "maxnet", fun = "maxnet"),
  has_submodel = FALSE
)

set_model_arg(
  model = "logistic_reg",
  eng = "maxnet",
  parsnip = "presences",
  original = "p",
  func = list(pkg = "maxnet", fun = "maxnet"),
  has_submodel = FALSE
)

set_model_arg(
  model = "logistic_reg",
  eng = "maxnet",
  parsnip = "classes",
  original = "classes",
  func = list(pkg = "maxnet", fun = "maxnet"),
  has_submodel = FALSE
)

set_model_arg(
  model = "logistic_reg",
  eng = "maxnet",
  parsnip = "data",
  original = "data",
  func = list(pkg = "maxnet", fun = "maxnet"),
  has_submodel = FALSE
)

Настройка подгонки

Здесь у меня больше сомнений в том, что я сделал лучший выбор, я хотел поставить значение по умолчанию в формулу, но значение по умолчанию определено для других аргументов, поэтому я не мог этого сделать:


## Set the model fit

set_fit(
  model = "logistic_reg",
  eng = "maxnet",
  mode = "classification",
  value = list(
  interface = "data.frame",
  protect = c("data.frame", "data"),
  func = c(pkg = "maxnet", fun = "maxnet"),
  defaults = list()
  )
)

class_info <- 
  list(
    pre = NULL,
    post = NULL,
    func = c(fun = "predict"),
    args =
      list(
        object = quote(object$fit),
        newdata = quote(new_data),
        type = "cloglog"
      )
  )

Настройка прогноза

Установите прогнозы модели (я думаю, это должно быть хорошо)

set_pred(
  model = "logistic_reg",
  eng = "maxnet",
  mode = "classification",
  type = "raw",
  value = class_info
)

И наконец запуск модели


## Specify the model

sdm_spec <- logistic_reg(penalty = 1) %>% 
  set_engine("maxnet")

# get the example dataset
data(bradypus)

# Subset presences
p <- bradypus$presence

# Get climatic variables
data <- bradypus[,-1]

## Fit the model

sdm_fit <- sdm_spec %>%
  fit(p = p, data = bradypus, engine = "maxet", classes = "lq", formula = maxnet::maxnet.formula(p = p, data = data, classes = "lq))

Я получаю ошибку Error: These argument(s) cannot be used to create the data: п, двигатель, классы. Possible arguments are: подмножество, веса, контрасты, смещение '', так что я предполагаю, что неправильно установил аргумент данных.

Любая помощь будет оценена

вот весь репрезент (включая информацию о сеансе):

library(tidymodels)
#> ── Attaching packages ──────────────────── tidymodels 0.1.1 ──
#> ✓ broom     0.7.0      ✓ recipes   0.1.13
#> ✓ dials     0.0.8      ✓ rsample   0.0.7 
#> ✓ dplyr     1.0.0      ✓ tibble    3.0.3 
#> ✓ ggplot2   3.3.2      ✓ tidyr     1.1.0 
#> ✓ infer     0.5.3      ✓ tune      0.1.1 
#> ✓ modeldata 0.0.2      ✓ workflows 0.1.2 
#> ✓ parsnip   0.1.2      ✓ yardstick 0.0.7 
#> ✓ purrr     0.3.4
#> ── Conflicts ─────────────────────── tidymodels_conflicts() ──
#> x purrr::discard() masks scales::discard()
#> x dplyr::filter()  masks stats::filter()
#> x dplyr::lag()     masks stats::lag()
#> x recipes::step()  masks stats::step()
library(maxnet)

## Set new mode

set_model_mode(model = "logistic_reg", mode = "classification")

# Establish the model engines

set_model_engine(
  "logistic_reg",
  mode = "classification",
  eng = "maxnet"
)
# Set package dependencies

set_dependency("logistic_reg", eng = "maxnet", pkg = "maxnet")

# set arguments

set_model_arg(
  model = "logistic_reg",
  eng = "maxnet",
  parsnip = "formula",
  original = "f",
  func = list(pkg = "maxnet", fun = "maxnet"),
  has_submodel = FALSE
)

set_model_arg(
  model = "logistic_reg",
  eng = "maxnet",
  parsnip = "penalty",
  original = "regmult",
  func = list(pkg = "maxnet", fun = "maxnet"),
  has_submodel = FALSE
)

set_model_arg(
  model = "logistic_reg",
  eng = "maxnet",
  parsnip = "presences",
  original = "p",
  func = list(pkg = "maxnet", fun = "maxnet"),
  has_submodel = FALSE
)

set_model_arg(
  model = "logistic_reg",
  eng = "maxnet",
  parsnip = "classes",
  original = "classes",
  func = list(pkg = "maxnet", fun = "maxnet"),
  has_submodel = FALSE
)

set_model_arg(
  model = "logistic_reg",
  eng = "maxnet",
  parsnip = "data",
  original = "data",
  func = list(pkg = "maxnet", fun = "maxnet"),
  has_submodel = FALSE
)

## Set the model fit

set_fit(
  model = "logistic_reg",
  eng = "maxnet",
  mode = "classification",
  value = list(
    interface = "data.frame",
    protect = c("data.frame", "data"),
    func = c(pkg = "maxnet", fun = "maxnet"),
    defaults = list()
  )
)

class_info <-
  list(
    pre = NULL,
    post = NULL,
    func = c(fun = "predict"),
    args =
      list(
        object = quote(object$fit),
        newdata = quote(new_data),
        type = "cloglog"
      )
  )

## Set the model predictions

set_pred(
  model = "logistic_reg",
  eng = "maxnet",
  mode = "classification",
  type = "raw",
  value = class_info
)

## Specify the model

sdm_spec <- logistic_reg(penalty = 1) %>%
  set_engine("maxnet")

# get the example dataset
data(bradypus)

# Subset presences
p <- bradypus$presence

# Get climatic variables
data <- bradypus[, -1]

## Fit the model

sdm_fit <- sdm_spec %>%
  fit(p = p, data = bradypus, engine = "maxet", classes = "lq", formula = maxnet::maxnet.formula(p = p, data = data, classes = "lq"))
#> Error: These argument(s) cannot be used to create the data: `p`, `engine`, `classes`. Possible arguments are: `subset`, `weights`, `contrasts`, `offset`

Создано 23.07.2020 с помощью пакета REPEX (v0.3.0)

devtools::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value                       
#>  version  R version 3.6.3 (2020-02-29)
#>  os       Ubuntu 18.04.4 LTS          
#>  system   x86_64, linux-gnu           
#>  ui       X11                         
#>  language (EN)                        
#>  collate  en_US.UTF-8                 
#>  ctype    en_US.UTF-8                 
#>  tz       America/Santiago            
#>  date     2020-07-23                  
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version    date       lib source                          
#>  assertthat    0.2.1      2019-03-21 [1] CRAN (R 3.6.2)                  
#>  backports     1.1.8      2020-06-17 [1] CRAN (R 3.6.3)                  
#>  broom       * 0.7.0      2020-07-09 [1] CRAN (R 3.6.3)                  
#>  callr         3.4.3      2020-03-28 [1] CRAN (R 3.6.3)                  
#>  class         7.3-17     2020-04-26 [4] CRAN (R 3.6.3)                  
#>  cli           2.0.2      2020-02-28 [1] CRAN (R 3.6.3)                  
#>  codetools     0.2-16     2018-12-24 [4] CRAN (R 3.6.3)                  
#>  colorspace    1.4-1      2019-03-18 [1] CRAN (R 3.6.2)                  
#>  crayon        1.3.4      2017-09-16 [1] CRAN (R 3.6.2)                  
#>  desc          1.2.0      2018-05-01 [1] CRAN (R 3.6.2)                  
#>  devtools      2.3.1      2020-07-21 [1] CRAN (R 3.6.3)                  
#>  dials       * 0.0.8      2020-07-08 [1] CRAN (R 3.6.3)                  
#>  DiceDesign    1.8-1      2019-07-31 [1] CRAN (R 3.6.3)                  
#>  digest        0.6.25     2020-02-23 [1] CRAN (R 3.6.3)                  
#>  dplyr       * 1.0.0      2020-05-29 [1] CRAN (R 3.6.3)                  
#>  ellipsis      0.3.1      2020-05-15 [1] CRAN (R 3.6.3)                  
#>  evaluate      0.14       2019-05-28 [1] CRAN (R 3.6.2)                  
#>  fansi         0.4.1      2020-01-08 [1] CRAN (R 3.6.2)                  
#>  foreach       1.5.0      2020-03-30 [1] CRAN (R 3.6.3)                  
#>  fs            1.4.2      2020-06-30 [1] CRAN (R 3.6.3)                  
#>  furrr         0.1.0      2018-05-16 [1] CRAN (R 3.6.3)                  
#>  future        1.18.0     2020-07-09 [1] CRAN (R 3.6.3)                  
#>  generics      0.0.2      2018-11-29 [1] CRAN (R 3.6.2)                  
#>  ggplot2     * 3.3.2      2020-06-19 [1] CRAN (R 3.6.3)                  
#>  globals       0.12.5     2019-12-07 [1] CRAN (R 3.6.3)                  
#>  glue          1.4.1      2020-05-13 [1] CRAN (R 3.6.3)                  
#>  gower         0.2.1      2019-05-14 [1] CRAN (R 3.6.2)                  
#>  GPfit         1.0-8      2019-02-08 [1] CRAN (R 3.6.3)                  
#>  gtable        0.3.0      2019-03-25 [1] CRAN (R 3.6.2)                  
#>  highr         0.8        2019-03-20 [1] CRAN (R 3.6.2)                  
#>  htmltools     0.5.0      2020-06-16 [1] CRAN (R 3.6.3)                  
#>  infer       * 0.5.3      2020-07-14 [1] CRAN (R 3.6.3)                  
#>  ipred         0.9-9      2019-04-28 [1] CRAN (R 3.6.2)                  
#>  iterators     1.0.12     2019-07-26 [1] CRAN (R 3.6.2)                  
#>  knitr         1.29       2020-06-23 [1] CRAN (R 3.6.3)                  
#>  lattice       0.20-41    2020-04-02 [4] CRAN (R 3.6.3)                  
#>  lava          1.6.7      2020-03-05 [1] CRAN (R 3.6.3)                  
#>  lhs           1.0.2      2020-04-13 [1] CRAN (R 3.6.3)                  
#>  lifecycle     0.2.0      2020-03-06 [1] CRAN (R 3.6.3)                  
#>  listenv       0.8.0      2019-12-05 [1] CRAN (R 3.6.3)                  
#>  lubridate     1.7.9      2020-06-08 [1] CRAN (R 3.6.3)                  
#>  magrittr      1.5        2014-11-22 [1] CRAN (R 3.6.2)                  
#>  MASS          7.3-51.6   2020-04-26 [4] CRAN (R 3.6.3)                  
#>  Matrix        1.2-18     2019-11-27 [4] CRAN (R 3.6.1)                  
#>  maxnet      * 0.1.2      2020-06-03 [1] Github (mrmaxent/maxnet@08310a7)
#>  memoise       1.1.0      2017-04-21 [1] CRAN (R 3.6.2)                  
#>  modeldata   * 0.0.2      2020-06-22 [1] CRAN (R 3.6.3)                  
#>  munsell       0.5.0      2018-06-12 [1] CRAN (R 3.6.2)                  
#>  nnet          7.3-14     2020-04-26 [4] CRAN (R 3.6.3)                  
#>  parsnip     * 0.1.2      2020-07-03 [1] CRAN (R 3.6.3)                  
#>  pillar        1.4.6      2020-07-10 [1] CRAN (R 3.6.3)                  
#>  pkgbuild      1.1.0      2020-07-13 [1] CRAN (R 3.6.3)                  
#>  pkgconfig     2.0.3      2019-09-22 [1] CRAN (R 3.6.2)                  
#>  pkgload       1.1.0      2020-05-29 [1] CRAN (R 3.6.3)                  
#>  plyr          1.8.6      2020-03-03 [1] CRAN (R 3.6.3)                  
#>  prettyunits   1.1.1      2020-01-24 [1] CRAN (R 3.6.2)                  
#>  pROC          1.16.2     2020-03-19 [1] CRAN (R 3.6.3)                  
#>  processx      3.4.3      2020-07-05 [1] CRAN (R 3.6.3)                  
#>  prodlim       2019.11.13 2019-11-17 [1] CRAN (R 3.6.2)                  
#>  ps            1.3.3      2020-05-08 [1] CRAN (R 3.6.3)                  
#>  purrr       * 0.3.4      2020-04-17 [1] CRAN (R 3.6.3)                  
#>  R6            2.4.1      2019-11-12 [1] CRAN (R 3.6.2)                  
#>  Rcpp          1.0.5      2020-07-06 [1] CRAN (R 3.6.3)                  
#>  recipes     * 0.1.13     2020-06-23 [1] CRAN (R 3.6.3)                  
#>  remotes       2.2.0      2020-07-21 [1] CRAN (R 3.6.3)                  
#>  rlang         0.4.7      2020-07-09 [1] CRAN (R 3.6.3)                  
#>  rmarkdown     2.3        2020-06-18 [1] CRAN (R 3.6.3)                  
#>  rpart         4.1-15     2019-04-12 [4] CRAN (R 3.6.1)                  
#>  rprojroot     1.3-2      2018-01-03 [1] CRAN (R 3.6.2)                  
#>  rsample     * 0.0.7      2020-06-04 [1] CRAN (R 3.6.3)                  
#>  rstudioapi    0.11       2020-02-07 [1] CRAN (R 3.6.3)                  
#>  scales      * 1.1.1      2020-05-11 [1] CRAN (R 3.6.3)                  
#>  sessioninfo   1.1.1      2018-11-05 [1] CRAN (R 3.6.2)                  
#>  stringi       1.4.6      2020-02-17 [1] CRAN (R 3.6.3)                  
#>  stringr       1.4.0      2019-02-10 [1] CRAN (R 3.6.2)                  
#>  survival      3.1-12     2020-04-10 [4] CRAN (R 3.6.3)                  
#>  testthat      2.3.2      2020-03-02 [1] CRAN (R 3.6.3)                  
#>  tibble      * 3.0.3      2020-07-10 [1] CRAN (R 3.6.3)                  
#>  tidymodels  * 0.1.1      2020-07-14 [1] CRAN (R 3.6.3)                  
#>  tidyr       * 1.1.0      2020-05-20 [1] CRAN (R 3.6.3)                  
#>  tidyselect    1.1.0      2020-05-11 [1] CRAN (R 3.6.3)                  
#>  timeDate      3043.102   2018-02-21 [1] CRAN (R 3.6.2)                  
#>  tune        * 0.1.1      2020-07-08 [1] CRAN (R 3.6.3)                  
#>  usethis       1.6.1      2020-04-29 [1] CRAN (R 3.6.3)                  
#>  vctrs         0.3.2      2020-07-15 [1] CRAN (R 3.6.3)                  
#>  withr         2.2.0      2020-04-20 [1] CRAN (R 3.6.3)                  
#>  workflows   * 0.1.2      2020-07-07 [1] CRAN (R 3.6.3)                  
#>  xfun          0.15       2020-06-21 [1] CRAN (R 3.6.3)                  
#>  yaml          2.2.1      2020-02-01 [1] CRAN (R 3.6.2)                  
#>  yardstick   * 0.0.7      2020-07-13 [1] CRAN (R 3.6.3)                  
#> 
#> [1] /home/derek/R/x86_64-pc-linux-gnu-library/3.6
#> [2] /usr/local/lib/R/site-library
#> [3] /usr/lib/R/site-library
#> [4] /usr/lib/R/library

0 ответов

Другие вопросы по тегам