【问题标题】:Accuracy by group for fit lda created using caret train function使用插入符号训练函数创建的 fit lda 的组精度
【发布时间】:2018-10-29 14:47:11
【问题描述】:

我使用线性判别分析 (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

但是,我宁愿使用 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

所以我知道如何使用上面的代码找到总准确率和 Kappa,但我无法弄清楚如何使用这种方法找到每个组正确预测的百分比。请帮忙。谢谢。

【问题讨论】:

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


    【解决方案1】:

    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
    

    【讨论】:

    • @SavannahCobb 很高兴听到这个消息。也许您想通过单击答案左上角附近的复选标记来接受答案。
    猜你喜欢
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2021-01-22
    • 1970-01-01
    • 2019-09-06
    • 2011-09-19
    相关资源
    最近更新 更多