Классификация обучающих данных с помощью обученного классификатора
задает, включать ли термины взаимодействия в расчеты. Этот синтаксис применяется только к обобщенным аддитивным моделям.label
= resubPredict(Mdl
,'IncludeInteractions',includeInteractions
)
Загрузите fisheriris
набор данных. Создание X
как числовая матрица, которая содержит четыре измерения для 150 ирисов. Создание Y
как массив ячеек из векторов символов, который содержит соответствующие виды радужной оболочки.
load fisheriris X = meas; Y = species; rng('default') % For reproducibility
Обучите наивный классификатор Байеса с помощью предикторов X
и метки классов Y
. Рекомендуемая практика состоит в том, чтобы задать имена классов. fitcnb
принимает, что каждый предиктор условно и нормально распределен.
Mdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'})
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell} Properties, Methods
Mdl
является обученным ClassificationNaiveBayes
классификатор.
Спрогнозируйте метки обучающей выборки.
label = resubPredict(Mdl);
Отображение результатов для случайного набора из 10 наблюдений.
idx = randsample(size(X,1),10); table(Y(idx),label(idx),'VariableNames', ... {'True Label','Predicted Label'})
ans=10×2 table
True Label Predicted Label
______________ _______________
{'virginica' } {'virginica' }
{'setosa' } {'setosa' }
{'virginica' } {'virginica' }
{'versicolor'} {'versicolor'}
{'virginica' } {'virginica' }
{'versicolor'} {'versicolor'}
{'virginica' } {'virginica' }
{'setosa' } {'setosa' }
{'virginica' } {'virginica' }
{'setosa' } {'setosa' }
Создайте график неточностей из истинных меток Y
и предсказанные метки label
.
cm = confusionchart(Y,label);
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b'
) или хорошо ('g'
).
load ionosphere
Обучите классификатор машины опорных векторов (SVM). Стандартизируйте данные и задайте, что 'g'
- положительный класс.
SVMModel = fitcsvm(X,Y,'ClassNames',{'b','g'},'Standardize',true);
SVMModel
является ClassificationSVM
классификатор.
Подгонка оптимальной функции преобразования счет - апостериорная вероятность.
rng(1); % For reproducibility
ScoreSVMModel = fitPosterior(SVMModel)
ScoreSVMModel = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: '@(S)sigmoid(S,-9.481586e-01,-1.218402e-01)' NumObservations: 351 Alpha: [90x1 double] Bias: -0.1343 KernelParameters: [1x1 struct] Mu: [1x34 double] Sigma: [1x34 double] BoxConstraints: [351x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [351x1 logical] Solver: 'SMO' Properties, Methods
Поскольку классы неразрывны, функция преобразования счета (ScoreSVMModel.ScoreTransform
) - сигмоидная функция.
Оцените счета и положительные апостериорные вероятности класса для обучающих данных. Отображение результатов для первых 10 наблюдений.
[label,scores] = resubPredict(SVMModel); [~,postProbs] = resubPredict(ScoreSVMModel); table(Y(1:10),label(1:10),scores(1:10,2),postProbs(1:10,2),'VariableNames',... {'TrueLabel','PredictedLabel','Score','PosteriorProbability'})
ans=10×4 table
TrueLabel PredictedLabel Score PosteriorProbability
_________ ______________ _______ ____________________
{'g'} {'g'} 1.4861 0.82214
{'b'} {'b'} -1.0004 0.30434
{'g'} {'g'} 1.8686 0.86916
{'b'} {'b'} -2.6458 0.084182
{'g'} {'g'} 1.2805 0.79183
{'b'} {'b'} -1.4618 0.22025
{'g'} {'g'} 2.1671 0.89813
{'b'} {'b'} -5.7089 0.0050112
{'g'} {'g'} 2.4797 0.92223
{'b'} {'b'} -2.7813 0.074797
Оцените логит апостериорных вероятностей (классификационных оценок) для обучающих данных с помощью классификационной обобщенной аддитивной модели (GAM), которая содержит как линейные, так и условия взаимодействия для предикторов. Укажите, включать ли условия взаимодействия при вычислении классификационных оценок.
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b'
) или хорошо ('g'
).
load ionosphere
Обучите GAM с помощью предикторов X
и метки классов Y
. Рекомендуемая практика состоит в том, чтобы задать имена классов. Укажите, чтобы включить 10 наиболее важных условий взаимодействия.
Mdl = fitcgam(X,Y,'ClassNames',{'b','g'},'Interactions',10)
Mdl = ClassificationGAM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'logit' Intercept: 3.2565 Interactions: [10x2 double] NumObservations: 351 Properties, Methods
Mdl
является ClassificationGAM
объект модели.
Спрогнозируйте метки, используя как линейные, так и условия взаимодействия, а затем используя только линейные условия. Чтобы исключить условия взаимодействия, задайте 'IncludeInteractions',false
. Оцените логит апостериорных вероятностей путем определения ScoreTransform
свойство как 'none'
.
Mdl.ScoreTransform = 'none'; [labels,scores] = resubPredict(Mdl); [labels_nointeraction,scores_nointeraction] = resubPredict(Mdl,'IncludeInteractions',false);
Составьте таблицу, содержащую истинные метки, предсказанные метки и счета. Отображение первых восьми строк таблицы.
t = table(Y,labels,scores,labels_nointeraction,scores_nointeraction, ... 'VariableNames',{'True Labels','Predicted Labels','Scores' ... 'Predicted Labels Without Interactions','Scores Without Interactions'}); head(t)
ans=8×5 table
True Labels Predicted Labels Scores Predicted Labels Without Interactions Scores Without Interactions
___________ ________________ __________________ _____________________________________ ___________________________
{'g'} {'g'} -51.628 51.628 {'g'} -47.676 47.676
{'b'} {'b'} 37.433 -37.433 {'b'} 36.435 -36.435
{'g'} {'g'} -62.061 62.061 {'g'} -58.357 58.357
{'b'} {'b'} 37.666 -37.666 {'b'} 36.297 -36.297
{'g'} {'g'} -47.361 47.361 {'g'} -43.373 43.373
{'b'} {'b'} 106.48 -106.48 {'b'} 102.43 -102.43
{'g'} {'g'} -62.665 62.665 {'g'} -58.377 58.377
{'b'} {'b'} 201.46 -201.46 {'b'} 197.84 -197.84
Предсказанные метки для обучающих данных X
не варьируются в зависимости от включения условий взаимодействия, но оцененные значения баллов различны.
Mdl
- Классификационная модель машинного обученияКлассификационная модель машинного обучения, заданная как объект модели полной классификации, как представлено в следующей таблице поддерживаемых моделей.
Модель | Объект модели |
---|---|
Обобщенная аддитивная модель | ClassificationGAM |
k - ближайшая соседняя модель | ClassificationKNN |
Наивная модель Байеса | ClassificationNaiveBayes |
Модель нейронной сети | ClassificationNeuralNetwork |
Поддерживайте векторную машину для одноклассовой и двоичной классификации | ClassificationSVM |
includeInteractions
- Флаг для включения условий взаимодействияtrue
| false
Флаг для включения условий взаимодействия модели, заданный как true
или false
. Этот аргумент действителен только для обобщенной аддитивной модели (GAM). То есть можно задать этот аргумент только тогда, когда Mdl
является ClassificationGAM
.
Значение по умолчанию true
если Mdl
содержит условия взаимодействия. Значение должно быть false
если модель не содержит членов взаимодействия.
Типы данных: logical
label
- Предсказанные метки классовПредсказанные метки классов, возвращенные как категориальный или символьный массив, логический или числовой вектор или массив ячеек из векторов символов.
label
имеет тот совпадающий тип данных, что и наблюдаемые метки классов, которые обучали Mdl
, и его длина равна количеству наблюдений в Mdl.X
. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)
Score
- счета классовКласс счетов, возвращенный как числовая матрица. Score
имеет строки, равные количеству наблюдений в Mdl.X
и столбцы, равные количеству отдельных классов в обучающих данных (size(Mdl.ClassNames,1)
).
Cost
- Ожидаемые расходы на неправильную классификациюОжидаемые затраты на неправильную классификацию, возвращенные как числовая матрица. Этот выход применяется только к k ближайшим соседним и наивным моделям Байеса. То есть ,resubPredict
возвращает Cost
только когда Mdl
является ClassificationKNN
или ClassificationNaiveBayes
.
Cost
имеет строки, равные количеству наблюдений в Mdl.X
и столбцы, равные количеству отдельных классов в обучающих данных (size(Mdl.ClassNames,1)
).
Cost(j,k)
- ожидаемая стоимость неправильной классификации наблюдения в строке j
от Mdl.X
предсказано в k
классов (в классе
Mdl.ClassNames(k)
).
resubPredict
вычисляет предсказания согласно соответствующему predict
функция объекта (Mdl
). Для описания модели смотрите predict
функция, страницы с описанием в следующей таблице.
Модель | Объект модели (Mdl ) | predict Функция объекта |
---|---|---|
Обобщенная аддитивная модель | ClassificationGAM | predict |
k - ближайшая соседняя модель | ClassificationKNN | predict |
Наивная модель Байеса | ClassificationNaiveBayes | predict |
Модель нейронной сети | ClassificationNeuralNetwork | predict |
Поддерживайте векторную машину для одноклассовой и двоичной классификации | ClassificationSVM | predict |
Указания и ограничения по применению:
Эта функция поддерживает ClassificationKNN
и ClassificationSVM
объекты, оснащенные входными параметрами массива GPU.
Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.