ROC曲线的Matlab使用svmtrain

14次浏览(过去30天)
穆罕默德
穆罕默德 2014年11月20日
你好,我正在处理一个包含x_values的数据集,我称之为SVMdata(17*41的矩阵)和目标值,这些目标值是这些数据分类的标签(“a”为第一组,“b”为第二组)。我想为我的数据获得ROC曲线。我使用了以下代码:
x = SVMdata ';
组= SVMdataS1;
组= ismember(组,“一个”);
将原始数据分成训练和测试数据集
Q = size(x,1);
>> Q1 =楼层(Q*0.80);
>> q2 = q-q1;
ind = randperm(Q);
ind1 = ind(1:Q1);
ind2 = ind(Q1+(1:Q2));
>> x1 = x(ind1,:);
>> t1 =组(ind1,:);
>> x2 = x(ind2,:);
>> t2 =组(ind2,:);
选择= optimset (“麦克斯特”, 1000);
%训练与训练集
支持向量机= svmtrain(x1, t1,...
自动定量的,真的,“Showplot”假的,“方法”“QP”...
“Kernel_Function”多项式的“polyorder”, 1“quadprog_opts”、选择);
shift = svm.ScaleData.shift;
scale = svm.ScaleData.scaleFactor;
X2 = bsxfun(@plus, X2,shift);
X2 = bsxfun(@times, X2,scale);
sv = svm.万博1manbetxSupportVectors;
alphaHat = svm.Alpha;
偏差= svm.偏差;
kfun = svm.KernelFunction;
kfunargs = svm.KernelFunctionArgs;
f = kfun(sv,x2,kfunargs{:})'*alphaHat(:) +偏差;
F = -f;
[X,Y,T,AUC] = perfcurve(t2,f,1);
当我运行这个程序时,我得到以下错误:错误使用perfcurve>成员(第633行)在输入数据中没有发现阳性类。
错误在perfcurve中(第387行)
[W,subYnames] =成员(标签(已排序),权重(已排序),...
非常感谢你的帮助。最好的

接受的答案

Ilya
Ilya 2014年11月21日
错误说t2中没有1。请注意 可变是合乎逻辑的,也是 t1 而且 t2 ,但是1是2倍。试着把1换成 真正的 或更换 t2 双(t2)
2的评论
Thi Huong Hoa Trinh
Thi Huong Hoa Trinh 2020年5月7日
非常感谢。你帮了我很多。我也有同样的误差

登录评论。

更多答案(0)

标签

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!