Край классификации для классификатора нейронных сетей
возвращает край классификации для обученного классификатора нейронной сети e = edge(Mdl,Tbl,ResponseVarName)Mdl использование данных предиктора в таблице Tbl и метки классов в ResponseVarName табличная переменная.
e возвращается в виде скалярного значения, представляющего среднее значение полей классификации.
указывает параметры, использующие один или несколько аргументов «имя-значение» в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно указать, что столбцы в данных предиктора соответствуют наблюдениям или предоставляют веса наблюдений.e = edge(___,Name,Value)
Вычислите границу классификации тестового набора классификатора нейронной сети.
Загрузить patients набор данных. Создайте таблицу из набора данных. Каждая строка соответствует одному пациенту, и каждый столбец соответствует диагностической переменной. Используйте Smoker переменная в качестве ответной переменной, а остальные переменные в качестве предикторов.
load patients
tbl = table(Diastolic,Systolic,Gender,Height,Weight,Age,Smoker);Разделение данных на набор обучения tblTrain и набор тестов tblTest с использованием стратифицированной секции удержания. Программное обеспечение резервирует приблизительно 30% наблюдений для набора тестовых данных и использует остальные наблюдения для набора обучающих данных.
rng("default") % For reproducibility of the partition c = cvpartition(tbl.Smoker,"Holdout",0.30); trainingIndices = training(c); testIndices = test(c); tblTrain = tbl(trainingIndices,:); tblTest = tbl(testIndices,:);
Обучение нейросетевого классификатора с помощью обучающего набора. Укажите Smoker столбец tblTrain в качестве переменной ответа. Укажите, чтобы стандартизировать числовые предикторы.
Mdl = fitcnet(tblTrain,"Smoker", ... "Standardize",true);
Вычислите границу классификации тестового набора.
e = edge(Mdl,tblTest,"Smoker")e = 0.8657
Среднее значение полей классификации близко к 1, что указывает на то, что модель в целом работает хорошо.
Выбор элементов выполняется путем сравнения полей классификации тестового набора, кромок, ошибок и прогнозов. Сравните метрики тестового набора для модели, обученной с использованием всех предикторов, с метриками тестового набора для модели, обученной с использованием только подмножества предикторов.
Загрузить образец файла fisheriris.csv, которая содержит данные по радужке, включая длину чашелистика, ширину чашелистика, длину лепестка, ширину лепестка и видовой тип. Прочтите файл в таблицу.
fishertable = readtable('fisheriris.csv');Разделение данных на набор обучения trainTbl и набор тестов testTbl с использованием стратифицированной секции удержания. Программное обеспечение резервирует приблизительно 30% наблюдений для набора тестовых данных и использует остальные наблюдения для набора обучающих данных.
rng("default") c = cvpartition(fishertable.Species,"Holdout",0.3); trainTbl = fishertable(training(c),:); testTbl = fishertable(test(c),:);
Обучить один классификатор нейронной сети, используя все предикторы в обучающем наборе, и обучить другой классификатор, используя все предикторы, кроме PetalWidth. Для обеих моделей укажите Species в качестве переменной ответа и стандартизировать предикторы.
allMdl = fitcnet(trainTbl,"Species","Standardize",true); subsetMdl = fitcnet(trainTbl,"Species ~ SepalLength + SepalWidth + PetalLength", ... "Standardize",true);
Рассчитайте поля классификации тестового набора для двух моделей. Поскольку тестовый набор включает только 45 наблюдений, отобразите поля с помощью гистограмм.
Для каждого наблюдения запас классификации представляет собой разницу между показателем классификации для истинного класса и максимальным показателем для ложных классов. Поскольку классификаторы нейронных сетей возвращают оценки классификации, которые являются апостериорными вероятностями, значения полей, близкие к 1, указывают на уверенные классификации, а отрицательные значения полей указывают на неправильные классификации.
tiledlayout(2,1) % Top axes ax1 = nexttile; allMargins = margin(allMdl,testTbl); bar(ax1,allMargins) xlabel(ax1,"Observation") ylabel(ax1,"Margin") title(ax1,"All Predictors") % Bottom axes ax2 = nexttile; subsetMargins = margin(subsetMdl,testTbl); bar(ax2,subsetMargins) xlabel(ax2,"Observation") ylabel(ax2,"Margin") title(ax2,"Subset of Predictors")

