Matlab Feature Selection

I am trying to learn the corresponding functions in the training matrix 300*299by taking a random string from it as my test data and applying it to it sequentialfs. I used the following code:

>> Md1=fitcdiscr(xtrain,ytrain);
>> func = @(xtrain, ytrain, xtest, ytest) sum(ytest ~= predict(Md1,xtest));
>> learnt = sequentialfs(func,xtrain,ytrain)

xtrainand ytrainare equal 299*299and 299*1respectively. The prediction will give me the predicted label for xtest(which is some random string from the original xtrain).

However, when I run my code, I get the following error:

Error using crossval>evalFun (line 480)
The function '@(xtrain,ytrain,xtest,ytest)sum(ytest~=predict(Md1,xtest))' generated the following error:
X must have 299 columns.

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 new (line 13)
    learnt = sequentialfs(func,xtrain,ytrain)

Where am I wrong?

+4
source share
1 answer

func, . sequentialfs , , sequentialfs, .

, , func

: MathWorks

+1

Source: https://habr.com/ru/post/1660557/


All Articles