Предсказать метки для Гауссовой модели классификации ядра
Спрогнозируйте метки набора обучающих данных с помощью двоичной модели классификации ядра и отобразите матрицу неточностей для полученной классификации.
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b'
) или хорошо ('g'
).
load ionosphere
Обучите двоичную модель классификации ядра, которая определяет, является ли радарный возврат плохим ('b'
) или хорошо ('g'
).
rng('default') % For reproducibility Mdl = fitckernel(X,Y);
Mdl
является ClassificationKernel
модель.
Спрогнозируйте набор обучающих данных, или реподституцию, этикеток.
label = predict(Mdl,X);
Создайте матрицу неточностей.
ConfusionTrain = confusionchart(Y,label);
Модель неправильно классифицирует по одному радиолокационному возврату для каждого класса.
Спрогнозируйте метки тестового набора с помощью двухкомпонентной модели классификации ядра и отобразите матрицу неточностей для полученной классификации.
Загрузите 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 testInds = test(Partition); % Indices for the test set
Обучите модель классификации двоичных ядер с помощью набора обучающих данных. Хорошей практикой является определение порядка классов.
Mdl = fitckernel(X(trainingInds,:),Y(trainingInds),'ClassNames',{'b','g'});
Спрогнозируйте метки набора обучающих данных и метки тестового набора.
labelTrain = predict(Mdl,X(trainingInds,:)); labelTest = predict(Mdl,X(testInds,:));
Создайте матрицу неточностей для набора обучающих данных.
ConfusionTrain = confusionchart(Y(trainingInds),labelTrain);
Модель неправильно классифицирует только один возврат радара для каждого класса.
Создайте матрицу неточностей для тестового набора.
ConfusionTest = confusionchart(Y(testInds),labelTest);
Модель неправильно классифицирует один плохой возврат радара как хороший возврат, и пять хороших радаров возвращают как плохие возвраты.
Оцените апостериорные вероятности классов для тестового набора и определите качество модели путем построения графика приемника кривой рабочей характеристики (ROC). Модели классификации ядра возвращают апостериорные вероятности только для учащихся логистической регрессии.
Загрузите 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), ... 'ClassNames',{'b','g'},'Learner','logistic');
Спрогнозируйте апостериорные вероятности классов для тестового набора.
[~,posterior] = predict(Mdl,X(testInds,:));
Потому что Mdl
имеет одну силу регуляризации, выхода posterior
является матрицей с двумя столбцами и строками, равными количеству наблюдений за тестовым набором. Столбец i
содержит апостериорные вероятности Mdl.ClassNames(i)
учитывая конкретное наблюдение.
Получите ложные и истинные положительные скорости и оцените площадь под кривой (AUC). Укажите, что второй класс является положительным классом.
[fpr,tpr,~,auc] = perfcurve(Y(testInds),posterior(:,2),Mdl.ClassNames(2)); auc
auc = 0.9042
AUC близок к 1
, что указывает на то, что модель хорошо предсказывает метки.
Постройте график кривой ROC.
figure; plot(fpr,tpr) h = gca; h.XLim(1) = -0.1; h.YLim(2) = 1.1; xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve')
Mdl
- Модель классификации двоичных ядерClassificationKernel
объект моделиМодель классификации двоичных ядер, заданная как ClassificationKernel
объект модели. Можно создать ClassificationKernel
моделировать объект используя fitckernel
.
X
- Данные предиктора, которые будут классифицированыДанные предиктора, которые будут классифицированы, заданные как числовая матрица или таблица.
Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Для числовой матрицы:
Переменные в столбцах X
должен иметь тот же порядок, что и переменные предиктора, которые обучали Mdl
.
Если вы тренировались Mdl
использование таблицы (для примера, Tbl
) и Tbl
содержит все числовые переменные предиктора, затем X
может быть числовой матрицей. Для лечения числовых предикторов в Tbl
как категориальный во время обучения, идентифицируйте категориальные предикторы с помощью CategoricalPredictors
Аргумент пары "имя-значение" из fitckernel
. Если Tbl
содержит неоднородные переменные предиктора (для примера, числовых и категориальных типов данных) и X
является числовой матрицей, тогда predict
выдает ошибку.
Для таблицы:
predict
не поддерживает многополюсные переменные или массивы ячеек, отличные от массивов ячеек векторов символов.
Если вы тренировались Mdl
использование таблицы (для примера, Tbl
), затем все переменные предиктора в X
должны иметь те же имена переменных и типы данных, что и обученные Mdl
(хранится в Mdl.PredictorNames
). Однако порядок столбцов X
не должен соответствовать порядку столбцов Tbl
. Кроме того, Tbl
и X
может содержать дополнительные переменные (переменные отклика, веса наблюдений и так далее), но predict
игнорирует их.
Если вы тренировались Mdl
используя числовую матрицу, затем имена предикторов в Mdl.PredictorNames
и соответствующие имена переменных предиктора в X
должно быть то же самое. Чтобы задать имена предикторов во время обучения, смотрите PredictorNames
Аргумент пары "имя-значение" из fitckernel
. Все переменные предиктора в X
должны быть числовыми векторами. X
может содержать дополнительные переменные (переменные отклика, веса наблюдений и так далее), но predict
игнорирует их.
Типы данных: table
| double
| single
Label
- Предсказанные метки классовПредсказанные метки классов, возвращенные как категориальный или символьный массив, логическая или числовая матрица или массив ячеек из векторов символов.
Label
имеет n строки, где n количество наблюдений в X
, и имеет тот совпадающий тип данных, что и наблюдаемые метки классов (Y
) используется для обучения Mdl
. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)
predict
классифицирует наблюдения в класс, давая наивысший счет.
Score
- Классификационные оценкиКлассификационные оценки, возвращенные как n-на-2 числовой массив, где n - количество наблюдений в X
. Счет
- счет для классификации наблюдений (i
, j
)i
в j
классов.
Mdl.ClassNames
сохраняет порядок классов.
Если Mdl.Learner
является 'logistic'
, тогда классификационные оценки являются апостериорными вероятностями.
Для моделей классификации ядра необработанный classification score для классификации x наблюдений, вектора-строки, в положительный класс задан как
является преобразованием наблюдения для расширения функции.
β - предполагаемый вектор-столбец коэффициентов.
b - предполагаемое скалярное смещение.
Необработанная классификационная оценка для классификации x в отрицательный класс - − f (x). Программа классифицирует наблюдения в класс, который дает положительный счет.
Если модель классификации ядра состоит из обучающихся логистической регрессии, то программное обеспечение применяет 'logit'
преобразование счета в необработанные классификационные оценки (см. ScoreTransform
).
Указания и ограничения по применению:
predict
не поддерживает высокие table
данные.
Для получения дополнительной информации см. Раздел «Длинные массивы»
ClassificationKernel
| confusionchart
| fitckernel
| perfcurve
| resume
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.