Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在matlab中使用libsvm作为二元分类器计算灵敏度(真阳性率)和特异性(真阴性率)?_Matlab_Libsvm - Fatal编程技术网

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

如何在matlab中使用libsvm作为二元分类器计算灵敏度(真阳性率)和特异性(真阴性率)?,matlab,libsvm,Matlab,Libsvm,我正在研究人脸验证问题。我使用LibSVM作为分类器。我想计算真阳性率和真阴性率 通过使用这两个性能指标,我想计算相等的错误率,并绘制ROC曲线 我在matlab中读过perfcurve命令。但是这里score在命令中的含义是什么?如果您使用的是libsvm,那么svmpredict函数有三个可能的返回值 [predicted_label, accuracy, decision_values] = svmpredict(testing_label_vector, testing_instance

我正在研究人脸验证问题。我使用LibSVM作为分类器。我想计算真阳性率和真阴性率

通过使用这两个性能指标,我想计算相等的错误率,并绘制ROC曲线


我在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);