有没有使用Matlab计算精度和召回的功能?

use*_*565 6 matlab knn confusion-matrix precision-recall

我有关于在matlab中计算分类器的精度和召回率的问题.我使用fisherIris数据(由150个数据点,50个setosa,50个versicolor,50个virginica组成).我使用kNN算法进行了分类.这是我的困惑矩阵:

50     0     0
 0    48     2
 0     4    46
Run Code Online (Sandbox Code Playgroud)

正确的分类率是96%(144/150),但如何用matlab计算精度和召回率,有什么功能吗?我知道该精度的公式= tp /(tp + fp),并且召回= tp /(tp + fn),但我在识别组件时丢失了.例如,我可以说矩阵的真阳性是144吗?假阳性和假阴性怎么样?请帮忙!!!我真的很感激!谢谢!

Sha*_*ran 6

要添加到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))
Run Code Online (Sandbox Code Playgroud)