Предскажите метки с помощью модели классификации дискриминантных анализов
[ также возвращается:label,score,cost]
= predict(Mdl,X)
Матрица A классификационных оценок (score) указание на вероятность, что метка прибывает из конкретного класса. Для дискриминантного анализа баллы являются апостериорными вероятностями.
Матрица A ожидаемой стоимости классификации (cost). Для каждого наблюдения в X, предсказанная метка класса соответствует минимальной ожидаемой стоимости классификации среди всех классов.
Mdl — Модель классификации дискриминантных анализовClassificationDiscriminant объект модели | CompactClassificationDiscriminant объект моделиМодель классификации дискриминантных анализов в виде ClassificationDiscriminant или CompactClassificationDiscriminant объект модели, возвращенный fitcdiscr.
X — Данные о предикторе, которые будут классифицированыДанные о предикторе, которые будут классифицированы в виде числовой матрицы или таблицы.
Каждая строка 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 — Предсказанные метки классаПредсказанные метки класса, возвращенные как категориальное или символьный массив, логический или числовой вектор или массив ячеек из символьных векторов.
label:
score — Предсказанные апостериорные вероятности классаПредсказанные апостериорные вероятности класса, возвращенные как числовая матрица размера N- KN количество наблюдений (строки) в X, и K количество классов (в Mdl.ClassNames). score(i,j) апостериорная вероятность то наблюдение i в X имеет класс j в Mdl.ClassNames.
cost — Ожидаемые затраты классификацииОжидаемые затраты классификации, возвращенные как матрица размера 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

Область апостериорной вероятности отсоединяет фрагмент контура решения.
Апостериорная вероятность, что точка x принадлежит, чтобы классифицировать k, является продуктом априорной вероятности и многомерной нормальной плотности. Функция плотности многомерного нормального с 1 d означает, что μk и d-by-d ковариация Σk в 1 d указывают, что x
где определитель Σk, и обратная матрица.
Позволенный P (k) представляют априорную вероятность класса k. Затем апостериорная вероятность, что наблюдение x имеет класс k,
где P (x) является постоянной нормализацией, сумма по k P (x |k) P (k).
Априорная вероятность является одним из трех вариантов:
'uniform' — Априорная вероятность класса k один по общему количеству классов.
'empirical' — Априорная вероятность класса k количество обучающих выборок класса k разделенный на общее количество обучающих выборок.
Пользовательский — априорная вероятность класса k kэлемент th prior вектор. Смотрите fitcdiscr.
После создания модели классификации (Mdl) можно установить предшествующую запись через точку использования:
Mdl.Prior = v;
где v вектор из положительных элементов, представляющих частоту, с которой происходит каждый элемент. Вы не должны переобучать классификатор, когда вы устанавливаете новое предшествующее.
Матрица ожидаемых затрат на наблюдение задана в Стоимости.
predict классифицирует, чтобы минимизировать ожидаемую стоимость классификации:
где
предсказанная классификация.
K является количеством классов.
апостериорная вероятность класса k для наблюдения x.
стоимость классификации наблюдения как y, когда его истинным классом является k.
Эта функция полностью поддерживает "высокие" массивы. Можно использовать модели, обученные или на или на высоких данных в оперативной памяти с этой функцией.
Для получения дополнительной информации см. Раздел "Высокие массивы".
Указания и ограничения по применению:
Использование saveLearnerForCoder, loadLearnerForCoder, и codegen (MATLAB Coder), чтобы сгенерировать код для predict функция. Сохраните обученную модель при помощи saveLearnerForCoder. Задайте функцию точки входа, которая загружает сохраненную модель при помощи loadLearnerForCoder и вызывает predict функция. Затем используйте codegen сгенерировать код для функции точки входа.
Чтобы сгенерировать код C/C++ с одинарной точностью для предсказывают, задают аргумент 'DataType','single' значения имени когда вы вызываете loadLearnerForCoder функция.
Эта таблица содержит примечания об аргументах predict. Аргументы, не включенные в эту таблицу, полностью поддерживаются.
| Аргумент | Примечания и ограничения |
|---|---|
Mdl | Для указаний и ограничений по применению объекта модели смотрите
Генерацию кода |
X |
|
Для получения дополнительной информации смотрите Введение в Генерацию кода.
ClassificationDiscriminant | CompactClassificationDiscriminant | edge | fitcdiscr | loss | margin
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.