Сгенерируйте индексы для обучающих и тестовых наборов
[
возвращает логические векторы 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;
cvMethod
- Метод перекрестной валидацииМетод перекрестной проверки, заданный как вектор символов или строка.
В этой таблице описаны допустимые методы перекрестной проверки. В зависимости от метода, третий входной параметр (M
) имеет различные значения и требования.
cvMethod | M | Описание |
---|---|---|
|
| Метод использует перекрестную валидацию K-fold для генерации индексов. Этот метод использует |
|
| Метод случайным образом выбирает приблизительно |
|
| Метод случайным образом выбирает |
|
| Метод случайным образом выбирает
|
Пример: 'Kfold'
Типы данных: char
| string
N
- Общее количество наблюдений или информации о группировкеОбщее количество наблюдений или информации о группировке, заданное в виде положительного целого числа, вектора положительных целых чисел, логического вектора или массива ячеек векторов символов.
N
может быть положительным целым числом, задающим общее количество выборок в наборе данных, например.
N
может также быть вектором положительных целых или логических значений или массивом ячеек из векторов символов, содержащим информацию о группировке или метки для ваших выборок. Разбиение групп зависит от типа перекрестной проверки. Для 'Kfold'
каждая группа разделена на M
подмножества, приблизительно равные в размере. Для всех других методов для набора оценки (теста) выбирают примерно равное количество наблюдений из каждой группы. Набор обучающих данных содержит по крайней мере одно наблюдение от каждой группы независимо от используемого метода перекрестной валидации.
Пример: 100
Типы данных: double
| cell
M
- Параметр перекрестной валидацииПараметр перекрестной валидации, заданный как положительная скалярная величина между 0 и 1, положительное целое число или двухэлементный вектор. В зависимости от метода перекрестной валидации, требования к M
отличаются. Для получения дополнительной информации смотрите cvMethod
.
Пример: 5
Типы данных: double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
[train,test] = crossvalind('LeaveMOut',groups,1,'Min',3)
задает наличие по крайней мере трех наблюдений в каждой группе в наборе обучающих данных при выполнении перекрестной проверки типа «один выход».'Classes'
- Информация о классе или группеИнформация о классе или группе, заданная как разделенная разделенными запятой парами, состоящая из 'Classes'
и вектор положительных целых чисел, вектор символов, строка, строковый вектор или массив ячеек из векторов символов. Эта опция позволяет ограничивать наблюдения только заданными группами.
Этот аргумент пары "имя-значение" применим только тогда, когда вы задаете N
как сгруппированная переменная. Тип данных 'Classes'
должен совпадать с таковым у N
. Для примера, если вы задаете N
в качестве массива ячеек из векторов символов, содержащего метки классов, для задания необходимо использовать массив ячеек из векторов символов 'Classes'
. Выходные аргументы, которые вы задаете, содержат значение 0
для наблюдений, принадлежащих исключенным классам.
Пример: 'Classes',{'Cancer','Control'}
Типы данных: double
| cell
'Min'
- Минимальное количество наблюдений1
(по умолчанию) | положительное целое числоМинимальное количество наблюдений для каждой группы в наборе обучающих данных, заданное как разделенная разделенными запятой парами, состоящая из 'Min'
и положительное целое число. Установка большого значения может помочь сбалансировать обучающие группы, но вызывает частичную реституцию, когда нет достаточного количества наблюдений.
Этот аргумент пары "имя-значение" неприменим для 'Kfold'
способ.
Пример: 'Min',3
Типы данных: double
cvIndices
- Индексы перекрестной валидацииИндексы перекрестной валидации, возвращенные как вектор.
Если вы используете 'Kfold'
как метод перекрестной валидации, cvIndices
содержит равные (или приблизительно равные) пропорции целых чисел с 1 по M
, которые определяют раздел N
наблюдения в M
несвязанные подмножества.
Для других методов перекрестной валидации cvIndices
является логическим вектором, содержащим 1s для наблюдений, которые относятся к набору обучающих данных, и 0s для наблюдений, которые относятся к тестовому (оценочному) набору.
train
- Набор обучающих данныхНабор обучающих данных, возвращенный как логический вектор. Этот аргумент задает, какие наблюдения относятся к набору обучающих данных.
test
- Тестовый наборТестовый набор, возвращенный как логический вектор. Этот аргумент определяет, какие наблюдения относятся к тестовому набору.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.