主要内容

使用RegressionEnsemble预测块预测响应

此示例演示如何使用最优超参数训练集成模型,然后使用RegressionEnsemble预测block用于Simulink®中的响应预测。金宝app该块接受观测数据(预测数据),并使用训练好的回归集成模型返回观测的预测响应。

最优超参数训练回归模型

加载carbig数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。

负载carbig
名称大小字节分类属性加速度406x1 3248双气缸406x1 3248双排量406x1 3248双马力406x1 3248双MPG 406x1 3248双Mfg 406x13 10556 char型号406x36 29232 char Model_Year 406x1 3248双原产地406x7 5684 char重量406x1 3248双cyl4 406x5 4060 char org 406x7 5684 char当406x5 4060 char

起源是分类变量。为RegressionEnsemble Predict块训练模型时,必须使用类别预测器进行预处理dummyvar函数在模型中包含类别预测器。您不能使用“CategoricalPredictors”名称-值参数。创建虚拟变量起源

c_Origin = categorical(cellstr(Origin));d_Origin = dummyvar(c_Origin);

dummyvar的每个类别创建虚拟变量c_Origin.中确定类别的数量c_Origin和虚变量的个数d_Origin

独特的(cellstr(起源))
ans =7 x1细胞{“英格兰”}{“法国”}{“德国”}{“意大利”}{‘日本’}{“瑞典”}{'美国'}
大小(d_Origin)
ans =1×2406年7

dummyvar的每个类别创建虚拟变量起源

创建一个包含六个数字预测变量和七个虚拟变量的矩阵起源.另外,创建响应变量的向量。

X =[加速度,气缸,排量,马力,型号,年份,重量,d_Origin];Y = mpg;

使用X而且Y有这些选项:

  • 指定“OptimizeHyperparameters”作为“汽车”用最优超参数训练集合。的“汽车”选项查找的最佳值“方法”“NumLearningCycles”,“LearnRate”(适用的方法)的fitrensemble而且“MinLeafSize”树型学习者。

  • 为了重现性,设置随机种子并使用“expected-improvement-plus”采集功能。另外,为了随机森林算法的再现性,请指定“复制”作为真正的对于树型学习者。

rng (“默认”) t = templateTree(“复制”,真正的);ensMdl = fitrensemble(X,Y,“学习者”t...“OptimizeHyperparameters”“汽车”...“HyperparameterOptimizationOptions”...结构(“AcquisitionFunctionName”“expected-improvement-plus”))
|===================================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | |方法NumLearningC - | LearnRate | MinLeafSize | | | |结果日志(1 +损失)运行时| |(观察)| (estim) | |永昌龙  | | | |===================================================================================================================================| | 最好1 | | 2.7403 | 11.322 | 2.7403 | 2.7403 |袋| 184 | - | 69 | | 2 |接受| 4.1317 | 0.62726 | 2.7403 | 2.8143 | 10袋| | | 176 | | 3 |的| 2.1687 | 12.19 | 2.1687 | 2.1689 | 118 | |包- | 2 | | 4 |接受| 2.2747 | 1.6262 | 2.1687 | 2.1688 | LSBoost 24 | 0.37779 | 7 | | | 5 |的| 2.1421 | 3.7903 | 2.1421 | 2.1422 |袋| 75 | - | 1 | | 6 |最好| 2.1365 | 16.357 | 2.1365 | 2.1365 |袋| 500 | - | 1 | | | 7日接受| 2.4302 | 1.5493 | 2.1365 | 2.1365 | LSBoost 37 | 0.94779 | 71 | | | |接受8 | 2.1813 | 22.167 | 2.1365 | 2.1365 | LSBoost | 497 | 0.023582 | 1 | | | 9日接受| 6.1992 | 3.8232 | 2.1365 | 2.1363 | LSBoost | 91 | 0.0012439 | 1 | | 10 |接受| 2.2119 |17.927 | 2.1365 | 2.1363 | LSBoost | 497 | 0.087441 | 11 | | | 11日接受| 4.7782 | 0.74721 | 2.1365 | 2.1366 | LSBoost 15 | 0.055744 | 1 | | | | 12日接受| 2.3093 | 17.546 | 2.1365 | 2.1366 | LSBoost | 493 | 0.39665 | 1 | | | 13日接受| 4.1304 | 6.7352 | 2.1365 | 2.1366 | LSBoost | 198 | 0.33031 | 201 | | | 14日接受| 2.595 | 0.67786 | 2.1365 | 2.1367 | LSBoost | 16 | 0.99848 | 1 | | 15 |接受| 2.6643 | 1.1306 | 2.1365 | 2.1363 | LSBoost 25 | | 0.97637 | 5 | | | 16日接受| 2.2388 |0.65674 | 2.1365 | 2.1363 | LSBoost | 11 | 0.42205 | 1 | | | 17日接受| 4.1304 | 1.7505 | 2.1365 | 2.1789 | LSBoost 19 | 0.79808 | 202 | | | | 18日接受| 2.3399 | 2.9489 | 2.1365 | 2.1363 | LSBoost | 71 | 0.44856 | 1 | | | 19日接受| 2.7734 | 3.8879 | 2.1365 | 2.1394 | LSBoost | 107 | 0.020776 | 2 | | 20 |接受| 2.3204 | 14.166 | 2.1365 | 2.136 |袋| 463 | - | | 16|===================================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | |方法NumLearningC - | LearnRate | MinLeafSize | | | |结果日志(1 +损失)运行时| |(观察)| (estim) | |永昌龙  | | | |===================================================================================================================================| | 21日|接受| 2.2146 | 16.589 | 2.1365 | 2.1361 | LSBoost | 491 | 0.10045 | 55 | | | 22日接受| 4.3329 | 0.77647 | 2.1365 | 2.137 | LSBoost | 11 | 0.095932 | 1 | | | 23日接受| 2.6395 | 0.69262 |15 | 0.14881 | 2.1365 | 2.1366 | LSBoost | 17 | | | 24日接受| 2.6223 | 17.62 | 2.1365 | 2.137 | LSBoost | 497 | 0.96521 | 27日| | | 25日接受| 2.197 | 9.3208 | 2.1365 | 2.1366 | LSBoost | 268 | 0.066671 | 29日| | | 26日接受| 2.4544 | 0.67909 | 2.1365 | 2.1398 | LSBoost | 10 | 0.96554 | 28 | | | 27日接受| 2.1581 | 17.448 | 2.1365 | 2.1386 | LSBoost | 499 | 0.022533 | 37 | | | 28日接受| 2.187 | 18.323 | 2.1365 | 2.1402 | LSBoost | 499 | 0.022909 | 6 | | | 29日接受| 4.1304 | 16.33 | 2.1365| 2.1366 | LSBoost | 494 | 0.035155 | 202 | | 30 | Accept | 2.2396 | 17.152 | 2.1365 | 2.1366 | LSBoost | 485 | 0.21133 | 21 |

