我在 matlab 中计算分类器的精度和召回率时遇到问题。我使用 fisherIris 数据(由 150 个数据点、50-setosa、50-versicolor、50-virginica 组成)。我已经使用 kNN 算法进行了分类。这是我的混淆矩阵:
50 0 0
0 48 2
0 4 46
正确分类率为96%(144/150),但是如何用matlab计算precision和recall,有函数吗? 我知道 precision=tp/(tp+fp) 和 recall=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))
关于matlab - 有没有使用Matlab计算Precision和Recall的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915003/