主要内容

预测类标签使用ClassificationEnsemble预测块

这个例子展示了如何训练一个具有最优超参数的集成模型,然后使用ClassificationEnsemble预测在Simulink®中用于标签预测的块。万博1manbetx该块接受一个观测(预测数据),并使用训练的分类集成模型返回观测的预测类标签和类得分。

最优超参数训练分类模型

加载CreditRating_Historical数据集。该数据集包含客户id及其财务比率、行业标签和信用评级。确定样本量。

台= readtable (“CreditRating_Historical.dat”);n =元素个数(台)
n = 31456

显示表的前三行。

头(资源描述,3)
ans =.3×8表ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA工业评分_____ _____ _____ _______ ________ _____ ________ ______ 62394 0.013 0.104 0.036 0.447 0.142 3 { 'BB'} 48608 0.232 0.335 0.062 1.969 0.281 8 { 'A'} 42444 0.311 0.367 0.074 1.935 0.366 1 {'A'}

tbl.Industry是一个行业标签的分类变量。当您训练ClassificationEnsemble Predict块的模型时,您必须使用dummyvar函数将分类预测器包含在模型中。你不能使用“CategoricalPredictors”名称-值参数。创建虚拟变量tbl.Industry

d = dummyvar (tbl.Industry);

dummyvar为每个类别创建虚拟变量tbl.Industry.确定中类别的数量tbl.Industry以及虚拟变量的数量d

独特的(tbl.Industry) '
ans =.1×1212 3 4 5 6 7 8 9 10 11 12
尺寸(d)
ans =.1×23932 12

为预测变量创建一个数值矩阵,为响应变量创建一个单元格数组。

x = [table2array(tbl(:,2:6))d];y = tbl.rating;

X是一个数字矩阵,包含17个变量:5个财务比率和工业标签的12个虚拟变量。X不使用资源描述。ID因为这个变量对预测信用评级没有帮助。Y是字符向量的单元阵列,它包含相应的信用等级。

假设你收到的数据序列,和你有第3000个观察,但还没有收到最后的932呢。将数据划分为现在和将来样本。

prsntX = X (1:3000:);prsntY = Y (1:3000);ftrX = X(3001年:,);ftrY = Y(3001:结束);

使用所有当前可用的数据训练集合prsntXprsntY这些选项:

  • 指定“OptimizeHyperparameters”作为“汽车”训练具有最优超参数的集合。的“汽车”选项查找的最佳值“方法”'numlearnicalnycle', 和“LearnRate”(适用方法)fitcensemble'minleafsize'树的学习者。

  • 为了重现性,设置随机种子并使用'预期改善加'采集功能。此外,对于随机林算法的再现性,请指定“复制”作为真的树的学习者。

  • 通过使用指定类别的顺序'classnames'名称-值参数。来自的输出值分数ClassificationEnsemble Predict块的端口具有相同的顺序。

