Effacer les filtres
Effacer les filtres

Index in position 2 exceeds array bounds using crossval

2 vues (au cours des 30 derniers jours)
Tessa Kol
Tessa Kol le 20 Oct 2020
Commenté : Tessa Kol le 23 Oct 2020
Dear all,
I got the following error when using crossval.
Error using crossval>evalFun (line 488)
The function '@(Xtr,Ytr,Xte)predict(fitlm(Xtr,Ytr(:,2)),Xte)' generated the following error:
Index in position 2 exceeds array bounds (must not exceed 1).
Error in crossval>getLossVal (line 525)
funResult = evalFun(funorStr,arg(1:end-1));
Error in crossval (line 424)
[funResult,outarg] = getLossVal(i, nData, cvp, data, predfun);
This is my code. The X and Y are stored in the attached .mat file.
%% Cross validation
hpartition = cvpartition(81,'Holdout',0.2);
idxTrain = training(hpartition);
Xtr = X(idxTrain,:);
Ytr = Y(idxTrain,:);
idxNew = test(hpartition);
Xte = X(idxNew,:);
for i = 1:2
for j = 1:3
fcn{i,1} = @(Xtr, Ytr, Xte) predict(fitlm(Xtr,Ytr(:,i)), Xte);
fcn{i,2} = @(Xtr, Ytr, Xte) predict(fitrsvm(Xtr,Ytr(:,i)), Xte);
fcn{i,3} = @(Xtr, Ytr, Xte) predict(fitrgp(Xtr,Ytr(:,i)), Xte);
mse(i,j) = crossval('mse', X, Y(:,i),'Predfun',fcn{i,j}, 'kfold',10);
end
end

Réponse acceptée

Nagasai Bharat
Nagasai Bharat le 23 Oct 2020
Hi,
The problem in above code was that crossval does the train-test spilt and it takes in the Ytr as column vector but you did provide Ytr are a 2-D Matrix due to which we were getting that array bound error.The below code snippet should resolve and simplify your issue.
load data
% hpartition = cvpartition(81,'Holdout',0.2);
% idxTrain = training(hpartition);
% Xtr = X(idxTrain,:);
% Ytr = Y(idxTrain,:);
% % Ytr_1 = Y(idxTrain,1);
% % Ytr_2 = Y(idxTrain,2);
% idxNew = test(hpartition);
% Xte = X(idxNew,:);
for i=1:2
for j = 1:3
fcn{i,1} = @(Xtr, Ytr, Xte) predict(fitlm(Xtr,Ytr), Xte);
fcn{i,2} = @(Xtr, Ytr, Xte) predict(fitrsvm(Xtr,Ytr), Xte);
fcn{i,3} = @(Xtr, Ytr, Xte) predict(fitrgp(Xtr,Ytr), Xte);
mse(i,j) = crossval('mse', X, Y(:,i),'Predfun',fcn{i,j}, 'kfold',10);
end
For more information you could follow crossval documentation.
  1 commentaire
Tessa Kol
Tessa Kol le 23 Oct 2020
Thank for your reply. I discovered indeed that issue was the 2D-matrix. I forgot to close this post after I resolved the issue myself. But thank you so much for providing the answer!

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by