我在MATLAB中开发了一个CBIR系统,并将相似性度量作为欧氏距离。对于每一个查询图像,我都会检索前20张图片。
我用王数据集来测试我的系统。
它包含10个班(如非洲人民、公共汽车、玫瑰等)每个包含100幅图像(总共1000幅图像)。
我的方法:
对于单一的查询图像,我可以很容易地计算精度,召回和绘制PR-曲线使用这个链接。
我怎么才能为全班同学做同样的事呢?
我的方法是:对于属于A类的每一个图像,查找前20幅图像,分别是TP(真阳性)和FP (假阳性)。
TP FP
Image1 17 3
Image2 15 5
...
...
Image100 10 10
Total 1500 500 A类的精度=1500/(2000) = .75 (对吗?)
回忆A类-?
PR-曲线->卡住了?有些链接说我需要分类器,而有些则不.我真的很困惑。
发布于 2015-04-22 23:59:05
因此,正如您注意到的,您可以按以下方式计算精度。
P = TP ./ ( TP + FP );但是,您需要有FN或总错误数来计算召回。作为聊天中讨论,您需要找到确定FN和FP数据的方法。然后,您可以使用以下公式计算召回。
R = TP ./ ( TP + FN )如果您有混淆矩阵或数据,可以使用我的自定义confusionmat2f1.m计算精度、召回和f1分数。这假设混淆矩阵被格式化为如何Matlab定义了它。。每一行的解释都是内联的。如果你想要更多的澄清,请告诉我。
function [F,P,R] = confusionmat2f1( C )
%% confusionmat2f1( C )
%
% Inputs
% C - Confusion Matrix
%
% Outputs
% F - F1 score column vector
% P - Precision column vector
% R - Recall column vector
%%
% Confusion Matrix to Probability
M = sum( C, 3 );
% Calculate Precision
P = diag(M) ./ sum(M,1)';
% Calculate Recall
R = diag(M) ./ sum(M,2);
% Calculate F1 Score
F = f1( P, R );https://stackoverflow.com/questions/29810733
复制相似问题