预测
描述
例子
使用回归神经网络预测测试集的反应
测试集预测响应值通过使用一个训练有素的回归神经网络模型。
加载病人
从数据集中数据集。创建一个表,每一行对应一个病人和每一列对应一个诊断变量。使用收缩压
变量作为响应变量,其余变量的预测因子。
负载病人台=表(收缩压舒张压、身高、吸烟、体重);
单独的数据训练集tblTrain
和一个测试集tblTest
通过使用一个nonstratified抵抗分区。软件储备大约30%的测试数据集,并使用其余的观察观察的训练数据集。
rng (“默认”)%的再现性分区c = cvpartition(大小(1台),“坚持”,0.30);trainingIndices =培训(c);testIndices =测试(c);tblTrain =(资源(trainingIndices:);tblTest =(资源(testIndices:);
火车回归神经网络模型使用训练集,指定收缩压
列的tblTrain
作为反应变量。指定标准化数值预测,并设置迭代限制为50。默认情况下,神经网络模型有一个完全连接层10输出,不包括最终的完全连接层。
Mdl = fitrnet (tblTrain,“收缩”,…“标准化”,真的,“IterationLimit”,50);
预测患者的收缩压水平测试集。
tblTest predictedY =预测(Mdl);
可视化结果通过使用散点图参考线。情节沿着纵轴的预测值和真实的响应值沿水平轴。点参考线显示正确的预测。
情节(tblTest.Systolic predictedY,“。”)举行在情节(tblTest.Systolic tblTest.Systolic)从包含(“真正的收缩压水平”)ylabel (“预测收缩压水平”)
因为许多点远离参考线,默认的神经网络模型与一个完全连接层10码似乎并不是一个伟大的收缩压水平的预测。
选择包括在回归神经网络特性
通过比较测试集进行特征选择和预测损失。比较的测试集指标回归神经网络模型训练使用所有测试集的预测指标对模型训练使用只有一个子集的预测。
加载示例文件fisheriris.csv
,其中包含虹膜数据包括花萼长度、宽度萼片,花瓣长度,花瓣宽度,和物种类型。读取文件成一个表。
fishertable = readtable (“fisheriris.csv”);
单独的数据训练集trainTbl
和一个测试集testTbl
通过使用一个nonstratified抵抗分区。软件储备大约30%的测试数据集,并使用其余的观察观察的训练数据集。
rng (“默认”)c = cvpartition(大小(fishertable, 1),“坚持”,0.3);trainTbl = fishertable(培训(c):);testTbl = fishertable(测试(c):);
火车一个回归使用所有的预测神经网络模型训练集,并使用所有的预测,除了训练另一个模型PetalWidth
。对于这两种模型,指定PetalLength
作为响应变量,预测和规范。
allMdl = fitrnet (trainTbl,“PetalLength”,“标准化”,真正的);subsetMdl = fitrnet (trainTbl,“PetalLength ~ SepalLength + SepalWidth +物种”,…“标准化”,真正的);
比较测试集均方误差(MSE)的两个模型。更小的均方误差值显示更好的性能。
allMSE =损失(allMdl testTbl)
allMSE = 0.0856
subsetMSE =损失(subsetMdl testTbl)
subsetMSE = 0.0881
对于每个模型,比较了测试集预测花瓣长度真正的花瓣长度。图预测的花瓣长度沿垂直轴沿水平轴和真正的花瓣长度。点参考线显示正确的预测。
tiledlayout (2, 1)%顶轴ax₁= nexttile;allPredictedY =预测(allMdl testTbl);情节(ax₁, testTbl.PetalLength allPredictedY,“。”)举行在情节(ax₁, testTbl.PetalLength testTbl.PetalLength)从包含(ax₁“真正的花瓣长度”)ylabel (ax₁,“花瓣长度预测”)标题(ax₁,“预测”)%底部轴ax2 = nexttile;subsetPredictedY =预测(subsetMdl testTbl);情节(ax2、testTbl.PetalLength subsetPredictedY,“。”)举行在情节(ax2、testTbl.PetalLength testTbl.PetalLength)从包含(ax2,“真正的花瓣长度”)ylabel (ax2,“花瓣长度预测”)标题(ax2,“子集预测”)
因为两种模型似乎表现良好,预测分散在参考线附近,考虑使用该模型使用所有预测除了训练PetalWidth
。
预测使用层回归神经网络模型的结构
看到回归神经网络模型的层共同预测响应值一个观察。
加载示例文件fisheriris.csv
,其中包含虹膜数据包括花萼长度、宽度萼片,花瓣长度,花瓣宽度,和物种类型。读取文件成一个表,并显示表的前几行。
fishertable = readtable (“fisheriris.csv”);头(fishertable)
SepalLength SepalWidth PetalLength PetalWidth物种___________ __________ ___________ __________ __________ 5.1 3.5 1.4 1.4 0.2 4.9 {‘setosa} 3 {‘setosa} 4.7 3.2 1.3 0.2 0.2 {‘setosa} 4.6 3.1 1.5 0.2 {‘setosa} 5 3.6 1.4 0.2 {‘setosa} 5.4 3.9 1.7 0.4 {‘setosa} 4.6 3.4 1.4 0.3 {‘setosa} 5 3.4 1.5 0.2 {' setosa '}
火车回归神经网络模型使用指定的数据集PetalLength
变量和使用其他数字变量的响应预测。
Mdl = fitrnet (fishertable,“PetalLength ~ SepalLength + SepalWidth + PetalWidth”);
从数据集选择十五观察。看看层神经网络以观察和返回一个预测响应值newPointResponse
。
newPoint = Mdl.X{15日:}
newPoint =1×35.8000 4.0000 0.2000
firstFCStep = (Mdl.LayerWeights {1}) * newPoint”+ Mdl.LayerBiases {1};reluStep = max (firstFCStep, 0);finalFCStep = (Mdl.LayerWeights{结束})* reluStep + Mdl.LayerBiases{结束};newPointResponse = finalFCStep
newPointResponse = 1.6716
检查返回的一个预测匹配预测
对象的功能。
newPoint predictedY =预测(Mdl)
predictedY = 1.6716
isequal (newPointResponse predictedY)
ans =逻辑1
两个结果匹配。
输入参数
Mdl
- - - - - -回归神经网络训练
RegressionNeuralNetwork
模型对象|CompactRegressionNeuralNetwork
模型对象
回归神经网络训练,指定为一个RegressionNeuralNetwork
模型对象或CompactRegressionNeuralNetwork
模型对象返回的fitrnet
或紧凑的
,分别。
X
- - - - - -预测数据用于生成响应
数字矩阵|表
预测数据用于生成反应,指定为一个数字矩阵或表。
默认情况下,每一行X
对应于一个观察,每一列对应一个变量。
一个数字矩阵:
变量的列
X
必须有相同的订单预测变量,训练吗Mdl
。如果你训练
Mdl
使用一个表(例如,资源描述
),资源描述
只包含数字预测变量,然后X
可以是一个数字矩阵。将数值预测资源描述
分类在训练、识别分类预测使用CategoricalPredictors
名称-值参数fitrnet
。如果资源描述
包含了异构预测变量(例如,数字和分类数据类型)X
是一个数字矩阵,然后呢预测
抛出一个错误。
一个表:
预测
不支持多列变量或细金宝app胞数组以外的细胞阵列的特征向量。如果你训练
Mdl
使用一个表(例如,资源描述
),那么所有的预测变量X
必须有相同的变量名和数据类型的变量训练吗Mdl
(存储在Mdl.PredictorNames
)。然而,列的顺序X
不需要对应的列顺序资源描述
。同时,资源描述
和X
可以包含额外的变量(响应变量,观察体重、等等),但预测
忽略了它们。如果你训练
Mdl
使用一个数字矩阵,然后预测名称Mdl.PredictorNames
必须与相应的预测变量的名字X
。使用指定预测名称在训练PredictorNames
名称-值参数fitrnet
。所有的预测变量X
必须是数值向量。X
可以包含额外的变量(响应变量,观察体重、等等),但预测
忽略了它们。
如果你设置“标准化”,真的
在fitrnet
当训练Mdl
,那么软件标准化的数字列预测数据使用对应的均值和标准差。
请注意
如果你东方预测矩阵,以便观察并指定对应列“ObservationsIn”、“列”
,那么你可能会经历显著减少计算时间。你不能指定“ObservationsIn”、“列”
预测数据表。
数据类型:单
|双
|表
维
- - - - - -预测数据观察维度
“行”
(默认)|“列”
预测数据观察维度,指定为“行”
或“列”
。
请注意
如果你东方预测矩阵,以便观察并指定对应列“ObservationsIn”、“列”
,那么你可能会经历显著减少计算时间。你不能指定“ObservationsIn”、“列”
预测数据表。
数据类型:字符
|字符串
选择功能
金宝app仿真软件块
集成神经网络回归模型的预测模型金宝app®,你可以使用RegressionNeuralNetwork预测块的统计和机器学习的图书馆或MATLAB工具箱™®功能块的预测
函数。有关示例,请参见预测使用RegressionNeuralNetwork预测块的反应和预测类标签使用MATLAB函数块。
当决定使用哪种方法,考虑以下几点:
如果你使用统计和机器学习工具库,您可以使用定点的工具(定点设计师)一个浮点模型转换为定点。
金宝app支持适应可变数组必须启用的MATLAB函数块
预测
函数。如果使用MATLAB功能块,您可以使用MATLAB函数之前或之后预处理或后处理预测在同一MATLAB功能块。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
使用
saveLearnerForCoder
,loadLearnerForCoder
,codegen
(MATLAB编码器)生成的代码预测
函数。通过使用保存训练模型saveLearnerForCoder
。定义一个入口点函数,通过使用加载保存模型loadLearnerForCoder
并调用预测
函数。然后使用codegen
入口点函数来生成代码。生成单精度C / c++代码
预测
,指定名称参数“数据类型”、“单身”
当你打电话给loadLearnerForCoder
函数。此表包含的参数
预测
。参数不包括在这个表是完全支持。金宝app论点 笔记和局限性 Mdl
使用笔记和限制的模型对象,明白了代码生成的
CompactRegressionNeuralNetwork
对象。X
X
必须包含数字单精度和双精度矩阵或表变量,分类变量,或两者兼而有之。的行数,或观察
X
可以一个变量的大小,但列的数量X
必须是固定的。如果你想指定
X
作为一个表,那么您的模型必须被训练使用一个表,和你的入口点函数预测必须做到以下几点:接受数据数组。
创建一个表的数据输入参数并指定表中的变量名。
通过表
预测
。
这个表的一个示例工作流,请参阅生成代码对数据表进行分类。在代码生成中使用表格的更多信息,见代码生成表(MATLAB编码器)和表限制代码生成(MATLAB编码器)。
ObservationsIn
的
维
值ObservationsIn
名称-值参数必须是一个编译时常量。例如,使用“ObservationsIn”、“列”
在生成的代码,包括{coder.Constant (“ObservationsIn”), coder.Constant(“列”)}
在arg游戏
的价值codegen
(MATLAB编码器)。
有关更多信息,请参见介绍代码生成。
版本历史
介绍了R2021a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。