预测
预测线性回归模型的响应
语法
描述
例子
预测响应值
创建一个二次模型的汽车里程作为一个函数的重量从carsmall
数据集。
负载carsmallX =重量;y = MPG;mdl = fitlm(X,y,“二次”);
创建对数据的预测反应。
ypred =预测(mdl,X);
把原始反应和预测反应画出来,看看它们有什么不同。
情节(X, y,“o”, X, ypred“x”)传说(“数据”,“预测”)
生成C/ c++预测代码
拟合线性回归模型,然后使用保存模型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 (“英里”);
输入参数
mdl
- - - - - -线性回归模型对象
LinearModel
对象|CompactLinearModel
对象
线性回归模型对象,指定为LinearModel
通过使用fitlm
或stepwiselm
,或CompactLinearModel
通过使用紧凑的
.
Xnew
- - - - - -新的预测器输入值
表格|数据集的数组|矩阵
新的预测器输入值,指定为表、数据集数组或矩阵。每行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.05(默认)|范围为[0,1]的数值
置信区间的显著性级别,指定为由逗号分隔的对组成“α”
和范围[0,1]中的数值。的置信水平开办
等于100 (1 -α
) %.α
是置信区间不包含真实值的概率。
例子:“阿尔法”,0.01
数据类型:单
|双
预测
- - - - - -预测类型
“曲线”
(默认)|“观察”
预测类型,指定为逗号分隔的对,由“预测”
,要么“曲线”
或“观察”
.
预测变量的回归模型X以及响应变量y有形式
y=f(X) +ε,
在哪里f是否拟合回归函数和ε是一个随机噪声项。
如果
“预测”
是“曲线”
,然后预测
预测置信范围f(Xnew),拟合响应为Xnew
.如果
“预测”
是“观察”
,然后预测
预测置信范围y时的响应观测值Xnew
.
的边界y比的边界宽吗f(X)因为噪声项有额外的可变性。
例子:“预测”,“观察”
同时
- - - - - -标记来计算同时的置信范围
假
(默认)|真正的
标志,以计算同时的置信范围,指定为逗号分隔的对,由“同时”
不是真就是假。
真正的
- - - - - -预测
中所有预测值对应的响应值曲线计算置信界限Xnew
,使用Scheffe方法。上界和下界之间的范围包含由100(1 - α)%置信度的真实响应值组成的曲线。假
- - - - - -预测
中每个观测点的响应值计算置信范围Xnew
.响应值在特定预测值处的置信区间包含具有100(1 - α)%置信度的真实响应值。
同时边界比单独边界宽,因为要求响应值的整个曲线在边界内比要求单个预测值的响应值在边界内更严格。
例子:“同步”,真的
输出参数
选择功能
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
使用
saveLearnerForCoder
,loadLearnerForCoder
,codegen
(MATLAB编码器)方法生成代码预测
函数。通过使用保存一个训练好的模型saveLearnerForCoder
.定义一个入口点函数,该函数通过loadLearnerForCoder
并调用预测
函数。然后使用codegen
为入口点函数生成代码。该表包含关于的参数的注释
预测
.完全支持不包括在本表中的参数。金宝app论点 注意事项和限制 mdl
假设你训练一个线性模型使用
fitlm
并指定“RobustOpts”
属性的匿名函数句柄的结构RobustWgtFun
字段中,使用saveLearnerForCoder
保存模型,然后使用loadLearnerForCoder
加载模型。在这种情况下,loadLearnerForCoder
无法恢复健壮的属性到MATLAB中®工作区。然而,loadLearnerForCoder
可以在编译时在入口点函数内加载模型以生成代码。有关模型对象的使用说明和限制,请参见代码生成的
CompactLinearModel
对象。
Xnew
Xnew
必须是单精度或双精度矩阵或包含数值变量、类别变量或两者的表。的行数,或观测值
Xnew
可以是大小可变的,但列的数量呢Xnew
必须修复。如果你想指定
Xnew
作为一个表,那么你的模型必须使用一个表来训练,你必须确保你的预测入口点函数:以数组形式接受数据
根据数据输入参数创建一个表,并指定表中的变量名
把表格传给
预测
有关此表工作流的示例,请参见生成代码对表中的数据进行分类.有关在代码生成中使用表的详细信息,请参见表的代码生成(MATLAB编码器)而且代码生成的表限制(MATLAB编码器).
名-值对参数 名称-值参数中的名称必须是编译时常量。例如,要允许在生成的代码中使用用户定义的重要级别,请使用include
{coder.Constant(α),0}
在arg游戏
的价值codegen
(MATLAB编码器).
有关更多信息,请参见代码生成简介.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
本功能完全支持GPU阵列。金宝app有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
在R2012a中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。