exponenta event banner

предсказать

Прогнозирование меток с использованием модели классификации анализа дискриминантов

Описание

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около-K. N - количество наблюдений (строк) в X, и K - количество классов (в Mdl.ClassNames). score(i,j) - задняя вероятность того, что наблюдение i в X имеет класс j в Mdl.ClassNames.

Ожидаемые затраты на классификацию, возвращаемые в виде матрицы размера Nоколо-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 неверно классифицирует одну диафрагму versicolor как 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 является сетозой радужной оболочки.

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

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