Ошибка в последовательных MATLAB при выборе объектов из 94 * 263 векторов объектов - PullRequest
0 голосов
/ 31 мая 2018

У меня есть 94 образца с 263 функциями для каждого образца.Общий вектор признаков имеет размер 94 * 263.В векторах объектов нет значений NaN или Inf.Есть два класса (51 в классе а и 43 в классе б).Я использую sequentialfs для выбора функций, но каждый раз получаю следующую ошибку:

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 input to SVD must not contain NaN or Inf.

Код:

X = FEATUREVECTOR;
y = LABELS;
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)

Подскажите, пожалуйста, как решить проблему?

1 Ответ

0 голосов
/ 25 июня 2018

Похоже, что вы вызываете sequentialfs с некоторыми входными данными, которые МОГУТ быть неопределенно связаны с беспорядком случайных чисел, который мы видим в вашем вопросе.Кроме того, я ничего не могу прочитать из твоего разума.Если вам нужна помощь, вам нужно показать, что вы сделали.

Я изменяю входные данные, и это хорошо работает,

load fisheriris;
X = randn(150,10);
X(:,[1 3 5 7 ])= meas;
y = species;

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)

У ваших входных данных есть проблемы.

...