Предскажите ответы модели линейной регрессии
ypred = predict(mdl,Xnew)[ypred,yci]
= predict(mdl,Xnew)[ypred,yci]
= predict(mdl,Xnew,Name,Value)Создайте квадратичную модель пробега автомобиля как функция веса от набора данных carsmall.
load carsmall X = Weight; y = MPG; mdl = fitlm(X,y,'quadratic');
Создайте предсказанные ответы на данные.
ypred = predict(mdl,X);
Постройте исходные ответы и предсказанные ответы, чтобы видеть, как они отличаются.
plot(X,y,'o',X,ypred,'x') legend('Data','Predictions')

Этот пример использование:
Соответствуйте модели линейной регрессии, и затем сохраните модель при помощи saveCompactModel. Задайте функцию точки входа, которая загружает модель при помощи loadCompactModel и вызывает функцию predict подобранной модели. Затем используйте codegen, чтобы сгенерировать код C/C++. Обратите внимание на то, что генерация кода C/C++ требует MATLAB® Coder™.
Этот пример кратко объясняет рабочий процесс генерации кода для прогноза моделей линейной регрессии в командной строке. Для получения дополнительной информации смотрите Генерацию кода для Прогноза Модели Машинного обучения в Командной строке. Можно также сгенерировать код с помощью приложения MATLAB Coder. Для получения дополнительной информации смотрите Генерацию кода для Прогноза Модели Машинного обучения Используя Приложение MATLAB Coder.
Модель train
Загрузите набор данных carsmall, и затем соответствуйте квадратичной модели регрессии.
load carsmall X = Weight; y = MPG; mdl = fitlm(X,y,'quadratic');
Сохраните модель
Сохраните подходящую квадратичную модель в файл QLMMdl.mat при помощи saveCompactModel.
saveCompactModel(mdl,'QLMMdl');Задайте функцию точки входа
Задайте функцию с именем точки входа mypredictQLM, который делает следующее:
Примите измерения, соответствующие X и дополнительные, допустимые аргументы пары "имя-значение".
Загрузите приспособленную квадратичную модель в QLMMdl.mat.
Возвратите границы доверительного интервала и прогнозы.
type mypredictQLM.m % Display contents of mypredictQLM.m
function [yhat,ci] = mypredictQLM(x,varargin) %#codegen
%MYPREDICTQLM Predict response using linear model
% MYPREDICTQLM predicts responses for the n observations in the n-by-1
% vector x using the linear model stored in the MAT-file QLMMdl.mat, and
% then returns the predictions in the n-by-1 vector yhat. MYPREDICTQLM
% also returns confidence interval bounds for the predictions in the
% n-by-2 vector ci.
CompactMdl = loadCompactModel('QLMMdl');
[yhat,ci] = predict(CompactMdl,x,varargin{:});
end
Добавьте директиву компилятора %#codegen (или прагма) к функции точки входа после функциональной подписи, чтобы указать, что вы намереваетесь сгенерировать код для алгоритма MATLAB. Добавление этой директивы дает Анализатору кода MATLAB команду помогать вам диагностировать и зафиксировать нарушения, которые привели бы к ошибкам во время генерации кода.
Примечание: Если вы нажимаете кнопку, расположенную в верхнем правом разделе этого примера, и открываете пример в MATLAB®, затем MATLAB® открывает папку в качестве примера. Эта папка включает файл функции точки входа.
Сгенерируйте код
Сгенерируйте код для функции точки входа использование codegen. Поскольку C и C++ являются статически типизированными языками, необходимо определить свойства всех переменных в функции точки входа во время компиляции. Чтобы задать тип данных и точный размер входного массива, передайте выражение MATLAB®, которое представляет множество значений с определенным размером типа данных и массива. Используйте coder.Constant для имен аргументов пары "имя-значение".
Если количество наблюдений неизвестно во время компиляции, можно также задать вход как переменный размер при помощи coder.typeof. Для получения дополнительной информации смотрите, Задают Аргументы Переменного Размера для Code Generation and Specify Properties Входных параметров функции Точки входа (MATLAB Coder).
codegen mypredictQLM -args {X,coder.Constant('Alpha'),0.1,coder.Constant('Simultaneous'),true}
codegen генерирует MEX-функцию mypredictQLM_mex с зависимым платформой расширением.
Проверьте сгенерированный код
Сравните прогнозы и доверительные интервалы с помощью predict и mypredictQLM_mex. Задайте аргументы пары "имя-значение" в том же порядке как в аргументе -args в вызове codegen.
Xnew = sort(X); [yhat1,ci1] = predict(mdl,Xnew,'Alpha',0.1,'Simultaneous',true); [yhat2,ci2] = mypredictQLM_mex(Xnew,'Alpha',0.1,'Simultaneous',true);
Возвращенные значения от mypredictQLM_mex могут включать различия в округлении по сравнению со значениями от predict. В этом случае сравните значения, позволяющие маленький допуск.
find(abs(yhat1-yhat2) > 1e-6)
ans = 0x1 empty double column vector
find(abs(ci1-ci2) > 1e-6)
ans = 0x1 empty double column vector
Сравнение подтверждает, что возвращенные значения равны в допуске 1e–6.
Постройте возвращенные значения для сравнения.
h1 = plot(X,y,'k.'); hold on h2 = plot(Xnew,yhat1,'ro',Xnew,yhat2,'gx'); h3 = plot(Xnew,ci1,'r-','LineWidth',4); h4 = plot(Xnew,ci2,'g--','LineWidth',2); legend([h1; h2; h3(1); h4(1)], ... {'Data','predict estimates','MEX estimates','predict CIs','MEX CIs'}); xlabel('Weight'); ylabel('MPG');

