主要内容

使用RegressionEnsemble Predict Block预测响应

这个例子展示了如何训练一个具有最优超参数的集成模型,然后使用RegressionEnsemble预测模块用于Simulink®中的响应预测。金宝app该块接受一个观测(预测数据),并使用训练过的回归集成模型返回观测的预测响应。

具有最优超参数的训练回归模型

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

负载carbig
类属性名称大小字节加速度406 x1 3248双气缸406 x1 3248双位移406 x1 3248双马力406 x1 3248双406 MPG x1 3248双生产厂406 * 13 10556 406字符模型406 x36 29232字符Model_Year x1 3248双起源406 x7 5684字符体重406 x1 3248双cyl4 406 x5 4060 406 x5时字符org 406 x7 5684字符4060个字符

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

c_Origin =分类(cellstr(起源));d_Origin = dummyvar (c_Origin);

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

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

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

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

X =(加速度、汽缸、排量、马力、Model_Year重量,d_Origin);Y = MPG;

使用XY这些选项:

  • 指定“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.435 | 2.7403 | 2.7403 |包| 184 | - | 69 | | 2 |接受| 4.1317 | 0.91706 | 2.7403 | 2.8143 | 10袋| | | 176 | | 3 |的| 2.1687 | 12.549 | 2.1687 | 2.1689 |袋| 118 | - | 2 | | 4 |接受| 2.2747 | 1.3956 | 2.1687 | 2.1688 | LSBoost 24 | 0.37779 | 7 | | | 5 |的| 2.1421 | 2.7835 | 2.1421 | 2.1422 |袋| 75 | - | 1 | | 6 |最好| 2.1365 | 16.017 | 2.1365 |2.1365 |袋| 500 | - | 1 | | | 7日接受| 2.4302 | 1.1167 | 2.1365 | 2.1365 | LSBoost 37 | 0.94779 | 71 | | | | 8接受| 2.1813 | 17.953 | 2.1365 | 2.1365 | LSBoost | 497 | 0.023582 | 1 | | | 9日接受| 6.1992 | 3.1024 | 2.1365 | 2.1363 | LSBoost | 91 | 0.0012439 | 1 | | 10 |接受| 2.2119 | 13.615 | 2.1365 | 2.1363 | LSBoost | 497 | 0.087441| 11 | | 11 | Accept | 4.7782 | 0.64123 | 2.1365 | 2.1366 | LSBoost | 15 | 0.055744 | 1 | | 12 | Accept | 2.3093 | 14.923 | 2.1365 | 2.1366 | LSBoost | 493 | 0.39665 | 1 | | 13 | Accept | 4.1304 | 5.7124 | 2.1365 | 2.1366 | LSBoost | 198 | 0.33031 | 201 | | 14 | Accept | 2.595 | 0.58397 | 2.1365 | 2.1367 | LSBoost | 16 | 0.99848 | 1 | | 15 | Accept | 2.6643 | 0.87574 | 2.1365 | 2.1363 | LSBoost | 25 | 0.97637 | 5 | | 16 | Accept | 2.2388 | 0.40237 | 2.1365 | 2.1363 | LSBoost | 11 | 0.42205 | 1 | | 17 | Accept | 4.1304 | 1.6235 | 2.1365 | 2.1789 | LSBoost | 19 | 0.79808 | 202 | | 18 | Accept | 2.3399 | 1.9955 | 2.1365 | 2.1363 | LSBoost | 71 | 0.44856 | 1 | | 19 | Accept | 2.7734 | 3.2141 | 2.1365 | 2.1394 | LSBoost | 107 | 0.020776 | 2 | | 20 | Accept | 2.3204 | 12.808 | 2.1365 | 2.136 | Bag | 463 | - | 16 | |===================================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | Method | NumLearningC-| LearnRate | MinLeafSize | | | result | log(1+loss) | runtime | (observed) | (estim.) | | ycles | | | |===================================================================================================================================| | 21 | Accept | 2.2005 | 13.97 | 2.1365 | 2.137 | LSBoost | 464 | 0.10107 | 10 | | 22 | Accept | 2.479 | 2.1212 | 2.1365 | 2.136 | LSBoost | 40 | 0.93931 | 26 | | 23 | Accept | 4.4432 | 2.7815 | 2.1365 | 2.1366 | LSBoost | 16 | 0.094719 | 189 | | 24 | Accept | 2.2531 | 15.572 | 2.1365 | 2.137 | LSBoost | 497 | 0.32798 | 5 | | 25 | Accept | 2.158 | 12.163 | 2.1365 | 2.1366 | LSBoost | 433 | 0.015137 | 1 | | 26 | Accept | 2.6254 | 11.741 | 2.1365 | 2.1369 | LSBoost | 467 | 0.94779 | 50 | | 27 | Accept | 2.5612 | 0.6285 | 2.1365 | 2.1369 | LSBoost | 12 | 0.19061 | 17 | | 28 | Accept | 2.256 | 0.5848 | 2.1365 | 2.1366 | LSBoost | 10 | 0.37427 | 2 | | 29 | Accept | 2.2065 | 14.879 | 2.1365 | 2.1366 | LSBoost | 499 | 0.018238 | 5 | | 30 | Accept | 2.2539 | 0.47722 | 2.1365 | 2.1369 | Bag | 10 | - | 7 |

图中包含一个轴对象。标题为Min objective vs. Number of function evaluated的axis对象包含2个类型为line的对象。这些对象代表最小观测目标、最小估计目标。

__________________________________________________________ 优化完成。maxobjective达到30个。总函数计算:30总运行时间:233.3597秒总目标函数计算时间:198.5827最佳观测可行点:方法NumLearningCycles LearnRate MinLeafSize ______ _________________ _________ ___________ Bag 500 NaN 1观测目标函数值= 2.1365估计目标函数值= 2.1369函数评估时间= 16.0168最佳估计可行点(根据模型):方法NumLearningCycles LearnRate MinLeafSize ______ _________________ _________ ___________ Bag 500 NaN 1估计目标函数值= 2.1369估计函数评估时间= 15.2825
ensMdl = RegressionBaggedEnsemble ResponseName:‘Y’CategoricalPredictors: [] ResponseTransform:“没有一个”NumObservations: 398 HyperparameterOptimizationResults: [1 x1 BayesianOptimization] NumTrained: 500方法:“袋子”LearnerNames:{‘树’}ReasonForTermination:“终止通常在完成训练周期的请求的数量。FitInfo: [] FitInfoDescription: 'None' Regularization: [] FResample: 1 Replace: 1 UseObsForLearner: [398x500 logical]属性,方法

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

创建模型模型金宝app

这个例子提供了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个预测值的观测值。双击import块,并设置港维到13号信号的属性选项卡。

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

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

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

对象创建适当的结构数组slexCarDataRegressionEnsemblePredictExample模型的carsmall数据集。当你转换起源carsmall分类数据类型数组c_Origin_small,使用类别(c_Origin)c_Originc_Origin_small在相同的顺序中有相同数量的类别。

负载carsmallc_Origin_small =分类(cellstr(起源),类别(c_Origin));d_Origin_small = dummyvar (c_Origin_small);testX =(加速度、汽缸、排量、马力、Model_Year重量,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块的记录数据。

另请参阅

相关的话题