这个示例展示了如何使用二叉决策树生成对表中的数值数据进行分类的代码。
在一般的代码生成的工作流程,可以培养在表上的数据的分类或回归模型,前提是你只使用数字预测变量。当创建用于预测一个入口点函数,传递数字矩阵(而不是表)来预测
。
在R2020a开始,你可以通过一个表预测
在你的入口函数中。有关代码生成中表支持的更多信息,请参见万博1manbetx表的代码生成(MATLAB编码器)和代码生成的表限制(MATLAB编码器)。
加载耐心
数据集。创建包含类型的数字预测表单
和双
以及响应变量吸烟者
类型的逻辑
。表的每一行对应于不同的患者。
负载耐心年龄=单(年龄);重量=单(重量);台=表(年龄、舒张压、吸烟者、收缩压、重量);
训练一个分类树使用的数据TBL
。请注意预测器的名称及其顺序。
Mdl = fitctree(资源描述,“抽烟”);Mdl.PredictorNames
ans =1×4细胞{ '年龄'} { '舒张'} { '收缩'} { '重量'}
将树分类器保存到文件中saveLearnerForCoder
。
saveLearnerForCoder (Mdl“TreeModel”);
saveLearnerForCoder
保存分类器到MATLAB®二进制文件TreeModel.mat
作为当前文件夹中的结构数组。
定义入口点函数predictSmoker
,它接受数字预测变量作为输入自变量。在功能,通过使用加载树分类loadLearnerForCoder
中,从输入参数创建一个表,然后通过分类器和表预测
。
类型predictSmoker.mlx
使用训练树模型的新观察结果%预测吸烟者根据年龄、舒张压、收缩压和体重预测患者是吸烟者(1)还是非吸烟者%(0)。该函数还提供了分类分数%,表示预测的标签来自特定类(吸烟者或非吸烟者)的可能性。mdl = loadLearnerForCoder(“TreeModel”);varnames = mdl.PredictorNames;台=表(年龄、舒张、收缩、重量、VariableNames, varnames);(标签、分数)=预测(mdl(资源);结束
在入口点函数内创建表时,必须指定变量名(例如,通过使用“VariableNames”
的名称 - 值对参数表
)。如果您的表只包含预测器变量,并且预测器的顺序与用于训练模型的表中的顺序相同,那么您可以在mdl.PredictorNames
。
注意:如果单击该页右上方的按钮,并在MATLAB中打开此示例,MATLAB将打开示例文件夹。这个文件夹包含了入口点函数文件predictSmoker.mlx
。
生成的代码predictSmoker
通过使用codegen
。使用的预测器变量输入参数的数据类型和维度coder.typeof
。
的第一个输入参数coder.typeof
指定预测器的数据类型。
第二输入参数指定上界(行数天道酬勤
)和列(1
)在预测器。
第三个输入参数指定预测器中的行数可以在运行时更改,但列数是固定的。
ARGS =细胞(4,1);ARGS{1} =编码器。类型of(Age,[Inf 1],[1 0]); ARGS{2} = coder.typeof(Diastolic,[Inf 1],[1 0]); ARGS{3} = coder.typeof(Systolic,[Inf 1],[1 0]); ARGS{4} = coder.typeof(Weight,[Inf 1],[1 0]); codegenpredictSmokerarg游戏arg游戏
codegen
生成MEX函数predictSmoker_mex
在当前文件夹一个平台相关的扩展。
验证预测
,predictSmoker
和MEX文件返回相同的结果为20名患者进行随机抽样。
RNG('默认')%用于重现[newTbl, idx] = datasample(台,20);[labels1, scores1] =预测(Mdl newTbl);[labels2, scores2] = predictSmoker(年龄(idx)、舒张压(idx)、收缩压(idx)、体重(idx));[labels3, scores3] = predictSmoker_mex(年龄(idx)、舒张压(idx)、收缩压(idx)、体重(idx));verifyMEXlabels = isequal (labels1 labels2 labels3)
verifyMEXlabels =逻辑1
verifyMEXscores = isequal (scores1 scores2 scores3)
verifyMEXscores =逻辑1
codegen
|coder.typeof
|loadLearnerForCoder
|saveLearnerForCoder