Matlab - стратифицированная выборка многомерных данных - PullRequest
2 голосов
/ 09 февраля 2012

Я хочу разделить корпус на обучающие и испытательные комплекты стратифицированно.

Точки данных наблюдений расположены в Матрице A как

A=[16,3,0;12,6,4;19,2,1;.........;17,0,2;13,3,2]

Каждый столбец матрицы представляет отдельную особенность.

В Matlab функция cvpartition(A,'holdout',p) требует, чтобы A был вектором. Как я могу выполнить то же действие с A, что и Matrix , то есть результирующие наборы имеют примерно такое же распределение каждого объекта, как и в исходном корпусе.

1 Ответ

0 голосов
/ 05 сентября 2012

Используя матрицу А, а не сгруппированные данные, вы предполагаете, что случайный раздел ваших данных вернет набор тестов и обучающих данных с одинаковыми распределениями столбцов.

В общем, вы предполагаете, что в вашем вопросе есть разделение A, такое, что каждое из предельных распределений A (1 на столбец) имеет одинаковое распределение по всем трем переменным. Нет никаких гарантий, что это правда. Проверьте, связаны ли столбцы вашей матрицы. Если это не так, просто разделите на 1 и используйте индексы строк, чтобы определить тестовую матрицу:

cv = cvpartition(A(:, 1), 'holdout', p);
text_mat = A(cv.test, :);

Если они взаимосвязаны, вам, возможно, придется вернуться и пересмотреть то, что вы пытаетесь сделать.

...