在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))