在matlab中,我对分类器的精度和查全率的计算有问题我使用fisherIris数据(包括150个数据点,50个setosa,50个versicolor,50个virginica)我已经用kNN算法分类了这是我的困惑矩阵:

50     0     0
 0    48     2
 0     4    46

正确分类率为96%(144/150),但如何利用matlab计算准确率和召回率,有什么功能吗?
我知道精度=tp/(tp+fp)和召回=tp/(tp+fn)的公式,但我在识别组件时迷失了方向例如,我能说真正数是矩阵中的144吗假阳性和假阴性呢?
请帮忙!!! 我真的很感激谢谢您!

最佳答案

为了补充pederpansen的答案,下面是一些匿名的Matlab函数,用于计算每个类的精度、召回率和F1分数,以及所有类的平均F1分数:

precision = @(confusionMat) diag(confusionMat)./sum(confusionMat,2);

recall = @(confusionMat) diag(confusionMat)./sum(confusionMat,1)';

f1Scores = @(confusionMat) 2*(precision(confusionMat).*recall(confusionMat))./(precision(confusionMat)+recall(confusionMat))

meanF1 = @(confusionMat) mean(f1Scores(confusionMat))

07-27 13:29