predict

Предсказать метки для Гауссовой модели классификации ядра

Описание

пример

Label = predict(Mdl,X) возвращает вектор предсказанных меток классов для данных предиктора в матрице или таблице X, на основе двоичной Гауссовой классификационной модели ядра Mdl.

пример

[Label,Score] = predict(Mdl,X) также возвращает классификационные оценки для обоих классов.

Примеры

свернуть все

Спрогнозируйте метки набора обучающих данных с помощью двоичной модели классификации ядра и отобразите матрицу неточностей для полученной классификации.

Загрузите 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);

Figure contains an object of type ConfusionMatrixChart.

Модель неправильно классифицирует по одному радиолокационному возврату для каждого класса.

Спрогнозируйте метки тестового набора с помощью двухкомпонентной модели классификации ядра и отобразите матрицу неточностей для полученной классификации.

Загрузите 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);

Figure contains an object of type ConfusionMatrixChart.

Модель неправильно классифицирует только один возврат радара для каждого класса.

Создайте матрицу неточностей для тестового набора.

ConfusionTest = confusionchart(Y(testInds),labelTest);

Figure contains an object of type ConfusionMatrixChart.

Модель неправильно классифицирует один плохой возврат радара как хороший возврат, и пять хороших радаров возвращают как плохие возвраты.

Оцените апостериорные вероятности классов для тестового набора и определите качество модели путем построения графика приемника кривой рабочей характеристики (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')

Figure contains an axes. The axes with title ROC Curve contains an object of type line.

Входные параметры

свернуть все

Модель классификации двоичных ядер, заданная как ClassificationKernel объект модели. Можно создать ClassificationKernel моделировать объект используя fitckernel.

Данные предиктора, которые будут классифицированы, заданные как числовая матрица или таблица.

Каждая строка 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 имеет n строки, где n количество наблюдений в X, и имеет тот совпадающий тип данных, что и наблюдаемые метки классов (Y) используется для обучения Mdl. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)

predict классифицирует наблюдения в класс, давая наивысший счет.

Классификационные оценки, возвращенные как n-на-2 числовой массив, где n - количество наблюдений в X. Счет (i, j) - счет для классификации наблюдений i в j классов. Mdl.ClassNames сохраняет порядок классов.

Если Mdl.Learner является 'logistic', тогда классификационные оценки являются апостериорными вероятностями.

Подробнее о

свернуть все

Классификационная оценка

Для моделей классификации ядра необработанный classification score для классификации x наблюдений, вектора-строки, в положительный класс задан как

f(x)=T(x)β+b.

  • T(·) является преобразованием наблюдения для расширения функции.

  • β - предполагаемый вектор-столбец коэффициентов.

  • b - предполагаемое скалярное смещение.

Необработанная классификационная оценка для классификации x в отрицательный класс - f (x). Программа классифицирует наблюдения в класс, который дает положительный счет.

Если модель классификации ядра состоит из обучающихся логистической регрессии, то программное обеспечение применяет 'logit' преобразование счета в необработанные классификационные оценки (см. ScoreTransform).

Расширенные возможности

Введенный в R2017b