分类学习者培训的逻辑回归模型的代码生成
此示例显示了如何使用分类学习者训练逻辑回归模型,然后生成C代码,该C代码使用导出的分类模型预测标签。
加载样本数据
加载样本数据并将数据导入到分类学习者应用程序中。
加载患者
数据集。指定预测数据数据X
, 包含由...组成p
预测变量和响应变量y
。
加载患者x = [年龄舒张期收缩压];p =大小(x,2);y =性别;
在应用选项卡,单击显示更多应用程序部分右侧的箭头显示画廊,然后选择分类学习者。在分类学习者标签,在文件部分,选择新会话>来自工作区。
在工作区对话框的新会话中,数据集变量, 选择X
从工作区变量列表中。在下面回复, 点击从工作区选项按钮,然后选择y
从列表中。要接受默认验证方案并继续,请单击开始会话。默认验证选项为5倍交叉验证,以防止过度拟合。
默认情况下,分类学习者创建数据的散点图。
火车逻辑回归模型
在分类学习者应用程序中训练逻辑回归模型。
在分类学习者标签,在型号类型部分,单击显示更多箭头显示分类器的画廊。在下面逻辑回归分类器, 点击逻辑回归模型。点击火车在里面训练部分。该应用程序训练模型并显示其交叉验证精度得分准确性(验证)。
导出到工作空间
将模型导出到MATLAB®工作区,并使用Savelearnerforcoder
。
在里面出口部分,选择导出模型>导出紧凑型模型。点击好的在对话框中。
结构训练的模型
出现在MATLAB工作区中。场Generalizedlinearmodel
的训练的模型
包含紧凑型模型。
笔记:如果您使用所有支持文件运行此示例,则可以加载金宝app训练的model.mat
在命令行中文件而不是导出模型。这训练的模型
结构是使用上一步创建的。
加载('Trainedmodel.mat')
在命令行,将紧凑模型保存到名为的文件mymodel.mat
在您当前的文件夹中。
Savelearnerforcoder(训练Model.generalizedlinearmodel,'mymodel')
此外,保存训练有素的模型的成功,失败和缺少类的名称。
classNames = {TrainedModel.SuccessClass,...TrainedModel.failureclass,TrainedModel.MissingClass};节省('ModelParameters.mat',,,,'classNames');
生成预测的C代码
定义预测的入口点函数,并通过使用代码根
。
在您当前的文件夹中,定义一个名称的函数classifyx.m
有以下操作:
接受数字矩阵(
X
)观测值包含与训练逻辑回归模型的观测变量相同的预测变量将分类模型加载到
mymodel.mat
使用模型计算预测概率
将预测的概率转换为索引,其中1表示成功,2表示失败,3表示缺少的值
将类名称加载在
modelParameters.mat
通过索引级别的名称来返回预测标签
功能label = classifyx(x)%#codegen%classifyx使用逻辑回归模型分类%classifyx分类x中的测量值%使用文件mymodel.mat中的logistic回归模型,%,然后在标签中返回类标签。n =大小(x,1);label = coder.nullcopy(cell(n,1));compactmdl = loadlearnernerforcoder('mymodel');概率=预测(compactmdl,x);index =〜isnan(概率)。*((概率<0.5)+1) + isnan(概率)*3;classInfo = coder.load(“模型参数”);classNames = classInfo.ClassNames;为了i = 1:n label {i} = classNames {index(i)};结尾结尾
笔记:如果在使用功能选择或主组件分析(PCA)之后,在分类学习者中创建逻辑回归模型,则必须在入口点功能中包含其他代码行。有关显示这些附加步骤的示例,请参见代码生成和分类学习者应用程序。
从classifyx.m
。创建一个矩阵数据
用于代码生成coder.typeof
。指定行中的行数数据
是任意的,但是数据
一定有p
列,哪里p
是用于训练逻辑回归模型的预测因子的数量。使用-args
指定选项数据
作为论点。
data = coder.typeof(x,[inf p],[1 0]);代码根classifyx.m-args数据
代码生成成功。
代码根
生成MEX文件classifyx_mex.mex64
在您当前的文件夹中。文件扩展名取决于您的平台。
验证MEX功能是否返回预期标签。从X
。
rng('默认')%可再现性testx = dataSample(x,15);
通过使用预测FCN
在分类学习者中训练的分类模型中的功能。
TestLabels = TrainedModel.PredictFCN(testx);
通过使用生成的MEX函数对观测值进行分类classifyx_mex
。
testLabelsMex = classifyx_mex(testx);
比较一组预测。是平等的
返回逻辑1(true)如果测试标签
和TestLabelsMex
相等。
iSequal(testlabels,TestLabelsMex)
ans =逻辑1
预测FCN
和MEX功能classifyx_mex
返回相同的值。
也可以看看
LOADLEARNERNERNERFORCODER
|Savelearnerforcoder
|coder.typeof
(MATLAB编码器)|代码根
(MATLAB编码器)|fitglm
|预测