文档帮助中心
类:RegressionLinear
预测线性回归模型的响应
X YHat =预测(Mdl)
YHat =预测(Mdl X、名称、值)
例子
伊哈特=预测(Mdl,X)返回预测器数据中每个观测的预测响应X基于训练的线性回归模型Mdl.伊哈特中每个正则化强度的响应Mdl.
伊哈特=预测(Mdl,X)
伊哈特
Mdl
X
伊哈特=预测(Mdl,X,名称,值)返回一个或多个指定的附加选项的预测响应名称,值对参数。例如,指定预测器数据中的列与观测值对应。
伊哈特=预测(Mdl,X,名称,值)
名称,值
全部展开
RegressionLinear
线性回归模型,指定为RegressionLinear模型对象。您可以创建RegressionLinear模型对象使用fitrlinear.
fitrlinear
预测器数据,指定为n——- - - - - -p全或稀疏矩阵。这个方向的X表示行对应于单个观察值,列对应于单个预测变量。
如果您对预测器矩阵进行定位,使观察结果与列对应并指定“ObservationsIn”、“列”,那么您可能会经历计算时间的显著减少。
“ObservationsIn”、“列”
的长度Y观察的次数X必须是相等的。
Y
数据类型:单|双
单
双
指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数名称1,值1,…,名称,值.
的名字
价值
名称1,值1,…,名称,值
“观测信号”
“行”
“列”
预测器数据观测维数,由指定的逗号分隔对组成“观测信号”和“列”或“行”.
如果您对预测器矩阵进行定位,使观察结果与列对应并指定“ObservationsIn”、“列”,那么您可能会经历优化执行时间的显著减少。
预测的响应,返回为n——- - - - - -l数字矩阵。n观察的次数在吗X和l是中正则化强度的数量Mdl。lambda.YHat (我,j)是对观察的反应吗我采用具有正规化强度的线性回归模型Mdl。lambda(j).
Mdl。lambda
YHat (我,j)
我
j
Mdl。lambda(j)
利用正则化强度模型预测响应j是 y ^ j = x β j + b j .
x是来自预测数据矩阵的观察值X,为行向量。
β j 为估计的系数列向量。软件将这个向量存储在其中Mdl。β(:,j).
Mdl。β(:,j)
b j 软件存储在其中的估计的标量偏差Mdl。偏差(j).
Mdl。偏差(j)
从这个模型模拟10000个观察结果
y = x 1 0 0 + 2 x 2 0 0 + e .
X = x 1 , . . . , x 1 0 0 0 是一个10000 × 1000稀疏矩阵,含有10%的非零标准正规元素。
e为随机正态误差,均值为0,标准差为0.3。
rng (1)%为了再现性n = 1 e4;d = 1 e3;新西兰= 0.1;X = sprandn (n, d,新西兰);Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);
训练线性回归模型。保留30%的观察值作为保留样本。
CVMdl = fitrlinear (X, Y,“坚持”, 0.3);Mdl = CVMdl。训练有素的{1}
Mdl = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double] Bias: -0.0066 Lambda: 1.4286e-04 Learner: 'svm'属性,方法
CVMdl是一个RegressionPartitionedLinear模型。它包含属性训练有素的,这是一个1 × 1单元格数组RegressionLinear软件使用训练集进行训练的模型。
CVMdl
RegressionPartitionedLinear
训练有素的
从分区定义中提取训练和测试数据。
trainIdx =培训(CVMdl.Partition);testIdx =测试(CVMdl.Partition);
预测训练和测试样本的反应。
yHatTrain =预测(Mdl X (trainIdx:));yHatTest =预测(Mdl X (testIdx:));
因为有一个正规化强度Mdl,yHatTrain和yHatTest是数字向量。
yHatTrain
yHatTest
预测最佳表现,线性回归模型,使用套索惩罚和最小二乘。
模拟10000个观察值,如测试样本预测的反应.
创建一组15个对数间隔的正则化强度 1 0 - 5 通过 1 0 - 1 .
λ= logspace(5、1、15);
旨在模型。要提高执行速度,可以调换预测器数据并指定观察结果在列中。利用SpaRSA优化目标函数。
X = X ';CVMdl = fitrlinear (X, Y,“观测信号”,“列”,“KFold”5.“λ”λ,...“学习者”,“leastsquares”,“规划求解”,“sparsa”,“正规化”,“套索”); numCLModels=numel(CVMdl.Trained)
numCLModels = 5
CVMdl是一个RegressionPartitionedLinear模型。因为fitrlinear实施5倍交叉验证,CVMdl包含5RegressionLinear软件在每次折叠时训练的模型。
显示第一个经过训练的线性回归模型。
Mdl1 = CVMdl。训练有素的{1}
Mdl1=RegressionLinear ResponseName:'Y'ResponseTransform:'none'Beta:[1000x15 double]偏差:[1x15 double]Lambda:[1x15 double]学习者:'leastsquares'属性、方法
Mdl1是一个RegressionLinear模型对象。fitrlinear构建Mdl1通过前四次训练。因为λ是一系列正则化强度,你可以想到Mdl1作为11个模型,其中每个正则化强度对应一个模型λ.
Mdl1
λ
估计交叉验证的MSE。
mse = kfoldLoss (CVMdl);
更高的值λ导致预测变量的稀疏性,这是回归模型的一个很好的品质。对于每个正则化强度,使用整个数据集和交叉验证模型时相同的选项来训练线性回归模型。确定每个模型的非零系数的数目。
Mdl=菲特线性(X,Y,“观测信号”,“列”,“λ”λ,...“学习者”,“leastsquares”,“规划求解”,“sparsa”,“正规化”,“套索”); numNZCoeff=sum(Mdl.Beta~=0);
在同一图中,绘制每个正则化强度的交叉验证的MSE和非零系数的频率。在对数尺度上绘制所有变量。
图;[h, hL1, hL2] = plotyy (log10(λ)log10 (mse),...log10(λ)log10 (numNZCoeff));hL1。标志=“哦”;hL2。标志=“哦”;ylabel (h (1),“log_ {10} MSE的) ylabel (h (2),“log_ {10} nonzero-coefficient频率”)包含(“log_{10}λ的)举行从
选择平衡预测变量稀疏性和低MSE的正则化强度指标(例如,兰姆达(10)).
兰姆达(10)
idxFinal = 10;
提取对应最小MSE的模型。
idxFinal MdlFinal = selectModels (Mdl)
MdlFinal = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double] Bias: -0.0050 Lambda: 0.0037初学者:'最小二乘'属性,方法
idxNZCoeff =找到(MdlFinal.Beta ~ = 0)
idxNZCoeff =2×1100 200
EstCoeff = Mdl.Beta (idxNZCoeff)
EstCoeff =2×11.0051 1.9965
MdlFinal是一个RegressionLinear一正则化强度模型。非零系数EstCoeff与模拟数据的系数很接近。
MdlFinal
EstCoeff
模拟10个新的观测结果,并使用最佳模型预测相应的响应。
XNew = sprandn (d, 10日,新西兰);YHat =预测(MdlFinal XNew,“观测信号”,“列”);
此函数完全支持高阵列。万博1manbetx使用这个函数,您可以使用在内存中或高数据上训练的模型。
有关更多信息,请参见高大的数组(MATLAB)。
使用注意事项及限制:
您可以为两者生成C/ c++代码预测和更新通过使用编码器配置器。或者,只生成代码预测通过使用saveLearnerForCoder,loadLearnerForCoder,codegen.
预测
更新
saveLearnerForCoder
loadLearnerForCoder
codegen
代码生成的预测和更新创建一个编码器配置器LearnerCoder配置器然后通过使用generateCode. 然后,您可以在生成的代码中更新模型参数,而无需重新生成代码。
LearnerCoder配置器
generateCode
代码生成的预测通过使用保存一个训练过的模型saveLearnerForCoder.定义一个入口点函数,通过使用loadLearnerForCoder并调用预测函数。然后使用codegen为入口点函数生成代码。
这个表格包含关于的参数的注释预测.表中未包含的参数完全支持。万博1manbetx
有关模型对象的使用说明和限制,请参见代码生成的RegressionLinear对象。
必须是单精度或双精度矩阵,并且可以是可变大小的。
如果您指定“ObservationsIn”、“行”(默认值),然后是X必须numel(Mdl.Predictor名称).行和列必须分别对应于观察值和预测值。
“ObservationsIn”、“行”
numel(Mdl.Predictor名称)
如果您指定“ObservationsIn”、“列”,然后是输入的行数X必须numel(Mdl.Predictor名称).行和列必须分别对应于预测器和观察值。
名称-值对参数中的名称必须是编译时常量。
的值“观测信号”名称-值对参数必须是编译时常量。例如,使用“ObservationsIn”、“列”生成的代码中的名称-值对参数,包括{coder.Constant(“ObservationsIn”),coder.Constant(列)}在arg游戏的价值codegen.
{coder.Constant(“ObservationsIn”),coder.Constant(列)}
arg游戏
有关更多信息,请参见代码生成简介.
RegressionLinear|fitrlinear
存在versión modificada de este ejemplo en su sistema。¿Prefiere abrir esta versión?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系