1

部分最小二乗判別分析 (PLS-DA) を使用して、複数のクラスを予測する分類問題を解決したいと考えています。PLS-DA が 2 つのクラスの問題に限定されないことは知っています。Caret パッケージの plsda を使用すると、これを問題なく処理できると思いますが、mlr パッケージで PLS-DA モデルを構築しようとすると、エラーが表示されます。私のタスクは「マルチクラスの問題ですが、学習者「classif.plsdaCaret」はそれをサポートしていません!」

mlr を使用してマルチクラス PLS-DA モデルを構築することは可能ですか? 再現可能な例を次に示します。

# 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)
4

2 に答える 2

1

mlr(v2.14.0.9000)の開発版では、plsdaCaretモデルによるマルチクラス分類が有効になっています。次のコードを使用して、GitHub からパッケージをダウンロードできます。

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

3 つのクラスを持つ PLS-DA の例:

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

reprex パッケージ(v0.3.0)により 2019-07-18 に作成

(このプルリクエストは問題を解決しました。)

于 2019-07-16T08:44:42.403 に答える