matlab - 有没有使用Matlab计算Precision和Recall的函数?

标签 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

正确分类率为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/

相关文章:

matlab - 阅读未压缩的yuv视频文件的帧?

c++ - 如何使用 opencv flann::Index?

python-3.x - 从头开始实现 K 最近邻时,如何修复代码中的 KeyError 错误?

r - 在 R 中将正类设置为 1

python - plot_confusion_matrix() 使用 sklearn 得到了一个意外的关键字参数 'classes'

Matlab:是否可以通过混合初始条件和终止条件对 ode 系统进行数值求解?

matlab - 如何在 Matlab 函数中设置变量的范围

machine-learning - sklearns fusion_matrix中的 'normalize'参数是什么意思?

Matlab 函数处理可变和未知数量的输出

python - 基于单个特征集的分类精度