主要内容

预测

预测线性回归模型的响应

描述

例子

ypred=预测(mdlXnew返回线性回归模型的预测响应值mdl在这里Xnew

ypred开办预测,预测mdlXnew还返回点的响应的置信区间Xnew

例子

ypred开办预测,预测mdlXnew名称,值使用一个或多个名称-值对参数指定其他选项。例如,可以指定置信区间的置信级别和预测类型。

例子

全部折叠

创建一个二次模型的汽车里程作为一个函数的重量从carsmall数据集。

负载carsmallX =重量;y = MPG;mdl = fitlm(X,y,“二次”);

创建对数据的预测反应。

ypred =预测(mdl,X);

把原始反应和预测反应画出来,看看它们有什么不同。

情节(X, y,“o”, X, ypred“x”)传说(“数据”“预测”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象代表数据、预测。

拟合线性回归模型,然后使用保存模型saveLearnerForCoder.定义通过使用加载模型的入口点函数loadLearnerForCoder并调用预测拟合模型的功能。然后使用codegen(MATLAB编码器)生成C/ c++代码。注意,生成C/ c++代码需要MATLAB®Coder™。

这个例子简要地解释了在命令行中预测线性回归模型的代码生成工作流。详情请参见命令行机器学习模型预测的代码生成.您也可以使用MATLAB Coder应用程序生成代码。有关详细信息,请参见利用MATLAB编码器应用程序生成机器学习模型预测的代码

火车模型

加载carsmall数据集,然后拟合二次回归模型。

负载carsmallX =重量;y = MPG;mdl = fitlm(X,y,“二次”);

保存模型

将拟合的二次模型保存到文件中QLMMdl.mat通过使用saveLearnerForCoder

saveLearnerForCoder (mdl“QLMMdl”);

定义入口点函数

定义名为mypredictQLM它的作用如下:

  • 接受对应于X的测量值和可选的、有效的名-值对参数。

  • 加载拟合的二次模型QLMMdl.mat

  • 返回预测和置信区间边界。

函数[yhat,ci] = mypredictQLM(x,varargin)% # codegen使用线性模型预测响应% MYPREDICTQLM预测n × 1矩阵中n个观测值的响应%向量x使用存储在mat文件QLMMdl中的线性模型。垫,%然后返回n × 1向量yhat中的预测结果。MYPREDICTQLM中预测的置信区间范围也返回% n × 2向量ci。CompactMdl = loadLearnerForCoder(“QLMMdl”);[yhat,ci] = predict(CompactMdl,x,varargin{:});结束

添加% # codegen编译器指令(或pragma)到函数入口点之后的函数签名,以表明您打算为MATLAB算法生成代码。添加此指令将指导MATLAB代码分析器帮助您诊断和修复在代码生成过程中可能导致错误的违规行为。

注意:如果单击位于本示例右上方部分的按钮并在MATLAB®中打开示例,则MATLAB将打开示例文件夹。此文件夹包括入口点函数文件。

生成代码

生成入口点函数的代码codegen(MATLAB编码器).因为C和c++都是静态类型语言,所以必须在编译时确定入口点函数中所有变量的属性。要指定数据类型和精确的输入数组大小,请传递一个MATLAB®表达式,该表达式表示具有特定数据类型和数组大小的值集。使用编码器。常数(MATLAB编码器)用于名称-值对参数的名称。

如果在编译时观察数未知,您还可以使用将输入指定为可变大小coder.typeof(MATLAB编码器).详细信息请参见为代码生成指定可变大小的参数而且指定入口点函数输入的属性(MATLAB编码器)

codegenmypredictQLMarg游戏{X, coder.Constant(α),0.1,coder.Constant(同步),真正的}
代码生成成功。

codegen生成MEX函数mypredictQLM_mex使用依赖于平台的扩展。

验证生成的代码

比较预测和置信区间使用预测而且mypredictQLM_mex.属性中指定名称-值对参数的顺序与arg游戏的调用中的参数codegen

Xnew = sort(X);[yhat1,ci1] = predict(mdl,Xnew,“α”, 0.1,“同时”,真正的);[yhat2,ci2] = mypredictQLM_mex(Xnew,“α”, 0.1,“同时”,真正的);

返回的值mypredictQLM_mex的值可能包含四舍五入的差异预测.在这种情况下,比较允许小公差的值。

Find (abs(yhat1-yhat2) > 1e-6)
Ans = 0x1空双列向量
Find (abs(ci1-ci2) > 1e-6)
Ans = 0x1空双列向量

比较确认返回值在公差范围内相等1 e-6

绘制返回值以进行比较。

h1 = plot(X,y,“k”。);持有h2 = plot(Xnew,yhat1,“罗”Xnew yhat2,“gx”);h3 = plot(Xnew,ci1,的r -“线宽”4);h4 = plot(Xnew,ci2,“g——”“线宽”2);传奇([h1;h2;h3 (1);h4 (1)),...“数据”预测估计的“墨西哥人估计”“预测独联体”“墨西哥人独联体”});包含(“重量”);ylabel (“英里”);

图中包含一个轴对象。axis对象包含7个line类型的对象。这些对象表示数据、预测估计、MEX估计、预测ci、MEX ci。

输入参数

全部折叠

线性回归模型对象,指定为LinearModel通过使用fitlmstepwiselm,或CompactLinearModel通过使用紧凑的

新的预测器输入值,指定为表、数据集数组或矩阵。每行Xnew对应一个观察结果,每一列对应一个变量。

  • 如果Xnew是表或数据集数组,则它必须包含与PredictorNames的属性mdl

  • 如果Xnew是一个矩阵,它必须有相同数量的变量(列)在相同的顺序预测器输入用于创建mdl.请注意,Xnew还必须包含在拟合模型中未用作预测因子的任何预测变量。此外,所有变量在创建mdl必须是数字。要将数值预测器视为分类的,请使用“CategoricalVars”参数的名称-值对mdl

数据类型:||表格

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:[ypred,yci] = predict(Mdl,Xnew,'Alpha',0.01,'Simultaneous',true)返回置信区间开办99%的置信水平,同时计算所有预测值。

置信区间的显著性级别,指定为由逗号分隔的对组成“α”和范围[0,1]中的数值。的置信水平开办等于100 (1 -α) %α是置信区间不包含真实值的概率。

例子:“阿尔法”,0.01

数据类型:|

预测类型,指定为逗号分隔的对,由“预测”,要么“曲线”“观察”

预测变量的回归模型X以及响应变量y有形式

yfX) +ε

