请参阅 percurve 的文档,posclass 是正类的标签,在您的情况下,它必须是 1、-1 或 2
http://www.mathworks.com/help/stats/perfcurve.html
ROC 曲线在 x 轴上有“假阳性率”,在 y 轴上有“真阳性率”。通过指定 posclass,您可以指定要计算哪个类的误报率和真阳性率。例如,如果您将 posclass 指定为 2,则您认为当真实标签为 2 时,预测 1 或 -1 被视为错误预测(假阴性)。
编辑:你提到的accuaracy_score(在我的文档版本(3.17,在matlab文件夹中),它被称为decision_values/prob_estimates)有3列,每一列对应于数据属于一个类的概率。
例如
model=svmtrain(train_label,train_data);
[predicted_label, accuracy, decision_values]=predict(test_label,test_dat,model);
model.Label 包含类标签,decision_values 中的各个列包含测试用例属于 model.Label 中指定的类的概率。(参见http://www.csie.ntu.edu.tw/~b91082/SVM/README)。
使用 purfcurve 计算 m 类的 ROC:
[X,Y] = perfcurve(truelabels, decision_values(:,m)*model.Label(m),model.Label(m));
decision_values(:,m)*model.Label(m)
尤其是当您的分类标签是负数时,这一点很重要。