Ошибка в crossval> getFuncVal: выбор функции Matlab - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь сделать выбор функции с помощью Matlab sequentialfs, однако у меня возникает проблема для fun, которую я определил следующим образом:

function err = fun(XT,yT,Xt,yt)
%XT: xtrain   yT:label of training set(ytrain)  Xt:xtest  yt:ytest
rng(1); 
model = svmtrain(XT,yT,'Kernel_Function', 'rbf', 'boxconstraint', 1);
err = sum(svmclassify(model, Xt) ~= yt);
end

, и я сохранил свойданные в массив ячеек, один для объектов (Xtrain) и один для меток (Ytrain`), где

XT: Xtrain{1,1}, yT:Ytrain{1,1}, Xt:Xtrain{1,2}, yt:Ytrain{1,2}

в качестве примера на странице математических операций ,

c = cvpartition(y,'k',10);
opts = statset('display','iter');
fun = @(XT,yT,Xt,yt)...
      (sum(~strcmp(yt,classify(Xt,XT,yT,'quadratic'))));

[fs,history] = sequentialfs(fun,X,y,'cv',c,'options',opts)

, даже когда я пытаюсь запустить предустановленные настройки Matlab, я получаю сообщение об ошибке:

Columns that can not be included:  none
Step 1, added column 1, criterion value 3.04984e-05
Error using crossval>evalFun (line 480)
The function '@(XT,yT,Xt,yt)(sum(~strcmp(yt,classify(Xt,XT,yT,'quadratic'))))' generated the following error:
The covariance matrix of each group in TRAINING must be positive definite.

Error in crossval>getFuncVal (line 497)
funResult = evalFun(funorStr,arg(:));

Error in crossval (line 343)
    funResult = getFuncVal(1, nData, cvp, data, funorStr, []);

Error in sequentialfs>callfun (line 485)
    funResult = crossval(fun,x,other_data{:},...

Error in sequentialfs (line 353)
                crit(k) = callfun(fun,x,other_data,cv,mcreps,ParOptions);

Error in feature_selection (line 11)
[fs,history] = sequentialfs(fun,X,y,'cv',c,'options',opts);

Я хочу выполнить перекрестную проверку в два раза (один поезд и один тест), Мойвопросы:

  1. Как мне установить cvpartition?
  2. как настроить sequentialfs на использование определенной мной функции?
  3. как вызвать функцию costomized fun, для которой установлен классификатор svm?

Ваша помощь очень ценится

...