主要内容

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

这个例子展示了如何使用Classification Learner训练逻辑回归模型,然后生成使用导出的分类模型预测标签的C代码。

加载示例数据

加载样本数据并将数据导入Classification Learner应用程序。

加载病人数据集。指定预测数据X组成的p预测器和响应变量Y

负载病人X =[年龄舒张高度收缩压];p =大小(X, 2);Y =性别;

应用程序选项卡上,单击显示更多箭头在右边应用程序部分来显示图库,并进行选择分类学习者.在分类学习者选项卡,文件部分中,选择从工作区新建会话>

在“从工作区新建会话”对话框中,单击数据集变量中,选择X从工作空间变量列表中。下响应,单击从工作空间单选按钮,然后选择Y从列表中。若要接受默认验证方案并继续,请单击开始会议.默认的验证选项是5倍交叉验证,以防止过拟合。

默认情况下,分类学习者创建数据的散点图。

训练逻辑回归模型

在Classification Learner应用程序中训练逻辑回归模型。

分类学习者选项卡,模型部分,单击显示更多箭头显示分类器库。下逻辑回归分类器,单击逻辑回归模型。点击火车都并选择选择火车火车部分。该应用程序训练模型并显示其交叉验证精度评分准确性(验证)

导出模型到工作区

导出模型到MATLAB®工作区并保存使用saveLearnerForCoder

出口部分中,选择导出紧凑型号>.在对话框中指定trainedLogisticRegressionModel作为模型名称,并单击好吧

结构trainedLogisticRegressionModel出现在MATLAB工作区中。这个领域GeneralizedLinearModeltrainedLogisticRegressionModel包含紧凑模型。

注意:如果使用所有支持文件运行此示例,则可以加载trainedLogisticRegressionModel.mat在命令行文件,而不是导出模型。的trainedLogisticRegressionModel结构是使用前面的步骤创建的。

负载(“trainedLogisticRegressionModel.mat”

在命令行中,将紧凑模型保存到一个名为myModel.mat在您的当前文件夹中。

saveLearnerForCoder (trainedLogisticRegressionModel。GeneralizedLinearModel,“myModel”

此外,保存训练模型的成功类、失败类和缺失类的名称。

一会= {trainedLogisticRegressionModel。SuccessClass,...trainedLogisticRegressionModel.FailureClass trainedLogisticRegressionModel.MissingClass};保存(“ModelParameters.mat”,“类名”);

生成C代码进行预测

定义用于预测的入口点函数,并使用codegen

在当前文件夹中,定义一个名为classifyX.m它的作用如下:

  • 接受数值矩阵(X),其中包含与用于训练逻辑回归模型的预测变量相同的预测变量

  • 加载分类模型myModel.mat

  • 使用模型计算预测概率

  • 将预测的概率转换为指数,其中1表示成功,2表示失败,3表示缺失值

  • 装入类名ModelParameters.mat

  • 通过索引类名返回预测的标签

函数label = classifyX (X)% # codegen使用逻辑回归模型进行分类% CLASSIFYX在X中对测量进行分类%,使用文件myModel.mat中的逻辑回归模型,%,然后返回label中的类标签。n =大小(X, 1);标签= coder.nullcopy(细胞(n, 1));CompactMdl = loadLearnerForCoder (“myModel”);概率=预测(CompactMdl X);Index = ~isnan(概率).*((概率<0.5)+1)+ isnan(概率)*3;classInfo = coder.load (“ModelParameters”);一会= classInfo.classNames;i = 1:n label{i} = classNames{index(i)};结束结束

注意:如果在使用特征选择或主成分分析(PCA)后在Classification Learner中创建逻辑回归模型,则必须在入口点函数中包含额外的代码行。有关显示这些额外步骤的示例,请参见代码生成和分类学习应用程序

生成MEX函数classifyX.m.创建一个矩阵数据对于使用coder.typeof.中的行数数据是武断的,但那数据必须有p列,p是用于训练逻辑回归模型的预测因子的数量。使用arg游戏选项来指定数据作为参数。

data =编码器。typeof (X, [Inf p], [1 0]);codegenclassifyX.marg游戏数据
代码生成成功。

codegen生成MEX文件classifyX_mex.mex64在您的当前文件夹中。文件扩展名取决于您的平台。

验证MEX函数是否返回预期的标签。随机抽取15个观察结果X

rng (“默认”%的再现性testX = datasample (X, 15);

对观察结果进行分类predictFcn分类学习者训练的分类模型的功能。

testLabels = trainedLogisticRegressionModel.predictFcn (testX);

利用生成的MEX函数对观测结果进行分类classifyX_mex

testLabelsMEX = classifyX_mex (testX);

比较一下这些预测。isequal返回逻辑1 (true)testLabels而且testLabelsMEX是相等的。

isequal (testLabels testLabelsMEX)
ans =逻辑1

predictFcn和MEX功能classifyX_mex返回相同的值。

另请参阅

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

相关的话题

Baidu
map