Точность по группам для пригодного ИДД, созданного с использованием функции каретки - PullRequest
0 голосов
/ 29 октября 2018

Я создал прогностическую модель, используя линейный дискриминантный анализ (LDA) и набор данных с четырьмя группами: «Восхождение», «Наземный», «Усаживание» и «Хищный». Когда я использую функцию lda () MASS, я знаю, как использовать перекрестную проверку, чтобы найти процент, точно прогнозируемый для каждой группы

ld=lda(extant.ung,extant.group,CV=TRUE)
ct<-table(extant.group,ld$class)
diag(prop.table(ct,1))

где extant.ung - количественные данные, а extant.group - переменная группировки. Код выше возвращает

Climbing    Ground  Perching Predatory 
0.7777778 0.8571429 0.6206897 0.9090909

Тем не менее, я бы предпочел использовать методы повторной выборки при начальной загрузке из пакета caret, чтобы найти точность по группам. У меня есть

control <- trainControl(method="LGOCV",number=2000)
metric<-"Accuracy"
set.seed(2000)
fit.lda1 <- train(extant.ung,extant.group,method="lda",metric=metric,trControl=control)
fit.lda1

Так что я знаю, как найти общую точность и каппу с помощью приведенного выше кода, но я не могу понять, как найти, какой процент был правильно спрогнозирован для каждой группы с помощью этого метода. Пожалуйста помоги. Спасибо.

1 Ответ

0 голосов
/ 30 октября 2018

Функция confusionMatrix может быть тем, что вы ищете.

Исходный пример из вопроса с данными радужной оболочки

library(MASS)
library(caret)
predictors <- iris[1:4]
response <- iris$Species

ld <- lda(predictors, response, CV=TRUE)
ct <- table(response, ld$class)
diag(prop.table(ct,1))

# setosa versicolor  virginica 
# 1.00       0.96       0.98 

Применение каретки :: confusionMatrix ()

control <- trainControl(method="LGOCV",number=20)
metric<-"Accuracy"
set.seed(2000)
fit.lda1 <- train(predictors,response,method="lda",metric=metric,trControl=control)
confusionMatrix(fit.lda1)

# Repeated Train/Test Splits Estimated (20 reps, 75%) Confusion Matrix 
# 
# (entries are percentual average cell counts across resamples)
# 
# Reference
# Prediction   setosa versicolor virginica
# setosa       33.3        0.0       0.0
# versicolor    0.0       31.8       0.6
# virginica     0.0        1.5      32.8
# 
# Accuracy (average) : 0.9792

Получение данных confusionMatrix () в удобном формате

Я также хотел бы отметить, что если вы напрямую вводите значения и прогнозы, то confusionMatrix() вернет данные, которыми легче манипулировать, например, в этом примере.

xtab <- confusionMatrix(response, predict(fit.lda1))
as.matrix(xtab)

#            setosa versicolor virginica
# setosa         50          0         0
# versicolor      0         48         2
# virginica       0          1        49
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...