Прогнозирование откликов модели линейной регрессии
Создайте квадратичную модель пробега автомобиля как функцию веса от 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')

В этом примере используются:
Подгонка модели линейной регрессии, а затем сохранение модели с помощью saveLearnerForCoder. Определение функции точки входа, которая загружает модель с помощью loadLearnerForCoder и вызывает predict функция подогнанной модели. Затем использовать codegen (Кодер MATLAB) для генерации кода C/C + +. Следует отметить, что для создания кода C/C + + требуется Coder™ MATLAB ®.
В этом примере кратко описывается рабочий процесс создания кода для прогнозирования моделей линейной регрессии в командной строке. Дополнительные сведения см. в разделе Создание кода для прогнозирования модели машинного обучения в командной строке. Можно также создать код с помощью приложения MATLAB Coder. Дополнительные сведения см. в разделе Создание кода для прогнозирования модели машинного обучения с помощью приложения MATLAB Coder App.
Модель поезда
Загрузить carsmall набор данных, а затем соответствует модели квадратичной регрессии.
load carsmall X = Weight; y = MPG; mdl = fitlm(X,y,'quadratic');
Сохранить модель
Сохранение установленной квадратичной модели в файле QLMMdl.mat с помощью saveLearnerForCoder.
saveLearnerForCoder(mdl,'QLMMdl');Определение функции точки входа
Определение функции точки входа с именем mypredictQLM это делает следующее:
Примите измерения, соответствующие аргументам пары X и необязательных допустимых пар имя-значение.
Загрузить установленную квадратичную модель в QLMMdl.mat.
Прогнозы возврата и границы доверительного интервала.
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 = loadLearnerForCoder('QLMMdl'); [yhat,ci] = predict(CompactMdl,x,varargin{:}); end
Добавить %#codegen директива компилятора (или прагматика) для функции начального уровня после сигнатуры функции, указывающая, что предполагается создать код для алгоритма MATLAB. Добавление этой директивы дает команду анализатору кода MATLAB помочь в диагностике и устранении нарушений, которые могут привести к ошибкам при создании кода.
Примечание.Если нажать кнопку, расположенную в правой верхней части этого примера, и открыть пример в MATLAB ®, то MATLAB откроет папку примеров. Эта папка содержит файл функции начального уровня.
Создать код
Создание кода для функции точки входа с помощью codegen (Кодер MATLAB). Поскольку C и C++ являются статически типизированными языками, необходимо определить свойства всех переменных в функции точки входа во время компиляции. Чтобы указать тип данных и точный размер входного массива, передайте выражение MATLAB ®, представляющее набор значений с определенным типом данных и размером массива. Использоватьcoder.Constant (Кодер MATLAB) для имен аргументов пары имя-значение.
Если количество наблюдений неизвестно во время компиляции, можно также указать входные данные как переменные размеры, используя coder.typeof (Кодер MATLAB). Дополнительные сведения см. в разделах Определение аргументов переменного размера для генерации кода и Определение свойств входов функции точки входа (кодер MATLAB).
codegen mypredictQLM -args {X,coder.Constant('Alpha'),0.1,coder.Constant('Simultaneous'),true}
Code generation successful.
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 является именем аргумента и 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
'Prediction' - Тип прогноза'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 - Доверительные интервалы для ответовДоверительные интервалы для ответов, возвращаемые в виде матрицы из двух столбцов, при этом каждая строка предоставляет один интервал. Значение доверительного интервала зависит от настроек аргументов пары имя-значение 'Alpha', 'Prediction', и 'Simultaneous'.
feval возвращает те же прогнозы, что и predict. feval функция может принимать несколько входных аргументов, с одним входом для каждой переменной предиктора, что проще в использовании с моделью, созданной из таблицы или массива набора данных. Обратите внимание, что feval функция не дает доверительных интервалов в своих прогнозах.
random возвращает прогнозы с добавленным шумом.
Использовать plotSlice для создания фигуры, содержащей ряд графиков, каждый из которых представляет собой срез через прогнозируемую поверхность регрессии. Каждый график показывает подогнанные значения отклика как функцию одной прогнозирующей переменной, при этом другие прогнозирующие переменные остаются постоянными.
Примечания и ограничения по использованию:
Использовать saveLearnerForCoder, loadLearnerForCoder, и codegen (Кодер MATLAB) для создания кода для predict функция. Сохранение обучаемой модели с помощью saveLearnerForCoder. Определение функции точки входа, которая загружает сохраненную модель с помощью loadLearnerForCoder и вызывает predict функция. Затем использовать codegen для создания кода для функции точки входа.
Эта таблица содержит примечания о аргументах predict. Аргументы, не включенные в эту таблицу, полностью поддерживаются.
| Аргумент | Примечания и ограничения |
|---|---|
mdl |
|
Xnew |
|
| Аргументы пары имя-значение |
Имена в аргументах пары имя-значение должны быть константами времени компиляции. Например, чтобы разрешить определяемый пользователем уровень значимости в сгенерированном коде, включите |
Дополнительные сведения см. в разделе Введение в создание кода.
Эта функция полностью поддерживает массивы графических процессоров. Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Эта функция поддерживает объекты модели, оснащенные входными аргументами графического процессора.
CompactLinearModel | feval | LinearModel | plotSlice | random
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.