Alternatives to 'datasample'

Hi!
I'm looking for an alternative to the datasample function. It's a part of the Statistics & Machine Learning toolbox. Any ideas? I want to be able to sample rows of data from tables and matrices and would like to have the choice of sampling with/without replacement.
Thanks for your ideas!

5 Comments

Are you sampling with replacement or without replacement?
Hi Adam,
I am sampling with replacement. My dataset (of personally curated "ground truths") contains hundreds of samples, and I am using it to train a pattern recognition perceptron that needs 200,000 epochs at a reasonable learning rate.
Thanks,
Veena
Veena Chatti
Veena Chatti on 22 Aug 2020
Edited: Veena Chatti on 22 Aug 2020
I think I've found a way to do it by converting the dataset to an array, combining a loop with randperm, and choosing one row at a time, but ideally, if someone knows about a function that does it in a more straightforward way that I just haven't come across yet, that would be fabulous. I eventually want to share my perceptron with others who may not have the toolbox, and it would be nice not to require that they have to buy it just for this one function!
randperm samples without replacement.
To sample with replacement, use randi.
Thanks. I think I have it now.

Sign in to comment.

 Accepted Answer

Hi Veena,
Yes, randomperm (without replacement) and randi (with replacement) can be used as an alternative.
Furthermore, if the dataset has been converted to either a matrix or an array format, the rows can be sampled without using a loop as shown in the example as follows,
X = rand(50,10); % Assume X is the dataset
SampledRows = X(randi(50,[200,1]),:); % 200 Sample rows (with replacement)
Kiran Felix Robert

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!