mdl — Объект модели линейной регрессииLinearModel | объект CompactLinearModelОбъект модели линейной регрессии, заданный как объект LinearModel, созданный при помощи fitlm или stepwiselm или объекта CompactLinearModel, создается при помощи compact.
Xnew — Новые входные значения предиктораНовые входные значения предиктора, заданные как таблица, массив набора данных или матрица. Каждая строка Xnew соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Если Xnew является таблицей или массивом набора данных, он должен содержать предикторы, которые имеют те же имена предиктора как в свойстве PredictorNames mdl.
Если Xnew является матрицей, он должен иметь то же количество переменных (столбцы) в том же порядке, как вход предиктора раньше создавал mdl. Обратите внимание на то, что Xnew должен также содержать любые переменные прогноза, которые не используются в качестве предикторов в подобранной модели. Кроме того, все переменные, используемые в создании mdl, должны быть числовыми или логическими. Чтобы обработать числовые предикторы как категориальные, идентифицируйте предикторы с помощью аргумента пары "имя-значение" 'CategoricalVars', когда вы создадите mdl.
Типы данных: single | double | table
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
[ypred,yci] = predict(Mdl,Xnew,'Alpha',0.01,'Simultaneous',true) возвращает доверительный интервал yci с 99%-м доверительным уровнем, вычисленным одновременно для всех значений предиктора.\alpha Уровень значенияУровень значения для доверительного интервала, заданного как пара, разделенная запятой, состоящая из 'Alpha' и числового значения в области значений [0,1]. Доверительный уровень yci равен 100 (1 – Alpha) %. Alpha является вероятностью, что доверительный интервал не содержит истинное значение.
Пример: 'Alpha',0.01
Типы данных: single | double
Предсказание Тип прогноза'curve' (значение по умолчанию) | 'observation'Тип прогноза, заданный как пара, разделенная запятой, состоящая из 'Prediction' и или 'curve' или 'observation'.
Модель регрессии для переменных прогноза X и переменная отклика y имеет форму
y = f (X) + ε,
где f является подходящей функцией регрессии, и ε является случайным шумовым термином.
Если 'Prediction' является 'curve', то predict предсказывает доверительные границы для f (Xnew), подходящие ответы в Xnew.
Если 'Prediction' является 'observation', то predict предсказывает доверительные границы для y, наблюдений ответа в Xnew.
Границы для y более широки, чем границы для f (X) из-за дополнительной изменчивости шумового термина.
Пример: 'Prediction','observation'
'Simultaneous' — Отметьте, чтобы вычислить одновременные доверительные границыfalse (значение по умолчанию) | trueОтметьте, чтобы вычислить одновременные доверительные границы, заданные как пара, разделенная запятой, состоящая из 'Simultaneous' и любого TRUE или FALSE.
true — predict вычисляет доверительные границы для кривой значений ответа, соответствующих всем значениям предиктора в Xnew, с помощью метода Шеффа. Область значений между верхними и нижними границами содержит кривую, состоящую из истинных значений ответа с 100 (1 – α) уверенность %.
false — predict вычисляет доверительные границы для значения ответа при каждом наблюдении в Xnew. Доверительный интервал для значения ответа в определенном значении предиктора содержит истинное значение ответа с 100 (1 – α) уверенность %.
Одновременные границы более широки, чем отдельные границы, потому что требование, чтобы целая кривая значений ответа была в границах, более строго, чем требование, чтобы значение ответа в одном значении предиктора было в границах.
Пример: 'Simultaneous',true
ypred — Предсказанные значения ответаПредсказанные значения ответа оценены в Xnew, возвращенном как числовой вектор.
yci — Доверительные интервалы для ответовДоверительные интервалы для ответов, возвращенных как матрица 2D столбца с каждой строкой, обеспечивающей один интервал. Значение доверительного интервала зависит от настроек аргументов пары "имя-значение" 'Alpha', 'Prediction' и 'Simultaneous'.
feval возвращает те же прогнозы как predict. Функция feval может взять несколько входных параметров, с одним входом для каждой переменной прогноза, и не дает доверительные интервалы на ее прогнозах.
random возвращает прогнозы с добавленным шумом.
Используйте plotSlice, чтобы создать фигуру, содержащую ряд графиков, каждый представляющий срез через предсказанную поверхность регрессии. Каждый график показывает подходящие значения ответа функцией одной переменной прогноза с другими переменными прогноза, сохраненными постоянными.
Указания и ограничения по применению:
Используйте saveCompactModel, loadCompactModel и codegen, чтобы сгенерировать код для функции predict. Сохраните обученную модель при помощи saveCompactModel. Задайте функцию точки входа, которая загружает сохраненную модель при помощи loadCompactModel и вызывает функцию predict. Затем используйте codegen, чтобы сгенерировать код для функции точки входа.
Эта таблица содержит примечания об аргументах predict. Аргументы, не включенные в эту таблицу, полностью поддержаны.
| Аргумент | Примечания и ограничения |
|---|---|
mdl |
|
Xnew |
|
| Аргументы в виде пар имя-значение |
Имена в аргументах пары "имя-значение" должны быть константами времени компиляции. Например, чтобы позволить пользовательский уровень значения в сгенерированном коде, включайте |
Для получения дополнительной информации смотрите Введение в Генерацию кода.
CompactLinearModel | LinearModel | feval | plotSlice | random
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.