主要内容

预测

预测线性回归模型的响应

描述

例子

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”)传说('数据''预测'

图中包含一个坐标轴。轴线包含2个线型对象。这些对象表示数据、预测。

拟合线性回归模型,使用保存模型Savelarnerforcoder..定义一个入口点函数,通过使用loadLearnerForCoder并致电预测拟合模型的函数。然后使用codegen(MATLAB编码器)要生成C / C ++代码。请注意,生成C / C ++代码需要MATLAB®Coder™。

此示例简要介绍了用于预测命令行的线性回归模型的代码生成工作流程。有关更多详细信息,请参阅机器学习模型在命令行预测的代码生成.您也可以使用MATLAB Coder应用程序生成代码基于MATLAB编码器的机器学习模型预测代码生成

火车模型

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

负载carsmallx =重量;y = mpg;mdl = fitlm(x,y,'二次');

保存模型

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

SavelAlnerForCoder(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] =预测(CompactMdl x,变长度输入宗量{:});结束

添加% # codegen编译器指令(或Pragma)到函数签名后的入门点函数,表示您打算为Matlab算法生成代码。添加此指令指示MATLAB代码分析仪帮助您诊断和修复将在代码生成中导致错误的违规。

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

生成代码

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

如果在编译时观察值的数量未知,还可以使用coder.typeof(MATLAB编码器).有关详细信息,请参阅为代码生成指定可变大小参数指定入口点功能输入的属性(MATLAB编码器)

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

codegen生成MEX函数mypredictQLM_mex具有平台依赖的扩展。

验证生成的代码

比较预测和置信区间使用预测mypredictQLM_mex.以与相同的顺序指定名称值对参数arg游戏参数codegen

xnew = sort(x);[Yhat1,CI1] =预测(MDL,XNew,“α”, 0.1,'同时',真正的);[yhat2,ci2] = mypredictqlm_mex(xnew,“α”, 0.1,'同时',真正的);

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

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

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

绘制返回值以供比较。

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

图中包含一个坐标轴。轴线包含7个线型对象。这些对象代表Data, predict estimate, MEX estimate, predict CIs, MEX CIs。

输入参数

全部折叠

线性回归模型对象,指定为alinearmodel.使用的对象fitlm步骤行程,或者一个CompactLinearModel使用的对象袖珍的

新的预测值输入值,指定为表,数据集数组或矩阵。每一排Xnew对应于一个观察,并且每列对应于一个变量。

  • 如果Xnew是表还是数据集数组,它必须包含与预测的属性mdl

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

数据类型:|双倍的|表格

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:[ypred,开办]=预测(Mdl Xnew,“阿尔法”,0.01,“同时”,真的)返回置信区间开办在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,作为数字向量返回。

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

选择功能

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

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

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

扩展功能

介绍了R2012a