如何使用libsvm作为matlab中的二元分类器来计算灵敏度(真阳性率)和特异性(真阴性率)?

时间:2015-05-11 14:05:31

标签: matlab libsvm

我正在处理面部验证问题。我正在使用LibSVM作为分类器。我想计算真阳性率和真阴性率。

通过使用这两个性能指标,我想计算等误差率,并且还想绘制ROC曲线。

我在matlab中读到了关于perfcurve的命令。但是这里的得分意味着什么。??

1 个答案:

答案 0 :(得分:0)

如果您使用的是libsvm,svmpredict函数有三种可能的返回值。

[predicted_label, accuracy, decision_values] = svmpredict(testing_label_vector, testing_instance_matrix, model [,'libsvm_options']);

如果您没有指定想要所有返回值,则通过将输出分配给使用多个变量,您将只获得第一个变量predicted_label

如果要生成ROC曲线,则需要每个实例的分类器分数才能计算阈值。分数是decision_values

然后,您可以使用神经网络工具包中的rocplotroc或机器学习工具包中的perfcurve来生成ROC曲线。

对于细胞阵列形式的每个阈值的真阳性和假阳性率,使用

[tpr,fpr,thresholds] = roc(ground_truth, decision_values);

对于ROC曲线图,请使用

plotroc(ground_truth, decision_values);

或者

[X,Y] = perfcurve(ground_truth, decision_values, positive_class_name);
plot(X,Y);

请参阅ROC curve for a binary classifier in MATLAB了解另一个perfcurve示例。