主要内容

分类学习者培训的逻辑回归模型的代码生成

此示例显示了如何使用分类学习者训练逻辑回归模型,然后生成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返回相同的值。

也可以看看

||(MATLAB编码器)|(MATLAB编码器)||

相关话题