predict

Прогнозируйте метки с помощью дискриминантной модели классификации анализа

Описание

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

[label,score,cost] = predict(Mdl,X) также возвращает:

  • Матрица классификационных оценок (score), указывающий вероятность того, что метка происходит от определенного класса. Для дискриминантного анализа счетов являются апостериорными вероятностями.

  • Матрица ожидаемых классификационных затрат (cost). Для каждого наблюдения в X, предсказанная метка класса соответствует минимальным ожидаемым затратам классификации среди всех классов.

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

расширить все

Модель классификации дискриминантного анализа, заданная как ClassificationDiscriminant или CompactClassificationDiscriminant объект модели, возвращенный fitcdiscr.

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

Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной. Все переменные предиктора в X должны быть числовыми векторами.

  • Для числовой матрицы - переменные, которые составляют столбцы X должен иметь тот же порядок, что и переменные предиктора, которые обучали Mdl.

  • Для таблицы:

    • predict не поддерживает многополюсные переменные и массивы ячеек, кроме массивов ячеек векторов символов.

    • Если вы тренировались Mdl использование таблицы (для примера, Tbl), затем все переменные предиктора в X должны иметь те же имена переменных и типы данных, что и обученные Mdl (хранится в Mdl.PredictorNames). Однако порядок столбцов X не должен соответствовать порядку столбцов Tbl. Tbl и X может содержать дополнительные переменные (переменные отклика, веса наблюдений и т.д.), но predict игнорирует их.

    • Если вы тренировались Mdl используя числовую матрицу, затем имена предикторов в Mdl.PredictorNames и соответствующие имена переменных предиктора в X должно быть то же самое. Чтобы задать имена предикторов во время обучения, смотрите PredictorNames Аргумент пары "имя-значение" из fitcdiscr. X может содержать дополнительные переменные (переменные отклика, веса наблюдений и т.д.), но predict игнорирует их.

Типы данных: table | double | single

Выходные аргументы

расширить все

Предсказанные метки классов, возвращенные как категориальный или символьный массив, логический или числовой вектор или массив ячеек из векторов символов.

label:

  • Является совпадающим типом данных, что и наблюдаемые метки классов (Y) который обучал Mdl. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)

  • Имеет длину, равную количеству строк X.

Предсказанные апостериорные вероятности класса, возвращенные как числовая матрица размера N-by- K. N количество наблюдений (строк) в X, и K количество классов (в Mdl.ClassNames). score(i,j) - апостериорная вероятность того, что наблюдение i в X является классом j в Mdl.ClassNames.

Ожидаемые классификационные затраты, возвращенные как матрица размера N-by- K. N количество наблюдений (строк) в X, и K количество классов (в Mdl.ClassNames). cost(i,j) - стоимость классификации строки i от X как класс j в Mdl.ClassNames.

Примеры

расширить все

Загрузите набор данных радужки Фишера. Определите размер выборки.

load fisheriris
N = size(meas,1);

Разделите данные на обучающие и тестовые наборы. Продержитесь 10% данных для проверки.

rng(1); % For reproducibility
cvp = cvpartition(N,'Holdout',0.1);
idxTrn = training(cvp); % Training set indices
idxTest = test(cvp);    % Test set indices

Сохраните обучающие данные в таблице.

tblTrn = array2table(meas(idxTrn,:));
tblTrn.Y = species(idxTrn);

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

Mdl = fitcdiscr(tblTrn,'Y');

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

labels = predict(Mdl,meas(idxTest,:));

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

confusionchart(species(idxTest),labels)

Figure contains an object of type ConfusionMatrixChart.

Mdl ошибочно классифицирует одну ирису версиколора как virginica в тестовом наборе.

Загрузите набор данных радужки Фишера. Рассмотрите обучение, используя только длины и ширины лепестков.

load fisheriris
X = meas(:,3:4);

Обучите квадратичную модель дискриминантного анализа, используя весь набор данных.

Mdl = fitcdiscr(X,species,'DiscrimType','quadratic');

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

xMax = max(X);
xMin = min(X);
d = 0.01;
[x1Grid,x2Grid] = meshgrid(xMin(1):d:xMax(1),xMin(2):d:xMax(2));

[~,score] = predict(Mdl,[x1Grid(:),x2Grid(:)]);
Mdl.ClassNames
ans = 3x1 cell
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

score является матрицей апостериорных вероятностей классов. Столбцы соответствуют классам в Mdl.ClassNames. Для примера, score(j,1) - апостериорная вероятность того, что наблюдение j является сетозой радужной оболочки.

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

figure;
contourf(x1Grid,x2Grid,reshape(score(:,2),size(x1Grid,1),size(x1Grid,2)));
h = colorbar;
caxis([0 1]);
colormap jet;
hold on
gscatter(X(:,1),X(:,2),species,'mcy','.x+');
axis tight
title('Posterior Probability of versicolor'); 
hold off

Figure contains an axes. The axes with title Posterior Probability of versicolor contains 4 objects of type contour, line. These objects represent setosa, versicolor, virginica.

Апостериорная область вероятности открывает фрагмент контура принятия решения.

Подробнее о

расширить все

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

.
Введенный в R2011b