在哪里f是否拟合回归函数和ε是一个随机噪声项。

  • 如果“预测”“曲线”,然后预测预测置信范围fXnew,拟合响应为Xnew

  • 如果“预测”“观察”,然后预测预测置信范围y时的响应观测值Xnew

的边界y比的边界宽吗fX因为噪声项有额外的可变性。

例子:“预测”,“观察”

标志,以计算同时的置信范围,指定为逗号分隔的对,由“同时”不是真就是假。

  • 真正的- - - - - -预测中所有预测值对应的响应值曲线计算置信界限Xnew,使用Scheffe方法。上界和下界之间的范围包含由100(1 - α)%置信度的真实响应值组成的曲线。

  • - - - - - -预测中每个观测点的响应值计算置信范围Xnew.响应值在特定预测值处的置信区间包含具有100(1 - α)%置信度的真实响应值。

同时边界比单独边界宽,因为要求响应值的整个曲线在边界内比要求单个预测值的响应值在边界内更严格。

例子:“同步”,真的

输出参数

全部折叠

预测响应值在Xnew,作为数字向量返回。

响应的置信区间,作为两列矩阵返回,每行提供一个区间。置信区间的含义取决于名称-值对参数的设置“α”“预测”,“同时”

选择功能

  • 函数宏指令返回与。相同的预测预测.的函数宏指令函数可以接受多个输入参数,每个预测变量都有一个输入,这更容易用于从表或数据集数组创建的模型。注意函数宏指令函数没有给出其预测的置信区间。

  • 随机返回带有附加噪声的预测。

  • 使用plotSlice创建包含一系列图的图形,每个图表示通过预测回归曲面的一个切片。每个图显示拟合的响应值作为一个单一预测变量的函数,其他预测变量保持不变。

扩展功能

版本历史

在R2012a中引入