【问题标题】:How to calculate Accuracy F1-Score Precision Sensitivity etc如何计算 Accuracy F1-Score Precision Sensitivity 等
【发布时间】:2021-04-11 18:52:10
【问题描述】:

我正在尝试学习 R。所以我在互联网上找到了一些做法,这就是其中之一。我想从这段代码中计算准确度、F1 分数、精度、灵敏度等。但我什至无法计算混淆矩阵。 我该怎么办?任何人的帮助

net = neuralnet(formul,data=train_data,hidden=5,linear.output=FALSE)
plot(net)
predict_net_test <- compute(net,test_data[,1:9])
predict_result<-round(predict_net_test$net.result, digits = 0)
net.prediction = c("benign", "malignant")[apply(predict_result, 1, which.max)]
predict.table = table(cleanedData$Class[-index], net.prediction)
predict.table

CrossTable(x = cleanedData$Class[-index], y = net.prediction,
       prop.chisq=FALSE)

【问题讨论】:

    标签: r precision data-mining confusion-matrix


    【解决方案1】:

    不太清楚为什么要从另一个数据框 cleanedData 以及您正在使用的包中调用实际标签。请在将来提供它们。您有混淆矩阵,只需将其输入插入符号的confusionMatrix() 以获取统计信息,例如:

    library(caret)
    library(neuralnet)
    
    dat = data.frame(matrix(runif(1000),100))
    dat$Class = sample(c("benign", "malignant"),100,replace=TRUE)
    dat$Class = factor(dat$Class)
    
    train_data = dat[1:70,]
    test_data = dat[71:100,]
    
    net = neuralnet(Class ~ .,data=train_data,hidden=5,linear.output=FALSE)
    predict_net_test = c("benign", "malignant")[max.col(predict(net,test_data))]
    

    你需要把预测放在第一位:

    predict.table = table(predict_net_test,test_data$Class)
    

    然后:

    confusionMatrix(predict.table,positive="malignant")
                    
    predict_net_test benign malignant
           benign         5         7
           malignant     10         8
                                              
                   Accuracy : 0.4333          
                     95% CI : (0.2546, 0.6257)
        No Information Rate : 0.5             
        P-Value [Acc > NIR] : 0.8192          
                                              
                      Kappa : -0.1333         
                                              
     Mcnemar's Test P-Value : 0.6276          
                                              
                Sensitivity : 0.5333          
                Specificity : 0.3333          
             Pos Pred Value : 0.4444          
             Neg Pred Value : 0.4167          
                 Prevalence : 0.5000          
             Detection Rate : 0.2667          
       Detection Prevalence : 0.6000          
          Balanced Accuracy : 0.4333          
                                              
           'Positive' Class : malignant 
    

    对于精确召回,请执行以下操作:

        confusionMatrix(predict.table,positive="malignant",mode = "prec_recall")
    
    Confusion Matrix and Statistics
    
                    
    predict_net_test benign malignant
           benign         3         8
           malignant     10         9
                                             
                   Accuracy : 0.4            
                     95% CI : (0.2266, 0.594)
        No Information Rate : 0.5667         
        P-Value [Acc > NIR] : 0.9782         
                                             
                      Kappa : -0.2442        
                                             
     Mcnemar's Test P-Value : 0.8137         
                                             
                  Precision : 0.4737         
                     Recall : 0.5294         
                         F1 : 0.5000         
                 Prevalence : 0.5667         
             Detection Rate : 0.3000         
       Detection Prevalence : 0.6333         
          Balanced Accuracy : 0.3801         
                                             
           'Positive' Class : malignant   
    

    【讨论】:

    • 非常感谢。我现在可以计算混淆矩阵了。所以如果我想计算精度、召回率、f1-score,我必须自己计算吗?我可以在 R 上执行此操作吗?
    猜你喜欢
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 2023-02-08
    • 2017-06-21
    • 2021-03-01
    • 2016-09-18
    相关资源
    最近更新 更多