使用SVM计算精度,召回率,准确度

时间:2015-09-09 12:47:20

标签: matlab svm

我已经在matlab中训练了SVM,然后我将我的模型转移到OpenCV来检测汽车的后部。这是代码。

pos_mat = matfile('posfeat.mat');               % positive samples
neg_mat = matfile('negfeat.mat');               % negative samples

posRow  = pos_mat.bigmat;                        % get positve samples
negRow  = neg_mat.bigmatneg;                     % get negative samples

group = ones(135,1);                             % get labels
group(70:135) = -1;

t = 70;
for i =1:1:66
    posRow(t,:) = (negRow(i,:));
    t = t+1;
end
xdata = posRow;


SVMModel = fitcsvm(xdata,group);

beta = (SVMModel.Beta)';

这是输出。

enter image description here

现在我想计算SVM分类器的精度,召回率和准确度。这个post非常有用,但它只提供与精度,召回,准确性相关的概念。有人可以帮我计算SVM分类器的精度,召回率,准确度。你可以找到posfeat和negfeat here

1 个答案:

答案 0 :(得分:0)

根据

https://www.csie.ntu.edu.tw/~cjlin/libsvm/

此工具中包含的评估功能包括:

precision
Precision = true_positive / (true_positive + false_positive)
recall
Recall = true_positive / (true_positive + false_negative)
fscore
F-score = 2 * Precision * Recall / (Precision + Recall)
bac
BAC (Balanced ACcuracy) = (Sensitivity + Specificity) / 2,
where Sensitivity = true_positive / (true_positive + false_negative)
and   Specificity = true_negative / (true_negative + false_positive)
auc
AUC (Area Under Curve) is the area under the ROC curve.

注意:此工具仅适用于标签为{1,-1}的二进制类C-SVM。不支持多级,回归和概率估计。 注意:使用精度作为评估标准时,交叉验证的准确性可能与标准LIBSVM的准确性不同。原因是LIBSVM内部将数据分组在同一个类中,而此工具则没有。