Подтвердить что ты не робот

Как выбрать случайные выборки из набора данных в Matlab

Возможный дубликат:
Как случайно выбрать k точек из N точек в MATLAB?

Скажем, у меня есть набор данных, который содержит 10 000 строк данных. Каков наилучший способ создания подмножества, включающего 1000 случайно выбранных строк?

4b9b3361

Ответ 1

Вы можете использовать randperm для этой задачи:

Выборка без замены:

nRows = 10000; % number of rows
nSample = 1000; % number of samples

rndIDX = randperm(nRows); 

newSample = data(rndIDX(1:nSample), :); 

Отбор проб с заменой:

nRows = 10000; % number of rows
nSample = 1000; % number of samples

rndIDX = randi(nRows, nSample, 1); 

newSample = data(rndIDX, :); 

Ответ 2

Используйте randperm в сочетании с количеством строк. Если x - ваша матрица:

nrows = size(x,1);
nrand = 1000; % Choose 1000 rows
assert(nrand<=nrows, 'You cannot choose more rows than exist in the matrix');
rand_rows = randperm(nrows, nrand);
xx = x(rand_rows,:);  % Select the random rows from x

Ответ 3

Если у вас есть панель инструментов статистики R2012 +, вы можете использовать datasample.

subset = datasample(data,1000)

subset будет случайным образом выбранным подмножеством данных, состоящим из 1000 выборок.

Чтобы пробовать без замены, используйте:

subset = datasample(data,1000,'Replace',false)

Если у вас установлена ​​более старая версия инструментария, вы можете использовать randsample:

rndIdx = randsample(size(data,1),1000,true); % with replacement
subset = samples(rndIdx(1:1000), :);

rndIdx = randsample(size(data,1),1000,false); % without replacement
subset = samples(rndIdx(1:1000), :);

Но использование randsample более или менее совпадает с ответом H.Muster(который я принял как лучший, потому что он не требует какого-либо инструментария).

Примечание. Для получения дополнительной информации о   разница между выборкой с заменой по сравнению с выборкой без   замените, см. эту страницу.

Ответ 4

Не уверен, что вы уже написали какой-либо код. Следующая ссылка mathworks показывает примеры случайной выборки. Взгляните на это для идей.

Также здесь код с randsample из инструментария статистики. Просто логика, и вам, возможно, придется ее соответствующим образом скорректировать.

матрица m из N строк вытащите случайную выборку из n строк из m

Sample = m(randsample(1:N,n),:)

randsample(1:N,n)

Выше получается последовательность из n случайных целых чисел от 1 до N.