Предскажите ответы модели линейной регрессии
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.