使用插入符号训练功能创建的适合lda的组精度

时间:2018-10-29 14:47:12

标签: r cross-validation r-caret training-data resampling

我使用线性判别分析(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,但我不知道如何找到使用此方法为每个组正确预测的百分比。请帮忙。谢谢。

1 个答案:

答案 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