Выполнение мультикласса PLS-DA с пакетом млр в R - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу использовать дискриминантный анализ частичных наименьших квадратов (PLS-DA), чтобы решить проблему классификации, где необходимо предсказать несколько классов.Я знаю, что PLS-DA не ограничивается проблемой двух классов, и я полагаю, что использование plsda из пакета Caret может решить эту проблему, но когда я пытаюсь построить модель PLS-DA в пакете mlr, я получаю сообщение об ошибкемоя задача - «проблема мультикласса, но ученик classif.plsdaCaret не поддерживает это!»

Возможно ли построить мультиклассовую модель PLS-DA, используя mlr, и я просто использую не того ученика??Вот воспроизводимый пример:

# LOAD PACKAGES ----
#install.packages("BiocManager")
#BiocManager::install("mixOmics")
library(mlr)
library(tidyverse)
library(mixOmics)

# LOAD IN DATA ----
data(liver.toxicity)
liverTib <- as.tibble(cbind(liver.toxicity$treatment$Treatment.Group,
                            liver.toxicity$gene)
)
names(liverTib)[1] <- "Treatment"

liverTib

# MAKE TASK, LEARNER AND ATTEMPT TO BULD MODEL
liverTask <- makeClassifTask(data = liverTib, target = "Treatment")
plsda <- makeLearner("classif.plsdaCaret")
liverModel <- train(plsda, liverTask)

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

В разрабатываемой версии mlr (v2.14.0.9000) включена мультиклассовая классификация по модели plsdaCaret.Вы можете скачать пакет с GitHub, используя этот код:

install.packages("remotes")
remotes::install_github("mlr-org/mlr")

Пример PLS-DA с 3 классами:

library(mlr)
#> Loading required package: ParamHelpers
tsk  <- makeClassifTask("iris", iris, target = "Species")
lrn1 <- makeLearner("classif.plsdaCaret")
mod1 <- train(lrn1, tsk)
prd  <- predict(mod1, tsk)
calculateConfusionMatrix(prd)
#>             predicted
#> true         setosa versicolor virginica -err.-
#>   setosa         50          0         0      0
#>   versicolor      0         31        19     19
#>   virginica       0          8        42      8
#>   -err.-          0          8        19     27

Создан 2019-07-18 с помощью представьте пакет (v0.3.0)

( Этот запрос на получение ответа решил проблему.)

0 голосов
/ 02 января 2019

Текущая реализация не поддерживает мультикласс, см. Здесь: https://mlr.mlr -org.com / articles / tutorial / integrated_learners.html

Вы можете изменить код для ученика (https://github.com/mlr-org/mlr/blob/master/R/RLearner_classif_plsdaCaret.R), чтобы сделать мультикласс возможным (см. Здесь инструкцию: https://mlr.mlr -org.com / articles / tutorial / create_learner.html ).

...