RNG('默认') t = templateTree(“复制”,真正的);ensMdl = fitcensemble (prsntX prsntY,...'classnames',{“AAA”“AA”“一个”“BBB”“BB”“B”'CCC'},...“OptimizeHyperparameters”“汽车”“学习者”t...'HyperparameterOptimizationOptions'...结构(“AcquisitionFunctionName”'预期改善加')))
|===================================================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | |方法NumLearningC - | LearnRate | MinLeafSize | | |结果| | |运行时(观察)| (estim) | |永昌龙| | ||===================================================================================================================================| | 最好1 | | 0.51133 | 13.652 | 0.51133 | 0.51133 | AdaBoostM2 | 429 | 0.082478 | 871 | | 2 |最好| 0.26133 | 18.827 | 0.26133 | 0.27463 | AdaBoostM2 | 492 | 0.19957 | 4 | | 3 |接受| 0.85133 | 0.76925 | 0.26133| 0.28421 | RUSBoost | | 0.34528 | 1179 | | 4 |接受| 0.263 | 0.61254 | 0.26133 | 0.26124 | AdaBoostM2 | 13 | 0.27107 | 10 | | 5 |的| 0.26 | 0.9413 | 0.26 | 0.26003 | 10袋| | - | 1 | | 6 |接受| 0.28933 | 1.7101 | 0.26 | 0.2602 | 36袋| | | 101 | | 7最好| | 0.25667 | 1.3583 | 0.25667 | 0.25726 | AdaBoostM2 | 33 | 0.99501 | 11最好8 | | | | 0.244 | 28.725 | 0.244 | 0.24406 |袋| 460 | - | 7 | | | 9日接受| 0.246 | 4.19 | 0.244 | 0.24435 | 60袋| | - | 4 | | 10 |接受| 0.25533 | 1.3969 | 0.244 | 0.24437 | AdaBoostM2 33 | | 0.99516 | 1 | | | 11日接受| 0.25733 | 1.5294 | 0.244 | 0.2442 | 25袋| | - | 8 | | | 12日接受| 0.74267 | 16.444 | 0.244 | 0.24995 |包| 488 | - | 1494 | | | 13日接受| 0.28567 | 7.9382 | 0.244 | 0.24624 | RUSBoost | 158 | 0.0010063 | 1 | | | 14日接受| 0.257 | 23.416 | 0.244 | 0.24559 |袋| 491 | - | 31日| | 15 |接受| 0.28433 | 0.71501 | 0.244 | 0.24557 | RUSBoost | 12 | 0.48085 | 6 | | | 16日接受| 0.267 | 17.82 | 0.244 | 0.2456 | AdaBoostM2 | 484 | 0.0028818 | 43 | | 17| Accept | 0.24667 | 33.219 | 0.244 | 0.24601 | Bag | 488 | - | 3 | | 18 | Best | 0.244 | 34.953 | 0.244 | 0.2454 | Bag | 498 | - | 3 | | 19 | Accept | 0.24467 | 31.568 | 0.244 | 0.24489 | Bag | 473 | - | 3 | | 20 | Accept | 0.259 | 19.187 | 0.244 | 0.24488 | AdaBoostM2 | 497 | 0.67001 | 19 | |===================================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Method | NumLearningC-| LearnRate | MinLeafSize | | | result | | runtime | (observed) | (estim.) | | ycles | | | |===================================================================================================================================| | 21 | Accept | 0.27733 | 19.735 | 0.244 | 0.24468 | RUSBoost | 386 | 0.91461 | 2 | | 22 | Accept | 0.245 | 32.172 | 0.244 | 0.2441 | Bag | 482 | - | 4 | | 23 | Accept | 0.244 | 33.117 | 0.244 | 0.24388 | Bag | 497 | - | 4 | | 24 | Accept | 0.245 | 34.32 | 0.244 | 0.24406 | Bag | 497 | - | 4 | | 25 | Best | 0.243 | 33.134 | 0.243 | 0.24394 | Bag | 499 | - | 5 | | 26 | Accept | 0.25733 | 0.55541 | 0.243 | 0.24371 | AdaBoostM2 | 12 | 0.87848 | 53 | | 27 | Accept | 0.263 | 0.52438 | 0.243 | 0.24371 | AdaBoostM2 | 11 | 0.6978 | 2 | | 28 | Accept | 0.24367 | 31.167 | 0.243 | 0.24344 | Bag | 484 | - | 5 | | 29 | Accept | 0.292 | 19.748 | 0.243 | 0.24342 | AdaBoostM2 | 497 | 0.0010201 | 1 | | 30 | Accept | 0.292 | 0.7854 | 0.243 | 0.24342 | RUSBoost | 13 | 0.0012334 | 3 |

