Оцените потерю с помощью перекрестной проверки
возвращает 10-кратную ошибочную оценку перекрестной проверки для функционального err
= crossval(criterion
,X
,y
,'Predfun',predfun
)predfun
на основе заданного criterion
, любой 'mse'
(среднеквадратическая ошибка) или 'msc'
(misclassification уровень). Строки X
и y
соответствуйте наблюдениям и столбцам X
соответствуйте переменным предикторам.
Для получения дополнительной информации смотрите Общие Шаги Перекрестной проверки для predfun.
выполняет 10-кратную перекрестную проверку для функционального values
= crossval(fun
,X
)fun
, примененный данные в X
. Строки X
соответствуйте наблюдениям и столбцам X
соответствуйте переменным.
Для получения дополнительной информации смотрите Общие Шаги Перекрестной проверки для fun.
___ = crossval(___,
задает опции перекрестной проверки с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к любой из комбинаций входных аргументов и выходных аргументов в предыдущих синтаксисах. Например, Name,Value
)'KFold',5
задает, чтобы выполнить 5-кратную перекрестную проверку.
Вычислите среднеквадратическую ошибку модели регрессии при помощи 10-кратной перекрестной проверки.
Загрузите carsmall
набор данных. Поместите ускорение, лошадиную силу, вес и значения миль на галлон (MPG) в матричный data
. Удалите любые строки, которые содержат NaN
значения.
load carsmall
data = [Acceleration Horsepower Weight MPG];
data(any(isnan(data),2),:) = [];
Задайте последний столбец data
, который соответствует MPG
, как переменная отклика y
. Задайте другие столбцы data
как данные о предикторе X
. Добавьте столбец из единиц к X
когда ваша функция регрессии использует regress
, как в этом примере.
Примечание: regress
полезно, когда вам просто нужны содействующие оценки или остаточные значения модели регрессии. Если необходимо исследовать подбиравшую модель регрессии далее, создайте объект модели линейной регрессии при помощи fitlm
. Для примера, который использует fitlm
и crossval
, смотрите Вычисляют, Означают Абсолютное о Перекрестной проверке Ошибки.
y = data(:,4); X = [ones(length(y),1) data(:,1:3)];
Создайте пользовательский функциональный regf
(показанный в конце этого примера). Эта функция подбирает модель регрессии к обучающим данным и затем вычисляет ожидаемые значения на наборе тестов.
Примечание: Если вы используете файл live скрипта для этого примера, regf
функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB®.
Вычислите 10-кратную среднеквадратическую ошибку перекрестной проверки по умолчанию для модели регрессии с данными о предикторе X
и переменная отклика y
.
rng('default') % For reproducibility cvMSE = crossval('mse',X,y,'Predfun',@regf)
cvMSE = 17.5399
Этот код создает функциональный regf
.
function yfit = regf(Xtrain,ytrain,Xtest) b = regress(ytrain,Xtrain); yfit = Xtest*b; end
Вычислите misclassification ошибку модели логистической регрессии, обученной на числовых и категориальных данных о предикторе при помощи 10-кратной перекрестной проверки.
Загрузите patients
набор данных. Задайте числовые переменные Diastolic
и Systolic
и категориальная переменная Gender
как предикторы, и задают Smoker
как переменная отклика.
load patients
X1 = Diastolic;
X2 = categorical(Gender);
X3 = Systolic;
y = Smoker;
Создайте пользовательский функциональный classf
(показанный в конце этого примера). Эта функция подбирает модель логистической регрессии к обучающим данным и затем классифицирует тестовые данные.
Примечание: Если вы используете файл live скрипта для этого примера, classf
функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB®.
Вычислите 10-кратную перекрестную проверку misclassification ошибка для модели с данными о предикторе X1
x2
, и X3
и переменная отклика y
. Задайте 'Stratify',y
гарантировать, что наборы обучающих данных и наборы тестов имеют примерно ту же пропорцию курильщиков.
rng('default') % For reproducibility err = crossval('mcr',X1,X2,X3,y,'Predfun',@classf,'Stratify',y)
err = 0.1100
Этот код создает функциональный classf
.
function pred = classf(X1train,X2train,X3train,ytrain,X1test,X2test,X3test) Xtrain = table(X1train,X2train,X3train,ytrain, ... 'VariableNames',{'Diastolic','Gender','Systolic','Smoker'}); Xtest = table(X1test,X2test,X3test, ... 'VariableNames',{'Diastolic','Gender','Systolic'}); modelspec = 'Smoker ~ Diastolic + Gender + Systolic'; mdl = fitglm(Xtrain,modelspec,'Distribution','binomial'); yfit = predict(mdl,Xtest); pred = (yfit > 0.5); end
Для данного количества кластеров вычислите перекрестную подтвержденную сумму квадратов расстояний между наблюдениями и их самым близким кластерным центром. Сравните результаты для одного - десяти кластеров.
Загрузите fisheriris
набор данных. X
матричный meas
, который содержит цветочные измерения для 150 различных цветов.
load fisheriris
X = meas;
Создайте пользовательский функциональный clustf
(показанный в конце этого примера). Эта функция выполняет следующие шаги:
Стандартизируйте обучающие данные.
Разделите обучающие данные на k
кластеры.
Преобразуйте тестовые данные с помощью обучающих данных среднее и стандартное отклонение.
Вычислите расстояние от каждого, тестовые данные указывают на самый близкий кластерный центр или центроид.
Вычислите сумму квадратов расстояний.
Примечание: Если вы используете файл live скрипта для этого примера, clustf
функция уже включена в конце файла. В противном случае необходимо создать функцию в конце.m файла или добавить его как файл на пути MATLAB®.
Создайте for
цикл, который задает количество кластеров k
для каждой итерации. Для каждого постоянного числа кластеров передайте соответствующий clustf
функционируйте к crossval
. Поскольку crossval
выполняет 10-кратную перекрестную проверку по умолчанию, программное обеспечение вычисляет 10 сумм квадратов расстояний, один для каждого раздела обучения и тестовых данных. Возьмите сумму тех значений; результатом является перекрестная подтвержденная сумма квадратов расстояний для данного количества кластеров.
rng('default') % For reproducibility cvdist = zeros(5,1); for k = 1:10 fun = @(Xtrain,Xtest)clustf(Xtrain,Xtest,k); distances = crossval(fun,X); cvdist(k) = sum(distances); end
Постройте перекрестную подтвержденную сумму квадратов расстояний для каждого количества кластеров.
plot(cvdist) xlabel('Number of Clusters') ylabel('CV Sum of Squared Distances')
В общем случае при определении, сколько кластеров, чтобы использовать, рассмотрите самое большое количество кластеров, которое соответствует значительному уменьшению в перекрестной подтвержденной сумме квадратов расстояний. В данном примере использование двух или трех кластеров кажется соответствующим, но использование больше чем трех кластеров не делает.
Этот код создает функциональный clustf
.
function distances = clustf(Xtrain,Xtest,k) [Ztrain,Zmean,Zstd] = zscore(Xtrain); [~,C] = kmeans(Ztrain,k); % Creates k clusters Ztest = (Xtest-Zmean)./Zstd; d = pdist2(C,Ztest,'euclidean','Smallest',1); distances = sum(d.^2); end
Вычислите среднюю абсолютную погрешность модели регрессии при помощи 10-кратной перекрестной проверки.
Загрузите carsmall
набор данных. Задайте Acceleration
и Displacement
переменные как предикторы и Weight
переменная как ответ.
load carsmall
X1 = Acceleration;
X2 = Displacement;
y = Weight;
Создайте пользовательский функциональный regf
(показанный в конце этого примера). Эта функция подбирает модель регрессии к обучающим данным и затем вычисляет предсказанные автомобильные веса на наборе тестов. Функция сравнивает предсказанные автомобильные значения веса с истинными значениями, и затем вычисляет среднюю абсолютную погрешность (MAE) и MAE, настроенный к области значений автомобильных весов набора тестов.
Примечание: Если вы используете файл live скрипта для этого примера, regf
функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB®.
По умолчанию, crossval
выполняет 10-кратную перекрестную проверку. Для каждого из 10 разделов набора обучающих данных и набора тестов данных в X1
x2
, и y
, вычислите MAE и настроенные значения MAE с помощью regf
функция. Найдите средний MAE и означайте настроенный MAE.
rng('default') % For reproducibility values = crossval(@regf,X1,X2,y)
values = 10×2
319.2261 0.1132
342.3722 0.1240
214.3735 0.0902
174.7247 0.1128
189.4835 0.0832
249.4359 0.1003
194.4210 0.0845
348.7437 0.1700
283.1761 0.1187
210.7444 0.1325
mean(values)
ans = 1×2
252.6701 0.1129
Этот код создает функциональный regf
.
function errors = regf(X1train,X2train,ytrain,X1test,X2test,ytest) tbltrain = table(X1train,X2train,ytrain, ... 'VariableNames',{'Acceleration','Displacement','Weight'}); tbltest = table(X1test,X2test,ytest, ... 'VariableNames',{'Acceleration','Displacement','Weight'}); mdl = fitlm(tbltrain,'Weight ~ Acceleration + Displacement'); yfit = predict(mdl,tbltest); MAE = mean(abs(yfit-tbltest.Weight)); adjMAE = MAE/range(tbltest.Weight); errors = [MAE adjMAE]; end
Вычислите misclassification ошибку дерева классификации при помощи анализа главных компонентов (PCA) и 5-кратной перекрестной проверки.
Загрузите fisheriris
набор данных. meas
матрица содержит цветочные измерения для 150 различных цветов. species
списки переменных разновидности для каждого цветка.
load fisheriris
Создайте пользовательский функциональный classf
(показанный в конце этого примера). Эта функция соответствует дереву классификации к обучающим данным и затем классифицирует тестовые данные. Используйте PCA в функции, чтобы сократить количество предикторов, используемых, чтобы создать древовидную модель.
Примечание: Если вы используете файл live скрипта для этого примера, classf
функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB®.
Создайте cvpartition
объект для стратифицированной 5-кратной перекрестной проверки. По умолчанию, cvpartition
гарантирует, что наборы обучающих данных и наборы тестов имеют примерно те же пропорции цветочных разновидностей.
rng('default') % For reproducibility cvp = cvpartition(species,'KFold',5);
Вычислите 5-кратную перекрестную проверку misclassification ошибка для дерева классификации с данными о предикторе meas
и переменная отклика species
.
cvError = crossval('mcr',meas,species,'Predfun',@classf,'Partition',cvp)
cvError = 0.1067
Этот код создает функциональный classf
.
function yfit = classf(Xtrain,ytrain,Xtest) % Standardize the training predictor data. Then, find the % principal components for the standardized training predictor % data. [Ztrain,Zmean,Zstd] = zscore(Xtrain); [coeff,scoreTrain,~,~,explained,mu] = pca(Ztrain); % Find the lowest number of principal components that account % for at least 95% of the variability. n = find(cumsum(explained)>=95,1); % Find the n principal component scores for the standardized % training predictor data. Train a classification tree model % using only these scores. scoreTrain95 = scoreTrain(:,1:n); mdl = fitctree(scoreTrain95,ytrain); % Find the n principal component scores for the transformed % test data. Classify the test data. Ztest = (Xtest-Zmean)./Zstd; scoreTest95 = (Ztest-mu)*coeff(:,1:n); yfit = predict(mdl,scoreTest95); end
Создайте матрицу беспорядка из 10-кратных результатов перекрестной проверки модели дискриминантного анализа.
Примечание: используйте classify
когда учебная скорость является беспокойством. В противном случае используйте fitcdiscr
создать модель дискриминантного анализа. Для примера, который показывает тот же рабочий процесс этим примером, но использует fitcdiscr
, смотрите Создают Матрицу Беспорядка Используя Предсказания Перекрестной проверки.
Загрузите fisheriris
набор данных. X
содержит цветочные измерения для 150 различных цветов и y
перечисляет разновидности для каждого цветка. Создайте переменную order
это задает порядок цветочных разновидностей.
load fisheriris
X = meas;
y = species;
order = unique(y)
order = 3x1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
Создайте указатель на функцию под названием func
для функции, которая завершает следующие шаги:
Возьмите в обучающих данных (Xtrain
и ytrain
) и тестовые данные (Xtest
и ytest
).
Используйте обучающие данные, чтобы создать модель дискриминантного анализа, которая классифицирует новые данные (Xtest
). Создайте эту модель и классифицируйте новые данные при помощи classify
функция.
Сравните истинные классы тестовых данных (ytest
) к предсказанным значениям тестовых данных, и создают матрицу беспорядка результатов при помощи confusionmat
функция. Задайте порядок класса при помощи 'Order',order
.
func = @(Xtrain,ytrain,Xtest,ytest)confusionmat(ytest, ... classify(Xtest,Xtrain,ytrain),'Order',order);
Создайте cvpartition
объект для стратифицированной 10-кратной перекрестной проверки. По умолчанию, cvpartition
гарантирует, что наборы обучающих данных и наборы тестов имеют примерно те же пропорции цветочных разновидностей.
rng('default') % For reproducibility cvp = cvpartition(y,'Kfold',10);
Вычислите 10 матриц беспорядка набора тестов для каждого раздела данных о предикторе X
и переменная отклика y
. Каждая строка confMat
соответствует матричным результатам беспорядка для одного набора тестов. Агрегируйте результаты и создайте итоговую матрицу беспорядка cvMat
.
confMat = crossval(func,X,y,'Partition',cvp);
cvMat = reshape(sum(confMat),3,3)
cvMat = 3×3
50 0 0
0 48 2
0 1 49
Постройте матрицу беспорядка как матричный график беспорядка при помощи confusionchart
.
confusionchart(cvMat,order)
criterion
— Тип ошибочной оценки'mse'
| 'mcr'
Тип ошибки оценивает в виде любого 'mse'
или 'mcr'
.
Значение | Описание |
---|---|
'mse' | Среднеквадратическая ошибка (MSE) — Подходящий для алгоритмов регрессии только |
'mcr' | Уровень Misclassification или пропорция неправильно классифицированных наблюдений — Подходящий для алгоритмов классификации только |
X
— Набор данныхНабор данных в виде вектор-столбца, матрицы или массива. Строки X
соответствуйте наблюдениям и столбцам X
обычно соответствуйте переменным. Если вы передаете несколько наборов данных X1,...,XN
к crossval
, затем все наборы данных должны иметь одинаковое число строк.
Типы данных: single
| double
| logical
| char
| string
| cell
| categorical
y
— Данные об ответеДанные об ответе в виде вектор-столбца или символьного массива. Строки y
соответствуйте наблюдениям и y
должен иметь одинаковое число строк как данные о предикторе X
или X1,...,XN
.
Типы данных: single
| double
| logical
| char
| string
| cell
| categorical
predfun
— Функция предсказанияФункция предсказания в виде указателя на функцию. Необходимо создать эту функцию как анонимную функцию, функцию, определяемую в конце.m или .mlx файла, содержащего остальную часть кода или файла на пути MATLAB®.
Эта таблица описывает необходимый синтаксис функций, учитывая тип данных о предикторе, переданных crossval
.
Значение | Данные о предикторе | Синтаксис функций |
---|---|---|
@myfunction | X |
function yfit = myfunction(Xtrain,ytrain,Xtest) % Calculate predicted response ... end
|
@myfunction | X1,...,XN |
function yfit = myfunction(X1train,...,XNtrain,ytrain,X1test,...,XNtest) % Calculate predicted response ... end
|
Пример: @(Xtrain,ytrain,Xtest)(Xtest*regress(ytrain,Xtrain));
Типы данных: function_handle
fun
— Функция, чтобы перекрестный подтвердитьФункция, чтобы перекрестный подтвердить в виде указателя на функцию. Необходимо создать эту функцию как анонимную функцию, функцию, определяемую в конце.m или .mlx файла, содержащего остальную часть кода или файла на пути MATLAB.
Эта таблица описывает необходимый синтаксис функций, учитывая тип данных, переданных crossval
.
Значение | Данные | Синтаксис функций |
---|---|---|
@myfunction | X |
function value = myfunction(Xtrain,Xtest) % Calculation of value ... end
|
@myfunction | X1,...,XN |
function value = myfunction(X1train,...,XNtrain,X1test,...,XNtest) % Calculation of value ... end
|
Типы данных: function_handle
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
crossval('mcr',meas,species,'Predfun',@classf,'KFold',5,'Stratify',species)
задает, чтобы вычислить стратифицированную 5-кратную перекрестную проверку misclassification уровень для classf
функция с данными о предикторе meas
и переменная отклика species
.'Holdout'
— Часть или количество наблюдений используются для валидации затяжки[]
(значение по умолчанию) | скалярное значение в области значений (0,1) | положительный целочисленный скалярЧасть или количество наблюдений, используемых для валидации затяжки в виде разделенной запятой пары, состоящей из 'Holdout'
и скалярное значение в области значений (0,1) или положительный целочисленный скаляр.
Если Holdout
значение p
скаляр в области значений (0,1), затем crossval
случайным образом выбирает и резервирует приблизительно p*100
% из наблюдений как тестовые данные.
Если Holdout
значение p
положительный целочисленный скаляр, затем crossval
случайным образом выбирает и резервирует p
наблюдения как тестовые данные.
В любом случае, crossval
затем обучает модель, заданную любым fun
или predfun
использование остальной части данных. Наконец, функция использует тестовые данные наряду с обученной моделью, чтобы вычислить любой values
или err
.
Можно использовать только один из этих четырех аргументов пары "имя-значение": Holdout
, KFold
, Leaveout
, и Partition
.
Пример: 'Holdout',0.3
Пример: 'Holdout',50
Типы данных: single
| double
'KFold'
— Количество сгибов
(значение по умолчанию) | положительный целочисленный скаляр, больше, чем 1Количество сгибов для перекрестной проверки k-сгиба в виде разделенной запятой пары, состоящей из 'KFold'
и положительный целочисленный скаляр, больше, чем 1.
Если вы задаете 'KFold',k
то crossval
случайным образом делит данные в k
наборы. Для каждого набора функция резервирует набор как тестовые данные и обучает модель, заданную любым fun
или predfun
использование другого k
– 1 набор. crossval
затем использует тестовые данные наряду с обученной моделью, чтобы вычислить любой values
или err
.
Можно использовать только один из этих четырех аргументов пары "имя-значение": Holdout
, KFold
, Leaveout
, и Partition
.
Пример: 'KFold',5
Типы данных: single
| double
'Leaveout'
— Перекрестная проверка "Пропускает один"[]
(значение по умолчанию) | 1
Перекрестная проверка "Пропускает один" в виде разделенной запятой пары, состоящей из 'Leaveout'
и 1
.
Если вы задаете 'Leaveout',1
, затем для каждого наблюдения, crossval
резервирует наблюдение как тестовые данные и обучает модель, заданную любым fun
или predfun
использование других наблюдений. Функция затем использует тестовое наблюдение наряду с обученной моделью, чтобы вычислить любой values
или err
.
Можно использовать только один из этих четырех аргументов пары "имя-значение": Holdout
, KFold
, Leaveout
, и Partition
.
Пример: 'Leaveout',1
Типы данных: single
| double
'MCReps'
— Количество повторений Монте-Карло
(значение по умолчанию) | положительный целочисленный скалярКоличество повторений Монте-Карло для валидации в виде разделенной запятой пары, состоящей из 'MCReps'
и положительный целочисленный скаляр. Если первый вход crossval
'mse'
или 'mcr'
(см. criterion
то crossval
возвращает средний MSE или misclassification уровень через все повторения Монте-Карло. В противном случае, crossval
конкатенирует значения от всех повторений Монте-Карло по первому измерению.
Если вы задаете оба Partition
и MCReps
, затем первое повторение Монте-Карло использует информацию о разделе в cvpartition
объект и программное обеспечение вызывают repartition
возразите функции, чтобы сгенерировать новые разделы для каждого из остающихся повторений.
Пример: 'MCReps',5
Типы данных: single
| double
'Partition'
— Раздел перекрестной проверки[]
(значение по умолчанию) | cvpartition
объект разделаРаздел перекрестной проверки в виде разделенной запятой пары, состоящей из 'Partition'
и cvpartition
объект раздела, созданный cvpartition
. Объект раздела задает тип перекрестной проверки и индексации для наборов обучающих данных и наборов тестов.
Когда вы используете crossval
, вы не можете задать оба Partition
и Stratify
. Вместо этого непосредственно задайте стратифицированный раздел, когда вы создадите cvpartition
объект раздела.
Можно использовать только один из этих четырех аргументов пары "имя-значение": Holdout
, KFold
, Leaveout
, и Partition
.
'Stratify'
— Переменные группы определения используются для стратификацииПеременная, задающая группы, используемые для стратификации в виде разделенной запятой пары, состоящей из 'Stratify'
и вектор-столбец с одинаковым числом строк как данные X
или X1,...,XN
.
Когда вы задаете Stratify
, и наборы обучающих данных и наборы тестов имеют примерно те же пропорции класса как в Stratify
вектор. Программное обеспечение обрабатывает NaN
s, пустые символьные вектора, пустые строки, <missing>
значения и <undefined>
значения в Stratify
как пропускающий значения данных, и игнорирует соответствующие строки данных.
Хорошая практика должна использовать стратификацию, когда вы используете перекрестную проверку с алгоритмами классификации. В противном случае некоторые наборы тестов не могут включать наблюдения для всех классов.
Когда вы используете crossval
, вы не можете задать оба Partition
и Stratify
. Вместо этого непосредственно задайте стратифицированный раздел, когда вы создадите cvpartition
объект раздела.
Типы данных: single
| double
| logical
| string
| cell
| categorical
'Options'
— Опции для выполнения в параллели и установки случайных потоковОпции для рабочих расчетов в параллели и установки случайных потоков в виде структуры. Создайте Options
структура с statset
. Эта таблица приводит поля опции и их значения.
Имя поля | Значение | Значение по умолчанию |
---|---|---|
UseParallel | Установите это значение к true запускать расчеты параллельно. | false |
UseSubstreams | Установите это значение к Чтобы вычислить восстанавливаемо, установите | false |
Streams | Задайте это значение как a RandStream возразите или массив ячеек, состоящий из одного такого объекта. | Если вы не задаете Streams то crossval использует поток по умолчанию. |
Примечание
Вам нужен Parallel Computing Toolbox™, чтобы запустить расчеты параллельно.
Пример: 'Options',statset('UseParallel',true)
Типы данных: struct
err
— Среднеквадратическая ошибка или misclassification уровеньСреднеквадратическая ошибка или misclassification уровень, возвращенный в виде числа. Тип ошибки зависит от criterion
значение.
values
— Значения потерьЗначения потерь, возвращенные как вектор-столбец или матрица. Каждая строка values
соответствует выходу fun
для одного раздела обучения и тестовых данных.
Если выходной параметр, возвращенный fun
многомерно, затем crossval
изменяет выход и вмещает его в одну строку values
. Для примера смотрите, Создают Матрицу Беспорядка Используя Перекрестную проверку.
Хорошая практика должна использовать стратификацию (см. Stratify
) когда вы используете перекрестную проверку с алгоритмами классификации. В противном случае некоторые наборы тестов не могут включать наблюдения для всех классов.
predfun
Когда вы используете predfun
, crossval
функция обычно выполняет 10-кратную перекрестную проверку можно следующим образом:
Разделите наблюдения в данных о предикторе X
и переменная отклика y
в 10 групп, каждая из которых имеет приблизительно то же количество наблюдений.
Используйте последние девять групп наблюдений, которые обучат модель, как задано в predfun
. Используйте первую группу наблюдений как тестовые данные, передайте тестовые данные о предикторе обученной модели и вычислите ожидаемые значения, как задано в predfun
. Вычислите ошибку, заданную criterion
.
Используйте первую группу и последние восемь групп наблюдений, которые обучат модель, как задано в predfun
. Используйте вторую группу наблюдений как тестовые данные, передайте тестовые данные обученной модели и вычислите ожидаемые значения, как задано в predfun
. Вычислите ошибку, заданную criterion
.
Продолжите подобным образом, пока каждая группа наблюдений не будет использоваться в качестве тестовых данных точно однажды.
Возвратите оценку средней погрешности как скалярный err
.
fun
Когда вы используете fun
, crossval
функция обычно выполняет 10-кратную перекрестную проверку можно следующим образом:
Разделите данные в X
в 10 групп, каждая из которых имеет приблизительно то же количество наблюдений.
Используйте последние девять групп данных, которые обучат модель, как задано в fun
. Используйте первую группу данных как набор тестов, передайте набор тестов обученной модели и вычислите некоторое значение (например, потеря), как задано в fun
.
Используйте первую группу и последние восемь групп данных, которые обучат модель, как задано в fun
. Используйте вторую группу данных как набор тестов, передайте набор тестов обученной модели и вычислите некоторое значение, как задано в fun
.
Продолжите подобным образом, пока каждая группа данных не будет использоваться в качестве набора тестов точно однажды.
Возвратите 10 вычисленных значений как векторный values
.
Многие классификация и функции регрессии позволяют вам выполнять перекрестную проверку непосредственно.
То, когда вы используете подгонку, функционирует такой как fitcsvm
, fitctree
, и fitrtree
, можно задать опции перекрестной проверки при помощи аргументов пары "имя-значение". В качестве альтернативы можно сначала создать модели с этими подходящими функциями и затем создать разделенный объект при помощи crossval
объектная функция. Используйте kfoldLoss
и kfoldPredict
возразите функциям, чтобы вычислить потерю и ожидаемые значения для разделенного объекта. Для получения дополнительной информации смотрите ClassificationPartitionedModel
и RegressionPartitionedModel
.
Можно также задать опции перекрестной проверки, когда вы выполняете лассо или эластичное сетевое использование регуляризации lasso
и lassoglm
.
Чтобы запуститься параллельно, задайте 'Options'
аргумент значения имени в вызове этой функции и набора 'UseParallel'
поле структуры опций к true
использование statset
.
Например: 'Options',statset('UseParallel',true)
Для получения дополнительной информации о параллельных вычислениях, смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
classify
| confusionmat
| cvpartition
| kmeans
| pca
| regress
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.