从94 * 263特征向量中选择特征时,MATLAB sequentialfs出错

时间:2018-05-30 22:12:52

标签: matlab feature-selection svd

我有94个样本,每个样本有263个特征。总特征向量大小为94 * 263。特征向量中没有NaN或Inf值。有两个类(a类51个,b类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 :(得分:0)

似乎您正在使用一些输入来调用serialfs,这可能与我们在问题中看到的一堆乱码有关。除此之外,我从你的脑海中看不到任何东西。如果您需要帮助,则需要证明您的所作所为。

我更改了输入数据,效果很好

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)

您的输入数据有问题。