使用ClassificationTree预测块预测类标签
方法训练分类决策树模型分类学习者应用程序,然后使用ClassificationTree预测block for Simulink®标签预测。万博1manbetx该块接受一个观察结果(预测数据),并使用训练好的分类决策树模型返回该观察结果的预测类别标签和类别分数。
在分类学习App中训练分类模型
在分类学习App中使用超参数优化训练分类决策树模型。
1.在MATLAB®命令窗口中,加载电离层
数据集,包含雷达回波质量(Y
)和预测数据(X
)的34个变量。雷达报告的质量良好(‘g’
)或品质欠佳(“b”
).
加载电离层
数据集。确定样本量。
负载电离层n =数字(Y)
N = 351
假设雷达回波是按顺序探测到的,你有前300个观测结果,但你还没有收到最后51个。将数据划分为当前样本和未来样本。
prsntX = X(1:300,:);prsntY = Y(1:300);ftrX = X(301:end,:);ftrY = Y(301:end);
2.开放分类学习者。在应用程序选项卡,在应用程序部分,单击显示更多箭头显示应用程序库。在机器学习和深度学习组中,单击分类学习者.
3.在分类学习者选项卡,在文件部分中,点击新会话并选择从工作空间.
4.在“从工作区新建会话”对话框中,选择矩阵prsntX
从数据集变量列表。下响应,按从工作空间选项按钮,并选择矢量prsntY
从工作空间。默认的验证选项是5倍交叉验证,以防止过拟合。对于本例,不要更改默认设置。
5.若要接受默认选项并继续,请单击开始会议.
6.选择一个可优化的树模型来训练。在分类学习者选项卡,在模型部分,单击显示更多箭头打开画廊。在决策树组中,单击Optimizable树.
7.在火车部分中,点击火车都并选择选择火车.应用程序显示一个最小分类误差图因为它运行优化过程。在每次迭代中,应用程序都会尝试不同的超参数值组合,并使用在该迭代中观察到的最小验证分类错误更新图表,以深蓝色表示。当应用程序完成优化过程时,它会选择一组优化的超参数,用红色方块表示。有关更多信息,请参见最小分类误差图.
应用程序列出了优化的超参数优化结果部分的右边的情节和模型Hyperparameters模型剖面总结选项卡。总体而言,优化结果不可重复。
8.将模型导出到MATLAB工作区。在分类学习者选项卡,在出口部分中,点击出口模式并选择出口模式,然后按好吧.导出模型的默认名称为trainedModel
.
或者,您可以生成MATLAB代码,使用与在应用程序中训练模型相同的设置来训练分类模型分类学习者选项卡,在出口部分中,点击生成函数.该应用程序从您的会话生成代码,并在MATLAB编辑器中显示文件。该文件定义了一个函数,该函数接受预测器和响应变量,训练分类模型,并执行交叉验证。将函数名更改为trainClassificationTreeModel
并保存函数文件。训练决策树分类模型trainClassificationTreeModel
函数。
trainedModel = trainClassificationTreeModel(prsntX,prsntY);
9.中提取训练过的模型trainedModel
变量。trainedModel
包含一个ClassificationTree
模型对象中的ClassificationTree
字段。
treeMdl = trainedModel.ClassificationTree;
因为超参数优化会导致模型过拟合,所以推荐的方法是在将数据导入Classification Learner应用程序之前创建一个单独的测试集,并查看优化后的模型在测试集上的表现。详情请参见在分类学习App中使用超参数优化训练分类器.
创建Simul万博1manbetxink模型
本例提供了Simulink模型万博1manbetxslexIonosphereClassificationTreePredictExample.slx
,包括ClassificationTree预测块。您可以打开Simulink模型或创万博1manbetx建本节所述的新模型。
打开Simulin万博1manbetxk模型slexIonosphereClassificationTreePredictExample.slx
.
SimMdlName =“slexIonosphereClassificationTreePredictExample”;open_system (SimMdlName)
的PreLoadFcn
的回调函数slexIonosphereClassificationTreePredictExample
包括加载样本数据、训练模型和为Simulink模型创建输入信号的代码。万博1manbetx如果您打开Simulink模型,万博1manbetx那么软件将运行代码PreLoadFcn
在加载Simulink模型之前。万博1manbetx若要查看回调函数,请在设置章节建模选项卡上,单击模型设置并选择模型属性.然后,在回调选项卡,选择PreLoadFcn
中的回调函数。模型的回调窗格。
要创建一个新的Simulink模万博1manbetx型,请打开空白模型模板,并添加ClassificationTree预测块。添加import和Outport块,并将它们连接到ClassificationTree Predict块。
双击ClassificationTree Predict块,打开块参数对话框。您可以指定包含训练过的模型的工作区变量的名称。默认变量名为treeMdl
.单击刷新按钮。对话框显示用于训练模型的选项treeMdl
下训练过的机器学习模型.选择为预测的班级分数添加输出端口复选框添加第二个输出端口分数.
ClassificationTree Predict块期望包含34个预测值的观测值。双击“导入”块,并设置港维到34号信号的属性选项卡。
为Simulink模型创建结构数组形式的输入信号。万博1manbetx结构数组必须包含以下字段:
时间
-观测数据进入模型的时间点。在本例中,持续时间包括0到50之间的整数。方向必须与预测器数据中的观测值相对应。在这种情况下,时间
一定是列向量。信号
—一个1乘1的结构数组,描述输入数据并包含字段值
而且维
,在那里值
是一个矩阵的预测数据,和维
是预测变量的数量。
为将来的雷达返回创建一个适当的结构数组。
radarReturnInput。时间= (0:50)';radarReturnInput.signals(1)。values = ftrX;radarReturnInput.signals(1)。维度= size(ftrX,2);
从工作空间导入信号数据:
打开“配置参数”对话框。在建模选项卡上,单击模型设置.
在数据导入/导出窗格中,选择输入复选框,然后输入
radarReturnInput
在相邻的文本框中。在解算器窗格中,在仿真时间,设置停止时间来
radarReturnInput.time(结束)
.下解算器的选择,设置类型来固定步
,并设置解算器来离散(无连续状态)
.
详情请参见模拟加载信号数据(万博1manbetx模型).
模拟模型。
sim (SimMdlName);
当import块检测到观察结果时,它将观察结果定向到ClassificationTree Predict块。您可以使用模拟数据检查器(万博1manbetx模型)查看Outport块的记录数据。