Сравните границу классификации тестового набора или среднее значение полей классификации двух моделей.
allEdge = edge(allMdl,testTbl)
allEdge = 0.8198
subsetEdge = edge(subsetMdl,testTbl)
subsetEdge = 0.9556
Основываясь на полях и краях классификации тестового набора, модель, обученная на подмножестве предикторов, по-видимому, превосходит модель, обученную на всех предикторах.
Сравните ошибку классификации тестового набора двух моделей.
allError = loss(allMdl,testTbl); allAccuracy = 1-allError
allAccuracy = 0.9111
subsetError = loss(subsetMdl,testTbl); subsetAccuracy = 1-subsetError
subsetAccuracy = 0.9778
Опять же, модель, обученная с использованием только подмножества предикторов, кажется, работает лучше, чем модель, обученная с использованием всех предикторов.
Визуализация результатов классификации тестового набора с использованием матриц путаницы.
allLabels = predict(allMdl,testTbl);
figure
confusionchart(testTbl.Species,allLabels)
title("All Predictors")
subsetLabels = predict(subsetMdl,testTbl);
figure
confusionchart(testTbl.Species,subsetLabels)
title("Subset of Predictors")
Модель, обученная с использованием всех предикторов, неправильно классифицирует четыре наблюдения тестового набора. Модель, обученная с использованием подмножества предикторов, неправильно классифицирует только одно из наблюдений тестового набора.
Учитывая производительность тестового набора двух моделей, рассмотрите возможность использования модели, обученной с использованием всех предикторов, за исключением PetalWidth.
Mdl - Обученный классификатор нейронных сетейClassificationNeuralNetwork объект модели | CompactClassificationNeuralNetwork объект моделиОбученный классификатор нейронных сетей, указанный как ClassificationNeuralNetwork объект модели или CompactClassificationNeuralNetwork объект модели, возвращенный fitcnet или compactсоответственно.
Tbl - Образцы данныхОбразец данных, указанный как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. Дополнительно, Tbl может содержать дополнительный столбец для переменной ответа. Tbl должен содержать все предикторы, используемые для обучения Mdl. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.
Если Tbl содержит переменную ответа, используемую для обучения Mdl, то указывать не нужно ResponseVarName или Y.
Если вы тренировались Mdl используя образцы данных, содержащиеся в таблице, затем входные данные для edge также должен находиться в таблице.
Если установить 'Standardize',true в fitcnet при обучении Mdlзатем программное обеспечение стандартизирует числовые столбцы данных предиктора с использованием соответствующих средств и стандартных отклонений.
Типы данных: table
ResponseVarName - Имя переменной ответаTblИмя переменной ответа, указанное как имя переменной в Tbl. Если Tbl содержит переменную ответа, используемую для обучения Mdl, то указывать не нужно ResponseVarName.
При указании ResponseVarName, то необходимо указать его как вектор символа или скаляр строки. Например, если переменная ответа сохранена как Tbl.Y, затем укажите ResponseVarName как 'Y'. В противном случае программа обрабатывает все столбцы Tbl, в том числе Tbl.Y, как предикторы.
Переменная ответа должна быть категориальным, символьным или строковым массивом; логический или числовой вектор; или массив ячеек символьных векторов. Если ответная переменная является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Типы данных: char | string
Y - Этикетки классовМетки класса, указанные как категориальный, символьный или строковый массив; логический или числовой вектор; или массив ячеек символьных векторов.
Тип данных Y должен совпадать с типом данных Mdl.ClassNames. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)
Отдельные классы в Y должен быть подмножеством Mdl.ClassNames.
Если Y является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Длина Y должно быть равно количеству наблюдений в X или Tbl.
Типы данных: categorical | char | string | logical | single | double | cell
X - Данные предиктораДанные предиктора, заданные как числовая матрица. По умолчанию edge предполагает, что каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной.
Примечание
Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам, и укажите 'ObservationsIn','columns', то вы можете испытать значительное сокращение времени вычислений.
Длина Y и число замечаний в X должно быть равным.
Если установить 'Standardize',true в fitcnet при обучении Mdlзатем программное обеспечение стандартизирует числовые столбцы данных предиктора с использованием соответствующих средств и стандартных отклонений.
Типы данных: single | double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
edge(Mdl,Tbl,"Response","Weights","W") указывает на использование Response и W переменные в таблице Tbl в качестве меток класса и весов наблюдения соответственно.'ObservationsIn' - Измерение наблюдения данных предиктора'rows' (по умолчанию) | 'columns'Измерение наблюдения данных предиктора, указанное как 'rows' или 'columns'.
Примечание
Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам, и укажите 'ObservationsIn','columns', то вы можете испытать значительное сокращение времени вычислений. Невозможно указать 'ObservationsIn','columns' для данных предиктора в таблице.
Типы данных: char | string
'Weights' - Наблюдательные весаTblВеса наблюдения, указанные как неотрицательный числовой вектор или имя переменной в Tbl. Программное обеспечение взвешивает каждое наблюдение в X или Tbl с соответствующим значением в Weights. Длина Weights должно равняться количеству наблюдений в X или Tbl.
Если входные данные указаны как таблица Tbl, то Weights может быть именем переменной в Tbl содержит числовой вектор. В этом случае необходимо указать Weights в виде вектора символов или строкового скаляра. Например, если вектор весов W хранится как Tbl.W, затем укажите его как 'W'.
По умолчанию Weights является ones(n,1), где n - количество наблюдений в X или Tbl.
Если вы поставляете веса, то edge вычисляет взвешенный край классификации и нормализует веса для суммирования со значением предшествующей вероятности в соответствующем классе.
Типы данных: single | double | char | string
Край классификации - это среднее значение полей классификации или средневзвешенное значение полей классификации при указании Weights.
Один из способов выбора из нескольких классификаторов, например, выбор элемента, - выбор классификатора, который дает наибольший край.
Поле классификации для двоичной классификации является для каждого наблюдения разницей между оценкой классификации для истинного класса и оценкой классификации для ложного класса. Поле классификации для мультиклассовой классификации представляет собой разницу между оценкой классификации для истинного класса и максимальной оценкой для ложных классов.
Если поля находятся на одной шкале (то есть значения баллов основаны на одном и том же преобразовании баллов), то они служат в качестве показателя достоверности классификации. Среди нескольких классификаторов лучше те, которые дают большую маржу.
ClassificationNeuralNetwork | CompactClassificationNeuralNetwork | fitcnet | loss | margin | predict
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.