Оцените потери с помощью перекрестной проверки
возвращает 10-кратную оценку ошибки перекрестной валидации для функции err
= crossval(criterion
,X
,y
,'Predfun',predfun
)predfun
на основе заданного criterion
, либо 'mse'
(средняя квадратичная невязка) или 'msc'
(коэффициент неправильной классификации). Строки 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
Вычислите ошибку неправильной классификации модели логистической регрессии, обученной на числовых и категориальных данных предиктора, с помощью 10-кратной перекрестной валидации.
Загрузите patients
набор данных. Задайте числовые переменные Diastolic
и Systolic
и категориальную переменную Gender
в качестве предикторов и задайте Smoker
как переменная отклика.
load patients
X1 = Diastolic;
X2 = categorical(Gender);
X3 = Systolic;
y = Smoker;
Создайте пользовательскую функцию classf
(показан в конце этого примера). Эта функция подходит к логистической регрессионой модели для обучающих данных, а затем классифицирует тестовые данные.
Примечание: Если вы используете файл live скрипта для этого примера, classf
функция уже включена в конец файла. В противном случае вам нужно создать эту функцию в конце файла .m или добавить ее в качестве файла по пути MATLAB ®.
Вычислите 10-кратную ошибку неправильной классификации перекрестной валидации для модели с данными предиктора 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
Вычислите ошибку неправильной классификации дерева классификации с помощью анализа основных компонентов (PCA) и 5-кратной перекрестной валидации.
Загрузите fisheriris
набор данных. The meas
матрица содержит измерения цветов для 150 различных цветов. The species
Переменная приводит список видов для каждого цветка.
load fisheriris
Создайте пользовательскую функцию classf
(показан в конце этого примера). Эта функция подходит для дерева классификации к обучающим данным, а затем классифицирует тестовые данные. Используйте PCA внутри функции, чтобы уменьшить количество предикторов, используемых для создания древовидной модели.
Примечание: Если вы используете файл live скрипта для этого примера, classf
функция уже включена в конец файла. В противном случае вам нужно создать эту функцию в конце файла .m или добавить ее в качестве файла по пути MATLAB ®.
Создайте cvpartition
объект для стратифицированной 5-кратной перекрестной проверки. По умолчанию cvpartition
гарантирует, что обучающие и тестовые наборы имеют примерно одинаковые пропорции видов цветов.
rng('default') % For reproducibility cvp = cvpartition(species,'KFold',5);
Вычислите 5-кратную ошибку неправильной классификации перекрестной валидации для дерева классификации с данными предиктора 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' | Скорость неправильной классификации или доля неправильно классифицированных наблюдений - подходит только для алгоритмов классификации |
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-кратной степени искажения перекрестной проверки для 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'
- Количество складок10
(по умолчанию) | положительный целочисленный скаляр больше 1Количество складок для перекрестной проверки k-fold, заданное как разделенная разделенными запятой парами, состоящая из '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'
- Количество повторений на Монте-Карло1
(по умолчанию) | положительный целочисленный скалярКоличество повторений Монте-Карло для валидации, заданное как разделенная разделенными запятой парами, состоящая из 'MCReps'
и положительный целочисленный скаляр. Если первый вход crossval
является 'mse'
или 'mcr'
(см. criterion
), затем crossval
возвращает среднюю скорость MSE или неправильной классификации во всех повторениях Монте-Карло. В противном случае, crossval
объединяет значения из всех повторений Монте-Карло по первой размерности.
Если вы задаете оба Partition
и MCReps
, затем первый повтор Монте-Карло использует информацию о разбиении в cvpartition
Объекты, и программное обеспечение вызывает repartition
функция объекта для генерации новых разделов для каждого из остальных повторений.
Пример: 'MCReps',5
Типы данных: single
| double
'Partition'
- Раздел перекрестной проверки[]
(по умолчанию) | cvpartition
Объект разделаРаздел перекрестной проверки, заданный как разделенная разделенными запятой парами, состоящая из 'Partition'
и a 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 | Задайте это значение как RandStream объект или массив ячеек, состоящий из одного такого объекта. | Если вы не задаете Streams , затем crossval использует поток по умолчанию. |
Примечание
Вам нужен Parallel Computing Toolbox™, чтобы запускать расчеты параллельно.
Пример: 'Options',statset('UseParallel',true)
Типы данных: struct
err
- Средняя квадратичная невязка или вероятность неправильной классификацииСредняя квадратичная невязка или неправильная классификация, возвращенная как числовой скаляр. Тип ошибки зависит от 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
.
Многие функции классификации и регрессии позволяют вам выполнять перекрестную валидацию непосредственно.
Когда вы используете функции fit, такие как 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.