predict

Предскажите метки с помощью модели классификации дискриминантных анализов

Описание

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

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

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

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

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

развернуть все

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

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

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

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

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

    • predict не поддерживает многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов.

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

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

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

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

развернуть все

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

label:

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

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

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

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

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 ирисовая диафрагма setosa.

Постройте апостериорную вероятность 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

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

Больше о

развернуть все

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

Представленный в R2011b