图中包含一个轴。标题为Min目标vs.函数计算数量的轴包含2个类型为line的对象。这些对象代表最小观测目标,估计最小目标。

__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:341.8323秒总目标函数评估时间:256.5581最佳观测可行点:Method NumLearningCycles LearnRate MinLeafSize ______ _________________ _________ ___________ Bag 500 NaN 1观测目标函数值= 2.1365估计目标函数值= 2.1366函数评估时间= 16.3572最佳估计可行点(根据模型):方法NumLearningCycles LearnRate MinLeafSize ______ _________________ _________ ___________ Bag 500 NaN 1估计目标函数值= 2.1366估计函数评估时间= 15.9331
ensMdl = RegressionBaggedEnsemble ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 398 HyperparameterOptimizationResults: [1x1 BayesianOptimization] NumTrained: 500 Method: 'Bag' LearnerNames: {'Tree'} reasonforterminate: '完成所要求的训练周期数后正常终止。'FitInfo: [] FitInfoDescription: 'None'正则化:[]FResample: 1替换:1 UseObsForLearner: [398x500 logical]属性,方法

fitrensemble返回一个RegressionBaggedEnsemble对象,因为该函数查找随机森林算法(“包”)为最优方法。

创建Simul金宝appink模型

本例提供了Simulink模型金宝appslexCarDataRegressionEnsemblePredictExample.slx,包括RegressionEnsemble预测块。您可以打开Simulink模型或创金宝app建本节所述的新模型。

打开Simulin金宝appk模型slexCarDataRegressionEnsemblePredictExample.slx

SimMdlName =“slexCarDataRegressionEnsemblePredictExample”;open_system (SimMdlName)

PreLoadFcn的回调函数slexCarDataRegressionEnsemblePredictExample包括加载样本数据的代码,使用最优超参数训练模型,并为Simulink模型创建输入信号。金宝app如果您打开Simulink模型,金宝app那么软件将运行代码PreLoadFcn在加载Simulink模型之前。金宝app若要查看回调函数,请在设置章节建模选项卡上,单击模型设置并选择模型属性.然后,在回调选项卡,选择PreLoadFcn中的回调函数。模型的回调窗格。

要创建一个新的Simulink模金宝app型,请打开空白模型模板,并添加RegressionEnsemble Predict块。添加import和Outport块,并将它们连接到RegressionEnsemble Predict块。

双击RegressionEnsemble Predict块,打开块参数对话框。指定选择训练过的机器学习模型参数,ensMdl,这是包含训练过的模型的工作区变量的名称。单击刷新按钮。对话框显示用于训练模型的选项ensMdl训练过的机器学习模型

RegressionEnsemble Predict块期望一个包含13个预测值的观测值。双击“导入”块,并设置港维到13号信号的属性选项卡。

为Simulink模型创建结构数组形式的输入信号。金宝app结构数组必须包含以下字段:

  • 时间-观测数据进入模型的时间点。方向必须与预测器数据中的观测值相对应。在这个例子中,时间一定是列向量。

  • 信号—一个1乘1的结构数组,描述输入数据并包含字段而且,在那里是一个矩阵的预测数据,和是预测变量的数量。

对象创建适当的结构数组slexCarDataRegressionEnsemblePredictExample模型carsmall数据集。当你转换时起源carsmall分类数据类型数组c_Origin_small,使用类别(c_Origin)c_Origin而且c_Origin_small以相同的顺序排列相同数量的类别。

负载carsmallc_Origin_small = categorical(cellstr(Origin),categories(c_Origin));d_Origin_small = dummyvar(c_Origin_small);testX =[加速度,气缸,排量,马力,型号年,重量,d_Origin_small];testX = rmmissing(testX);carsmallInput。时间= (0:size(testX,1)-1)'; carsmallInput.signals(1).values = testX; carsmallInput.signals(1).dimensions = size(testX,2);

从工作空间导入信号数据:

  • 打开“配置参数”对话框。在建模选项卡上,单击模型设置

  • 数据导入/导出窗格中,选择输入复选框,然后输入carsmallInput在相邻的文本框中。

  • 解算器窗格中,在仿真时间,设置停止时间carsmallInput.time(结束).下解算器的选择,设置类型固定步,并设置解算器离散(无连续状态)

详情请参见模拟加载信号数据(金宝app模型)

模拟模型。

sim (SimMdlName);

当import块检测到观察结果时,它将观察结果引导到RegressionTree Predict块。您可以使用模拟数据检查器(金宝app模型)查看Outport块的日志数据。

另请参阅

相关的话题