问题描述
我正在尝试学习 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)
解决方法
不太确定为什么要从另一个数据帧 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