Перекрестный подтвердите функцию с помощью перекрестной подтвержденной модели ECOC
Обучите мультикласс классификатор ECOC, и затем перекрестный подтвердите модель с помощью пользовательской функции потерь k-сгиба.
Загрузите ирисовый набор данных Фишера. Задайте данные о предикторе X, данные об ответе Y, и порядок классов в Y.
load fisheriris X = meas; Y = categorical(species); classOrder = unique(Y); % Class order rng(1); % For reproducibility
Обучите и перекрестный подтвердите модель ECOC с помощью двоичных классификаторов машины опорных векторов (SVM). Стандартизируйте предикторы с помощью шаблона SVM и задайте порядок класса.
t = templateSVM('Standardize',1); CVMdl = fitcecoc(X,Y,'CrossVal','on','Learners',t,... 'ClassNames',classOrder);
CVMdl ClassificationPartitionedECOC модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку.
Вычислите ошибку классификации (пропорция неправильно классифицированных наблюдений) для наблюдений сгиба валидации.
L = kfoldLoss(CVMdl)
L = 0.0400
Исследуйте результат когда стоимость неправильной классификации цветка как versicolor 10 и стоимостью любой другой ошибки является 1. Запишите функции с именем noversicolor это присваивает стоимость 1 для общего misclassification и стоимости 10 для неправильной классификации цветка как versicolor.
Если вы используете файл live скрипта в этом примере, noversicolor функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB.
Вычислите среднее значение misclassification ошибка с noversicolor стоимость.
foldLoss = kfoldfun(CVMdl,@noversicolor); mean(foldLoss)
ans = 0.0667
Этот код создает функциональный noversicolor.
function averageCost = noversicolor(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest) % noversicolor: Example custom cross-validation function that assigns a cost of % 10 for misclassifying versicolor irises and a cost of 1 for misclassifying % 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 = single(cost/numel(Ytest)); % Average error end
CVMdl — Перекрестная подтвержденная модель ECOCClassificationPartitionedECOC модельПерекрестная подтвержденная модель ECOC, заданная как ClassificationPartitionedECOC модель.
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 числовая матрица с одной строкой на сгиб.
ClassificationECOC | ClassificationPartitionedECOC | crossval | fitcecoc | kfoldEdge | kfoldLoss | kfoldMargin | kfoldPredict
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.