__________________________________________________________ 优化完成。maxobjective达到30个。总函数计算:30总运行时间:488.5833秒总目标函数计算时间:464.2275最佳观测可行点:方法NumLearningCycles LearnRate MinLeafSize ______ _________________ _________ ___________ Bag 499 NaN 5观测目标函数值= 0.243估计目标函数值= 0.24342函数评估时间= 33.1343最佳估计可行点(根据模型):方法NumLearningCycles LearnRate MinLeafSize ______ _________________ _________ ___________ Bag 499 NaN 5估计目标函数值= 0.24342估计函数评估时间= 32.1002
ensmdl = classificationbaggedensemble racatingsame:'y'pationoricalpricictors:[] classnames:{'aaa''''''bbb''bb''b'''ccc'} scoreTransform:'none'numobservations:3000 hyperameteroptimationresults:[1×1个贝叶斯optimization] Numtromed:499方法:'Bag'Rearnernames:{'树'}原谅:'完成所要求的训练周期后通常终止。fitinfo:[] fitinfodescription:'无'fresample:1替换:1 meveryobsforlearner:[3000×499逻辑]属性,方法

fitcensemble返回一个ClassificationBaggedensemble.反对,因为该功能查找随机森林算法('包')作为最优方法。

创建模型模型万博1manbetx

该示例提供的仿真模型万博1manbetxslexCreditRatingClassificationEnsemblePredictExample.slx,其中包括ClassificationEnsemble预测堵塞。您可以打开Simulink模型或创万博1manbetx建新模型,如本节所述。

打开Simulin万博1manbetxk模型slexCreditRatingClassificationEnsemblePredictExample.slx

SimMdlName =“slexCreditRatingClassificationEnsemblePredictExample”;Open_System(SIMMDLNAME)

PreLoadFcn回调函数slexCreditRatingClassificationEnsemblePredictExample包括代码加载样本数据,使用最佳超参数训练模型,并创建仿真模型的输入信号。万博1manbetx如果你打开Simulink模型,万博1manbetx然后在软件运行的代码PreLoadFcn加载Simulink模型之前。万博1manbetx要查看回调函数,请在设置上节造型选项卡上,单击模型设置并选择模型属性.然后,在回调选项卡,选择PreLoadFcn回调函数在模型回调窗格。

要创建新的Simulink模型,万博1manbetx请打开空白模型模板,并添加ClassificationEnsemble Predict块。添加import和Outport块,并将它们连接到ClassificationEnsemble Predict块。

双击ClassificationEnsemble Predict块,打开块参数对话框。指定选择训练过的机器学习模型参数,ensMdl,这是包含训练的模型工作空间变量的名称。点击刷新按钮。该对话框显示的选项用来训练模型ensMdl训练有素的机器学习模型.选择添加输出端口,用于预测级得分复选框以添加第二个输出端口分数

ClassificationEnsemble Predict块期望一个包含17个预测值的观测值。双击import块,并设置港维17对信号的属性标签。

以Simulink模型的结构阵列的形式创建输入信号。万博1manbetx结构阵列必须包含这些字段:

  • 时间-观测数据进入模型的时间点。在本例中,持续时间包括从0到931的整数。方位必须与预测器数据中的观测值相对应。在这种情况下,时间必须是一个列向量。

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

为将来的示例创建一个适当的结构数组。

creditRatingInput。时间= (0:931)';creditRatingInput.signals(1)。值= ftrX;creditRatingInput.signals(1)。尺寸大小= (ftrX 2);

为了从工作区中导入信号数据:

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

  • 在里面数据导入/导出窗格中,选择输入复选框,并输入creditRatingInput在相邻的文本框中。

  • 在里面求解器窗格中,在仿真时间,设置停止时间creditRatingInput.time(端部).下求解器选择,设置类型固定步和集合求解器离散(没有连续的状态)

有关更多详细信息,请参阅模拟负载信号数据(万博1manbetx模型)

模拟模型。

sim(simmdlname);

当import块检测到一个观察结果时,它将该观察结果导向ClassificationEnsemble Predict块。你可以使用仿真数据检查(万博1manbetx模型)查看Outport块的记录数据。

另请参阅

相关话题