crossvalind

Сгенерируйте индексы для обучающих и тестовых наборов

Описание

пример

cvIndices = crossvalind(cvMethod,N,M) возвращает индексы cvIndices после применения cvMethod на N наблюдения с использованием M как параметр выбора.

пример

[train,test] = crossvalind(cvMethod,N,M) возвращает логические векторы train и test, представляющих наблюдения, которые относятся к набору обучающих данных и тестовому (оценочному) набору, соответственно. Можно задать любой поддерживаемый метод, кроме 'Kfold', который принимает только скалярный выход.

___ = crossvalind(___,Name,Value) задает дополнительные опции, используя один или несколько аргументы пары "имя-значение" в дополнение к аргументам в предыдущих синтаксисах. Для примера, cvIndices = crossvalind('HoldOut',Groups,0.2,'Class',{'Cancer','Control'}) задает использование наблюдений из групп 'Cancer' и 'Control' для генерации индексов, которые представляют 20% наблюдений в качестве набора удержания и 80% в качестве набора обучающих данных.

Примеры

свернуть все

Создайте индексы для 10-кратной перекрестной валидации и классифицируйте данные измерений для набора данных радужной оболочки глаза Фишера. Набор данных по ирису Фишера содержит измерения ширины и длины лепестков и чашелистиков трех видов ирисов.

Загрузите набор данных.

load fisheriris

Создайте индексы для 10-кратной перекрестной проверки.

indices = crossvalind('Kfold',species,10);

Инициализируйте объект, чтобы измерить эффективность классификатора.

cp = classperf(species);

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

for i = 1:10
    test = (indices == i); 
    train = ~test;
    class = classify(meas(test,:),meas(train,:),species(train,:));
    classperf(cp,class,test);
end
cp.ErrorRate
ans = 0.0200

Предположим, что вы хотите использовать данные наблюдений из setosa и virginica вид только и исключить versicolor виды из перекрестной валидации.

labels = {'setosa','virginica'};
indices = crossvalind('Kfold',species,10,'Classes',labels);

indices теперь содержит нули для строк, которые относятся к versicolor вид.

Выполните классификацию еще раз.

for i = 1:10
    test = (indices == i); 
    train = ~test;
    class = classify(meas(test,:),meas(train,:),species(train,:));
    classperf(cp,class,test);
end
cp.ErrorRate
ans = 0.0160

Загрузите набор данных carbig.

load carbig;
x = Displacement; 
y = Acceleration;
N = length(x);

Обучите полиномиальную модель второй степени с перекрестной валидацией «один на один» и оцените усредненную ошибку перекрестной валидации. Функция случайным образом выбирает одно наблюдение, чтобы продержаться для набора оценки, и использование этого метода в цикле не гарантирует несвязанные наборы оценки, и вы можете увидеть разное CVerr для каждого запуска.

sse = 0; % Initialize the sum of squared error.
for i = 1:100
    [train,test] = crossvalind('LeaveMOut',N,1);
    yhat = polyval(polyfit(x(train),y(train),2),x(test));
    sse = sse + sum((yhat - y(test)).^2);
end
CVerr = sse / 100;

Входные параметры

свернуть все

Метод перекрестной проверки, заданный как вектор символов или строка.

В этой таблице описаны допустимые методы перекрестной проверки. В зависимости от метода, третий входной параметр (M) имеет различные значения и требования.

cvMethodMОписание

'Kfold'

M - параметр сгиба, наиболее известный как K в перекрестной проверке K-сгиба. M должно быть положительным целым числом. Значение по умолчанию 5.

Метод использует перекрестную валидацию K-fold для генерации индексов. Этот метод использует M-1 складки для обучения и последняя складка для оценки. Метод повторяет этот процесс M время, каждый раз оставляя одну разную складку для оценки.

'HoldOut'

M - доля наблюдений, чтобы продержаться для тестового набора. M должен быть скаляром между 0 и 1. Значение по умолчанию 0.5, соответствующий 50% -ному удержанию.

Метод случайным образом выбирает приблизительно N* M наблюдения для продолжения тестирования (оценки) набора. Использование этого метода в цикле подобно использованию перекрестной валидации K-fold один раз за пределами цикла, за исключением того, что недискриминационные подмножества назначаются каждой оценке.

'LeaveMOut

M - количество наблюдений, которые нужно исключить для тестового набора. M должно быть положительным целым числом. Значение по умолчанию 1, соответствующий перекрестной проверке с единым выходом (LOOCV).

Метод случайным образом выбирает M наблюдения, чтобы продержаться для набора оценки. Использование этого метода перекрестной валидации в цикле не гарантирует несвязанные наборы оценки. Чтобы гарантировать несвязанные наборы оценок, используйте 'Kfold' вместо этого.

'Resubstitution'

M должен быть задан как двухэлементный вектор [P,Q]. Каждый элемент должен быть скаляром между 0 и 1. Значение по умолчанию [1,1], соответствующей полной реституции.

Метод случайным образом выбирает N* P наблюдения для набора оценок и N* Q наблюдения за набором обучающих данных. Метод выбирает наборы с минимизацией количества наблюдений, используемых в обоих наборах.

Q = 1-P соответствует отключению (100*P)%.

Пример: 'Kfold'

Типы данных: char | string

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

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

N может также быть вектором положительных целых или логических значений или массивом ячеек из векторов символов, содержащим информацию о группировке или метки для ваших выборок. Разбиение групп зависит от типа перекрестной проверки. Для 'Kfold'каждая группа разделена на M подмножества, приблизительно равные в размере. Для всех других методов для набора оценки (теста) выбирают примерно равное количество наблюдений из каждой группы. Набор обучающих данных содержит по крайней мере одно наблюдение от каждой группы независимо от используемого метода перекрестной валидации.

Пример: 100

Типы данных: double | cell

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

Пример: 5

Типы данных: double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: [train,test] = crossvalind('LeaveMOut',groups,1,'Min',3) задает наличие по крайней мере трех наблюдений в каждой группе в наборе обучающих данных при выполнении перекрестной проверки типа «один выход».

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

Этот аргумент пары "имя-значение" применим только тогда, когда вы задаете N как сгруппированная переменная. Тип данных 'Classes' должен совпадать с таковым у N. Для примера, если вы задаете N в качестве массива ячеек из векторов символов, содержащего метки классов, для задания необходимо использовать массив ячеек из векторов символов 'Classes'. Выходные аргументы, которые вы задаете, содержат значение 0 для наблюдений, принадлежащих исключенным классам.

Пример: 'Classes',{'Cancer','Control'}

Типы данных: double | cell

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

Этот аргумент пары "имя-значение" неприменим для 'Kfold' способ.

Пример: 'Min',3

Типы данных: double

Выходные аргументы

свернуть все

Индексы перекрестной валидации, возвращенные как вектор.

Если вы используете 'Kfold' как метод перекрестной валидации, cvIndices содержит равные (или приблизительно равные) пропорции целых чисел с 1 по M, которые определяют раздел N наблюдения в M несвязанные подмножества.

Для других методов перекрестной валидации cvIndices является логическим вектором, содержащим 1s для наблюдений, которые относятся к набору обучающих данных, и 0s для наблюдений, которые относятся к тестовому (оценочному) набору.

Набор обучающих данных, возвращенный как логический вектор. Этот аргумент задает, какие наблюдения относятся к набору обучающих данных.

Тестовый набор, возвращенный как логический вектор. Этот аргумент определяет, какие наблюдения относятся к тестовому набору.

См. также

| |

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте