主要内容

使用ClassificationEnsemble预测块预测类标签

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

最优超参数训练分类模型

加载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}

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

d = dummyvar (tbl.Industry);

dummyvar的每个类别创建虚拟变量资源描述。行业.确定中类别的数量资源描述。行业以及虚拟变量的数量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”作为“汽车”训练具有最优超参数的集合。的“汽车”选项查找的最佳值“方法”“NumLearningCycles”, 和“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 racitchename:'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对象,因为该函数找到随机森林算法('包')作为最优方法。

创建模型模型金宝app

这个例子提供了Simulink模型金宝appslexCreditRatingClassificationEnsemblePredictExample.slx,其中包括ClassificationEnsemble预测堵塞。您可以打开Simulink模型或如金宝app本节所述的新模型创建新模型。

打开Simulin金宝appk模型slexCreditRatingClassificationEnsemblePredictExample.slx

SimMdlName =“slexCreditRatingClassificationEnsemblePredictExample”;Open_System(SIMMDLNAME)

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

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

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

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

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

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

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

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

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

从工作区导入信号数据:

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

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

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

有关详细信息,请参见模拟负载信号数据(金宝app模型)

模拟模型。

sim(simmdlname);

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

另请参阅

相关话题