Функция перекрестной проверки для классификации
Обучите классификатор дерева классификации, а затем выполните перекрестную проверку с помощью пользовательской k-кратной функции потерь.
Загрузите набор данных радужки Фишера.
load fisheririsПодготовка классификатора дерева классификации.
Mdl = fitctree(meas,species);
Mdl является ClassificationTree модель.
Перекрестная проверка Mdl с использованием 10-кратной перекрестной проверки по умолчанию. Вычислите ошибку классификации (долю неправильно классифицированных наблюдений) для кратных проверке наблюдений.
rng(1); % For reproducibility CVMdl = crossval(Mdl); L = kfoldLoss(CVMdl,'LossFun','classiferror')
L = 0.0467
Изучите результат, когда стоимость неправильной классификации цветка как versicolor является 10, и стоимость любой другой ошибочной классификации 1. Создание пользовательской функции noversicolor (показано в конце этого примера). Эта функция присваивает стоимость 10 за неправильную классификацию цветка как versicolor, и стоимость 1 для любой другой неправильной классификации.
Вычислите среднюю ошибку неправильной классификации с помощью noversicolor стоимость.
mean(kfoldfun(CVMdl,@noversicolor))
ans = 0.2267
Этот код создает функцию noversicolor.
function averageCost = noversicolor(CMP,~,~,~,Xtest,Ytest,~) % noversicolor Example custom cross-validation function % Attributes a cost of 10 for misclassifying versicolor irises, and 1 for % the other irises. This example function requires the fisheriris data % set. Ypredict = predict(CMP,Xtest); misclassified = not(strcmp(Ypredict,Ytest)); % Different result classifiedAsVersicolor = strcmp(Ypredict,'versicolor'); % Index of bad decisions cost = sum(misclassified) + ... 9*sum(misclassified & classifiedAsVersicolor); % Total differences averageCost = cost/numel(Ytest); % Average error end
CVMdl - Перекрестная проверка моделиClassificationPartitionedModel объект | ClassificationPartitionedEnsemble объект | ClassificationPartitionedGAM объектМодель с перекрестной проверкой, заданная как ClassificationPartitionedModel объект, ClassificationPartitionedEnsemble объект, или ClassificationPartitionedGAM объект.
fun - Перекрестная проверка функцииФункция перекрестной проверки, заданная как дескриптор функции. fun имеет синтаксис:
testvals = fun(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest)
CMP является компактной моделью, хранящейся в одном элементе CVMdl.Trained собственность.
Xtrain - обучающая матрица значений предиктора.
Ytrain - обучающий массив значений ответа.
Wtrain - учебные веса для наблюдений.
Xtest и Ytest - тестовые данные с соответствующими весами Wtest.
Возвращенное значение testvals должен иметь одинаковый размер по всем складкам.
Типы данных: function_handle
vals - Результаты перекрестной проверкиРезультаты перекрестной проверки, возвращенные в виде числовой матрицы. vals содержит массивы testvals вывод, сцепленный по вертикали по всем складкам. Например, если testvals от каждого сворачивания - числовой вектор длины N, kfoldfun возвращает KFoldоколо-N числовая матрица с одной строкой на единицу.
Типы данных: double
ClassificationPartitionedModel | kfoldEdge | kfoldLoss | kfoldMargin | kfoldPredict
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.