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 - перекрестная проверка сгиба. M должно быть положительное целое число. Значением по умолчанию является 5.

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

'HoldOut'

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

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

'LeaveMOut

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

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

'Resubstitution'

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

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

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

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

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

Смотрите также

| |

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