Предскажите метки с помощью модели классификации дискриминантных анализов
label = predict(Mdl,X)
[label,score,cost]
= predict(Mdl,X)
[
также возвращается:label
,score
,cost
]
= predict(Mdl
,X
)
Матрица очков классификации (score
), указывающий на вероятность, что метка прибывает из конкретного класса. Для дискриминантного анализа очки являются апостериорными вероятностями.
Матрица ожидаемой классификации стоила (cost
). Для каждого наблюдения в X
предсказанная метка класса соответствует минимальной ожидаемой стоимости классификации среди всех классов.
Mdl
— Модель классификации дискриминантных анализовClassificationDiscriminant
| объект модели CompactClassificationDiscriminant
Модель классификации дискриминантных анализов, заданная как ClassificationDiscriminant
или объект модели CompactClassificationDiscriminant
, возвращенный fitcdiscr
.
X
Данные о предикторе, которые будут классифицированыДанные о предикторе, которые будут классифицированы, заданные как числовая матрица или таблица.
Каждая строка 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
метка
Предсказанные метки классаПредсказанные метки класса, возвращенные как категориальное или символьный массив, логический или числовой вектор или массив ячеек из символьных векторов.
метка:
score
— Предсказанные апостериорные вероятности классаПредсказанные апостериорные вероятности класса, возвращенные как числовая матрица размера N
-by-K
. N
является количеством наблюдений (строки) в X
, и K
является количеством классов (в Mdl.ClassNames
). score(i,j)
является апостериорной вероятностью, что наблюдение i
в X
имеет класс j
в Mdl.ClassNames
.
cost
— Ожидаемые затраты классификацииОжидаемые затраты классификации, возвращенные как матрица размера 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);
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 array
{'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
Область апостериорной вероятности представляет фрагмент контура решения.
Апостериорная вероятность, что точка z принадлежит, чтобы классифицировать j, является продуктом априорной вероятности и многомерной нормальной плотности. Функция плотности многомерного нормального со средним μj и ковариацией Σj в точке z
где детерминант Σ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.
Эта функция полностью поддерживает "высокие" массивы. Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
Указания и ограничения по применению:
Используйте saveCompactModel
, loadCompactModel
и codegen
, чтобы сгенерировать код для функции predict
. Сохраните обученную модель при помощи saveCompactModel
. Задайте функцию точки входа, которая загружает сохраненную модель при помощи loadCompactModel
и вызывает функцию predict
. Затем используйте codegen
, чтобы сгенерировать код для функции точки входа.
Эта таблица содержит примечания об аргументах predict
. Аргументы, не включенные в эту таблицу, полностью поддержаны.
Аргумент | Примечания и ограничения |
---|---|
Mdl | Для указаний и ограничений по применению объекта модели смотрите
Генерацию кода объекта |
X |
|
Для получения дополнительной информации смотрите Введение в Генерацию кода.
ClassificationDiscriminant
| CompactClassificationDiscriminant
| edge
| fitcdiscr
| loss
| margin
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.