这个例子展示了如何训练一个具有最优超参数的集成模型,然后使用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:结束);
使用所有当前可用的数据训练集合prsntX
和prsntY
这些选项:
指定“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.
反对,因为该功能查找随机森林算法('包'
)作为最优方法。
该示例提供的仿真模型万博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块的记录数据。