我正在处理面部验证问题。我正在使用LibSVM作为分类器。我想计算真阳性率和真阴性率。
通过使用这两个性能指标,我想计算等误差率,并且还想绘制ROC曲线。
我在matlab中读到了关于perfcurve的命令。但是这里的得分意味着什么。??
答案 0 :(得分:0)
如果您使用的是libsvm,svmpredict
函数有三种可能的返回值。
[predicted_label, accuracy, decision_values] = svmpredict(testing_label_vector, testing_instance_matrix, model [,'libsvm_options']);
如果您没有指定想要所有返回值,则通过将输出分配给使用多个变量,您将只获得第一个变量predicted_label
。
如果要生成ROC曲线,则需要每个实例的分类器分数才能计算阈值。分数是decision_values
。
然后,您可以使用神经网络工具包中的roc
或plotroc
或机器学习工具包中的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
示例。