我使用线性判别分析(LDA)和一个具有四个爬坡,地面,栖息和掠食性动物群的数据集创建了一个预测模型。当我使用MASS的lda()函数时,我知道如何使用交叉验证来找到每个组的准确预测百分比
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
但是,我宁愿使用插入符号包中的引导重采样技术来按组查找准确性。我有
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
因此,我知道如何使用上述代码找到总准确度和Kappa,但我不知道如何找到使用此方法为每个组正确预测的百分比。请帮忙。谢谢。
答案 0 :(得分:0)
您可能正在寻找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