如何在matlab中使用libsvm作为二元分类器计算灵敏度(真阳性率)和特异性(真阴性率)?
我正在研究人脸验证问题。我使用LibSVM作为分类器。我想计算真阳性率和真阴性率 通过使用这两个性能指标,我想计算相等的错误率,并绘制ROC曲线如何在matlab中使用libsvm作为二元分类器计算灵敏度(真阳性率)和特异性(真阴性率)?,matlab,libsvm,Matlab,Libsvm,我正在研究人脸验证问题。我使用LibSVM作为分类器。我想计算真阳性率和真阴性率 通过使用这两个性能指标,我想计算相等的错误率,并绘制ROC曲线 我在matlab中读过perfcurve命令。但是这里score在命令中的含义是什么?如果您使用的是libsvm,那么svmpredict函数有三个可能的返回值 [predicted_label, accuracy, decision_values] = svmpredict(testing_label_vector, testing_instance
我在matlab中读过perfcurve命令。但是这里score在命令中的含义是什么?如果您使用的是libsvm,那么svmpredict函数有三个可能的返回值
[predicted_label, accuracy, decision_values] = svmpredict(testing_label_vector, testing_instance_matrix, model [,'libsvm_options']);
如果不指定想要所有返回值,则通过使用多个变量将输出指定给,将只获得第一个变量predicted_label
如果要生成ROC曲线,则需要每个实例的分类器分数来计算阈值。分数是决策值
然后,您可以使用或从神经网络工具箱或机器学习工具箱生成ROC曲线
对于单元阵列形式的每个阈值的真阳性率和假阳性率,使用
[tpr,fpr,thresholds] = roc(ground_truth, decision_values);
要绘制ROC曲线,请使用
plotroc(ground_truth, decision_values);
或
请参阅以获取另一个perfcurve示例。是否从分类器中获得标签向量作为输出?你也有地面真相标签向量吗?通过比较这两个向量,你应该能够找到真正正的数量和真正负的数量。@Cecilia是的,我有预测的标签向量和原始标签向量。在那之后,我怎样才能在matlab中找到TPR和TNR,因为我还想用这两个值计算相等的错误率,并想画roc曲线。非常感谢你这么好的描述。但在libsvm选项中,我是否需要指定'-b1'?@Suru,这取决于。它是svmpredict方法的可选参数。您不需要它来训练分类器,但是使用它会改变输出。我建议您阅读以决定要使用哪些附加选项。如果决定指定其他选项,请将它们作为字符串放入Matlab中svmpredictfunction的libsvm_options可选参数中。另外@Cecilia由于ROC取决于阈值,因此ROC将如何用perfcurve绘制。阈值将如何变化?@TariqS我不确定我是否理解你的问题。perfcurve通过操纵分类器分数上的阈值绘制ROC曲线。ROC曲线是通过绘制各种阈值设置下的真阳性率TPR和假阳性率FPR来创建的。你想知道每个绘制点的阈值是什么吗?我对确定阈值感到困惑,它将如何影响TPR敏感性和FPR1特异性?我计算了TPR和FPR,如下所示:TPR=TP/TP+FN;FPR=FP/FP+TN;在这方面,没有影响它的阈值。我在计算TPs和FPs。而且也没有影响TPs和FPs的阈值。请引导我。这将是一个很大的帮助。提前谢谢
[X,Y] = perfcurve(ground_truth, decision_values, positive_class_name);
plot(X,Y);