Классификационные поля для Гауссовой модели классификации ядра
возвращает классификационные поля для обученного классификатора ядра m
= margin(Mdl
,Tbl
,ResponseVarName
)Mdl
использование данных предиктора в таблице Tbl
и метки классов в Tbl.ResponseVarName
.
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b'
) или хорошо ('g'
).
load ionosphere
Разделите набор данных на наборы для обучения и тестирования. Укажите 30% -ная выборка удержания для тестового набора.
rng('default') % For reproducibility Partition = cvpartition(Y,'Holdout',0.30); trainingInds = training(Partition); % Indices for the training set testInds = test(Partition); % Indices for the test set
Обучите модель классификации двоичных ядер с помощью набора обучающих данных.
Mdl = fitckernel(X(trainingInds,:),Y(trainingInds));
Оцените поля набора обучающих данных и поля набора тестов.
mTrain = margin(Mdl,X(trainingInds,:),Y(trainingInds)); mTest = margin(Mdl,X(testInds,:),Y(testInds));
Постройте график обоих наборов полей с помощью прямоугольных графиков.
boxplot([mTrain; mTest],[zeros(size(mTrain,1),1); ones(size(mTest,1),1)], ... 'Labels',{'Training set','Test set'}); title('Training-Set and Test-Set Margins')
Распределение запаса набора обучающих данных расположено выше, чем распределение запаса тестового набора.
Выполните выбор признаков путем сравнения полей набора тестов из нескольких моделей. Исходя исключительно из этого критерия, классификатор с большими полями является лучшим классификатором.
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b'
) или хорошо ('g'
).
load ionosphere
Разделите набор данных на наборы для обучения и тестирования. Задайте 15% -ную выборку удержания для тестового набора.
rng('default') % For reproducibility Partition = cvpartition(Y,'Holdout',0.15); trainingInds = training(Partition); % Indices for the training set XTrain = X(trainingInds,:); YTrain = Y(trainingInds); testInds = test(Partition); % Indices for the test set XTest = X(testInds,:); YTest = Y(testInds);
Случайным образом выберите 10% переменных предиктора.
p = size(X,2); % Number of predictors
idxPart = randsample(p,ceil(0.1*p));
Обучите две модели классификации двоичных ядер: одну, которая использует все предикторы, и одну, которая использует случайные 10%.
Mdl = fitckernel(XTrain,YTrain); PMdl = fitckernel(XTrain(:,idxPart),YTrain);
Mdl
и PMdl
являются ClassificationKernel
модели.
Оцените поля набора тестов для каждого классификатора.
fullMargins = margin(Mdl,XTest,YTest); partMargins = margin(PMdl,XTest(:,idxPart),YTest);
Постройте график распределения наборов полей с помощью прямоугольных графиков.
boxplot([fullMargins partMargins], ... 'Labels',{'All Predictors','10% of the Predictors'}); title('Test-Set Margins')
Маржинальное распределение PMdl
расположен выше маржевого распределения Mdl
. Поэтому PMdl
модель является лучшим классификатором.
Mdl
- Модель классификации двоичных ядерClassificationKernel
объект моделиМодель классификации двоичных ядер, заданная как ClassificationKernel
объект модели. Можно создать ClassificationKernel
моделировать объект используя fitckernel
.
X
- Данные предиктораДанные предиктора, заданные как n -by p числовая матрица, где n - количество наблюдений, а p - количество предикторов, используемых для обучения Mdl
.
Длина Y
и количество наблюдений в X
должно быть равным.
Типы данных: single
| double
Y
- Метки классовМетки классов, заданные как категориальные символьные или строковые массивы; логический или числовой вектор; или массив ячеек из векторов символов.
Тип данных Y
должно совпадать с типом данных Mdl.ClassNames
. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)
Различные классы в Y
должен быть подмножеством Mdl.ClassNames
.
Если Y
является символьный массив, тогда каждый элемент должен соответствовать одной строке массива.
Длина Y
должно быть равно количеству наблюдений в X
или Tbl
.
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
Tbl
- Выборочные данныеВыборочные данные, используемых для обучения модели, заданная как таблица. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Опционально Tbl
может содержать дополнительные столбцы для переменной отклика и весов наблюдений. Tbl
должны содержать все предикторы, используемые для обучения Mdl
. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.
Если Tbl
содержит переменную отклика, используемую для обучения Mdl
, тогда вам не нужно указывать ResponseVarName
или Y
.
Если вы обучаете Mdl
используя выборочные данные, содержащуюся в таблице, затем входные данные для margin
также должно быть в таблице.
ResponseVarName
- Имя переменной откликаTbl
Имя переменной отклика, заданное как имя переменной в Tbl
. Если Tbl
содержит переменную отклика, используемую для обучения Mdl
, тогда вам не нужно указывать ResponseVarName
.
Если вы задаете ResponseVarName
, затем необходимо задать его как вектор символов или строковый скаляр. Для примера, если переменная отклика сохранена как Tbl.Y
, затем задайте ResponseVarName
как 'Y'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая Tbl.Y
, как предикторы.
Переменная отклика должна быть категориальными символьными или строковыми массивами; логический или числовой вектор; или массив ячеек из векторов символов. Если переменная отклика является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Типы данных: char
| string
m
- Классификационные поляКлассификационные поля, возвращенные как n-на-1 числовой вектор-столбец, где n - количество наблюдений в X
.
Для каждого наблюдения classification margin двоичной классификации является различие между классификационной оценкой для истинного класса и классификационной оценкой для ложного класса.
Программное обеспечение определяет классификационный запас для двоичной классификации как
x является наблюдением. Если истинная метка x является положительным классом, то y равен 1, и -1 в противном случае. f (x) является классификационной оценкой положительного класса для x наблюдений. Классификационное поле обычно определяется как m = y f (x).
Если поля находятся в одной шкале, то они служат классификационной доверительной мерой. Среди нескольких классификаторов лучше те, которые дают большую маржу.
Для моделей классификации ядра необработанный classification score для классификации x наблюдений, вектора-строки, в положительный класс задан как
является преобразованием наблюдения для расширения функции.
β - предполагаемый вектор-столбец коэффициентов.
b - предполагаемое скалярное смещение.
Необработанная классификационная оценка для классификации x в отрицательный класс - − f (x). Программа классифицирует наблюдения в класс, который дает положительный счет.
Если модель классификации ядра состоит из обучающихся логистической регрессии, то программное обеспечение применяет 'logit'
преобразование счета в необработанные классификационные оценки (см. ScoreTransform
).
Указания и ограничения по применению:
margin
не поддерживает высокие table
данные.
Для получения дополнительной информации см. Раздел «Длинные массивы»
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.