2016-04-14 56 views
0

我可以使用sequentialfs函数来计算两类SVM的SFS。 (意味着二进制输出[0 1])如何使用“多类”SVM计算SFS(顺序特征选择)?

下面是我的代码:

%% x=features, y=binary response. 
c = cvpartition(y,'k',10); 
opts = statset('display','iter'); [fs,history] = sequentialfs(fun,x,y,'cv',c,'options',opts) 

function err = SVM_class_fun(xTrain, yTrain, xTest, yTest) 
model = svmtrain(xTrain,yTrain,'Kernel_Function','polynomial','polyorder',2, 'boxconstraint', 1); 
err = sum(svmclassify(model, xTest) ~= yTest); end 

我的问题是如何计算SFS当y不是二进制。

我无法让它成功工作。

回答

0

我认为你的问题是,svmtrain只适用于二进制分类。如果您将包含y不是二进制的错误消息,那么我们可以知道。

有在Matlab多类SVM的若干实施方式,包括:

(1)This从这显然使用类似于svmtrain语法的文件交换,(2)and this从Mathworks公司本身它使用稍微不同的结构体。

我没有亲自使用它,但我会从(1)开始,因为语法与svmtrain一样,但它可能缺少您使用的内核和边界选项。祝你好运!

+0

现在我交换了svm的函数,它是“fitcecoc”,但编译的答案不是很好的表现,我不能确定答案是否正确, –