生成代码对数据表进行分类
这个例子展示了如何生成代码分类表中的数字和分类数据使用一个二叉决策树模型。训练模型在这个例子中标识的分类预测CategoricalPredictors
财产;因此,软件自动处理分类预测。你不需要手动创建虚拟变量分类预测来生成代码。
一般的代码生成工作流,你可以训练一个分类或回归模型在数据表中。你通过数组(而不是表)为预测你的入口点函数,创建一个表内的入口点函数,然后通过表来预测
。在代码生成表支持的更多信息,参见金宝app代码生成表(MATLAB编码器)和表限制代码生成(MATLAB编码器)。
训练分类模型
加载病人
数据集。创建一个表,其中包含数字类型的预测因子单
和双
分类预测的类型分类
,和响应变量吸烟者
类型的逻辑
。表的每一行对应一个不同的病人。
负载病人年龄=单(年龄);重量=单(重量);性别=分类(性别);SelfAssessedHealthStatus =分类(SelfAssessedHealthStatus);台=表(年龄、舒张、收缩、体重、性别、SelfAssessedHealthStatus,吸烟者);
使用数据训练分类树资源描述
。
Mdl = fitctree(资源描述,“抽烟”)
Mdl = ClassificationTree PredictorNames: {1} x6细胞ResponseName:“烟民”CategoricalPredictors:[5 - 6]一会:[0 1]ScoreTransform:“没有一个”NumObservations: 100属性,方法
的CategoricalPredictors
属性值是(5 - 6)
,这表明Mdl
识别预测(5号和6号“性别”
和“SelfAssessedHealthStatus”
)作为分类预测。识别任何其他预测分类预测,你可以通过使用指定它们“CategoricalPredictors”
名称-值参数。
显示指标名称及其顺序Mdl
。
Mdl.PredictorNames
ans =1 x6单元格列1到5{‘年龄’}{舒张的}{“收缩”}{“重量”}{‘性别’}列6 {“SelfAssessedHe…”}
保存模型
将树分类器保存到一个文件中使用saveLearnerForCoder
。
saveLearnerForCoder (Mdl“TreeModel”);
saveLearnerForCoder
节省了MATLAB®二进制文件的分类器TreeModel.mat
作为一个结构数组在当前文件夹。
定义入口点函数
定义的入口点函数predictSmoker
,预测变量作为输入参数。在功能、加载树分类器通过使用loadLearnerForCoder
从输入参数,创建一个表,然后通过分类器和表预测
。
函数(标签、分数)= predictSmoker(年龄、舒张、收缩、体重、性别、selfAssessedHealthStatus)% # codegen% PREDICTSMOKER标签新的观察使用一个训练有素的树模型% predictSmoker预测患者是否吸烟者(1)或非吸烟者%(0)基于他们的年龄,舒张压、收缩压血液%的压力、体重、性别、和自我评估健康状况。这个函数%还提供了分类分数表示的可能性%预测标签来自一个特定类(抽烟或不抽烟)。mdl = loadLearnerForCoder (“TreeModel”);varnames = mdl.PredictorNames;台=表(年龄、舒张、收缩、体重、性别、selfAssessedHealthStatus,…“VariableNames”,varnames);(标签、分数)=预测(mdl(资源);结束
当你创建一个表在一个入口点函数,您必须指定变量名(例如,通过使用“VariableNames”
名称-值对的观点表
)。如果表只包含预测变量,预测在顺序表中用于训练模型,然后你可以找到预测变量名称mdl.PredictorNames
。
生成代码
生成的代码predictSmoker
通过使用codegen
。指定数据类型和维度的预测变量输入参数使用coder.typeof
。
的第一个输入参数
coder.typeof
指定的数据类型预测。第二个输入参数指定的行数的上限(
正
)和列(1
在预测)。第三个输入参数指定的行数的预测可以在运行时改变但列的数量是固定的。
ARGS =细胞(4,1);ARGS{1} =编码器。typeof(年龄、[正1]1 [0]);ARGS{2} =编码器。typeof(舒张压、[正1]1 [0]);ARGS{3} =编码器。typeof(收缩压、[正1]1 [0]);ARGS{4} =编码器。typeof(体重、[正1]1 [0]);ARGS{5} =编码器。typeof(Gender,[Inf 1],[1 0]); ARGS{6} = coder.typeof(SelfAssessedHealthStatus,[Inf 1],[1 0]); codegenpredictSmokerarg游戏arg游戏
代码生成成功。
codegen
生成墨西哥人的功能predictSmoker_mex
与平台相关的扩展在当前文件夹。
验证生成的代码
验证预测
,predictSmoker
和墨西哥人文件返回相同的结果20位患者的随机样本。
rng (“默认”)%的再现性[newTbl, idx] = datasample(台,20);[labels1, scores1] =预测(Mdl newTbl);[labels2, scores2] = predictSmoker(年龄(idx)、舒张压(idx)、收缩压(idx)、体重(idx)、性别(idx) SelfAssessedHealthStatus (idx));[labels3, scores3] = predictSmoker_mex(年龄(idx)、舒张压(idx)、收缩压(idx)、体重(idx)、性别(idx) SelfAssessedHealthStatus (idx));verifyMEXlabels = isequal (labels1 labels2 labels3)
verifyMEXlabels =逻辑1
verifyMEXscores = isequal (scores1 scores2 scores3)
verifyMEXscores =逻辑1
另请参阅
codegen
(MATLAB编码器)|coder.typeof
(MATLAB编码器)|loadLearnerForCoder
|saveLearnerForCoder
相关的话题
- 介绍代码生成
- 机器学习模型的代码生成预测在命令行
- 代码生成表(MATLAB编码器)
- 表限制代码生成(MATLAB编码器)