exponenta event banner

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'}) указывает использовать наблюдения из групп «Рак» и «Контроль» для создания индексов, которые представляют 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-fold. M должно быть положительным целым числом. Значение по умолчанию: 5.

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

'HoldOut'

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

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

'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 является логическим вектором, содержащим 1 s для наблюдений, которые принадлежат обучающему набору, и 0 s для наблюдений, которые принадлежат тестовому (оценочному) набору.

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

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

См. также

| |

Представлен до R2006a