Does cvpartition work with structs?

3 views (last 30 days)
I am trying to work with a dataset provided to me that is a struct. I want to use cvpartition() as to maintain the ratio of classes in the resulting train and test sets, otherwise I would use randperm(). Here is the code I am trying to run:
% Struct is Messages
% "label" is the field containing the classes I want to sort by
c = cvpartition(Messages.label,'Holdout',1/3);
testIndices=test(c);
trainIndices=training(c);
trainData=data(trainIndices,:);
testData=data(testIndices,:);
The following is the error I receive upon running:
Error using internal.stats.cvpartitionInMemoryImpl (line 71)
CVPARTITION can have at most two optional arguments
Error in cvpartition (line 175)
cv.Impl = internal.stats.cvpartitionInMemoryImpl(varargin{:});
Error in scratch_script (line 8)
c = cvpartition(Messages.label,'Holdout',1/3);
Any guidance here would be appreciated. Thanks in advance!

Accepted Answer

Walter Roberson
Walter Roberson on 18 Nov 2021
c = cvpartition({Messages.label}, 'Holdout', 1/3);
  2 Comments
Brandon Carrier
Brandon Carrier on 18 Nov 2021
Thank you for the quick response! I tried implementing which got me past that error, but threw another. I'd appreciate any other guidance you may have.
Error using statslib.internal.grp2idx (line 99)
Grouping variable must be a categorical, numeric, logical, datetime or duration vector, character array, string array, or cell vector of character vectors.
Error in grp2idx (line 28)
[varargout{1:nargout}] = statslib.internal.grp2idx(s);
Error in internal.stats.cvpartitionInMemoryImpl (line 136)
cv.Group = grp2idx(N);
Error in cvpartition (line 175)
cv.Impl = internal.stats.cvpartitionInMemoryImpl(varargin{:});
Error in scratch_script (line 9)
c = cvpartition({Messages.label}, 'Holdout', 1/3 );
For reference, the contents of the field is just 1's and 0's.
Walter Roberson
Walter Roberson on 18 Nov 2021
c = cvpartition([Messages.label], 'Holdout', 1/3);

Sign in to comment.

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!