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吗?假阳性和假阴性怎么样?请帮忙!!!我真的很感激!谢谢!
要添加到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)