2016-04-15 17 views
0

誰かが "sequentialfs"を手伝ってもらえますか?MatlabのSVMでsequentialfsを使用する

私は以下のSVM関数でそれを使用していません。 'X'は各観測の特徴を含み、 'y'は各観測のクラスを含む。

SVMModel = fitcsvm(X,Y); 
predict(SVMModel, X); 

sequentialfsを実行すると、次のエラーが発生します 多すぎ入力引数:

関数は「特徴選択」次のエラーが発生しました。

ここで、私のコード:

fs = sequentialfs(@featureSelection,X,y) 

function err=featureSelection(X,y) 
    SVMModel = fitcsvm(X,y,'KernelFunction','gaussian', 'KernelScale','auto'); 
    err = 0; 
    for i=1:size(X,1) 
     err = err + (y(i) ~= predict(SVMModel,X(i,:))); 
    end 
end 

ありがとう!

答えて

1

私は同じ問題がありました。 MATLABのマニュアルによると:

sequentialfs performs 10-fold cross-validation by repeatedly calling fun with different training subsets of X and y, XTRAIN and ytrain, and test subsets of X and y, XTEST and ytest, as follows:

criterion = fun(XTRAIN,ytrain,XTEST,ytest)

あなたの基準関数は、フォーム従うべきことを意味:限りsequentialfsは、デフォルトでXTRAINとXTESTサブセットにあなたのXデータを分離するよう

function err=featureSelection(XTRAIN,ytrain,XTEST,yTest) 

を。以下は

例です。

c = cvpartition(Labels,'Holdout',0.3); 
opts = statset('display','iter'); 
classf = @(train_data,train_labels,test_data,test_labels) ... 
     sum(predict(fitcsvm(train_data,train_labels,'KernelFunction','rbf'), test_data) ~= test_labels); 
[fs,history] = sequentialfs(classf,Data,Labels,'cv',c,'options',opts) 
関連する問題