分类学习者训练的逻辑回归模型的代码生成
这个例子展示了如何使用Classification Learner训练逻辑回归模型,然后生成使用导出的分类模型预测标签的C代码。
加载示例数据
加载样本数据并将数据导入Classification Learner应用程序。
加载病人
数据集。指定预测数据X
组成的p
预测器和响应变量Y
.
负载病人X =[年龄舒张高度收缩压];p =大小(X, 2);Y =性别;
在应用程序选项卡上,单击显示更多箭头在右边应用程序部分来显示图库,并进行选择分类学习者.在分类学习者选项卡,文件部分中,选择从工作区新建会话>.
在“从工作区新建会话”对话框中,单击数据集变量中,选择X
从工作空间变量列表中。下响应,单击从工作空间单选按钮,然后选择Y
从列表中。若要接受默认验证方案并继续,请单击开始会议.默认的验证选项是5倍交叉验证,以防止过拟合。
默认情况下,分类学习者创建数据的散点图。
训练逻辑回归模型
在Classification Learner应用程序中训练逻辑回归模型。
在分类学习者选项卡,模型部分,单击显示更多箭头显示分类器库。下逻辑回归分类器,单击逻辑回归模型。点击火车都并选择选择火车在火车部分。该应用程序训练模型并显示其交叉验证精度评分准确性(验证).
导出模型到工作区
导出模型到MATLAB®工作区并保存使用saveLearnerForCoder
.
在出口部分中,选择导出紧凑型号>.在对话框中指定trainedLogisticRegressionModel
作为模型名称,并单击好吧.
结构trainedLogisticRegressionModel
出现在MATLAB工作区中。这个领域GeneralizedLinearModel
的trainedLogisticRegressionModel
包含紧凑模型。
注意:如果使用所有支持文件运行此示例,则可以加载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
返回相同的值。
另请参阅
loadLearnerForCoder
|saveLearnerForCoder
|coder.typeof
(MATLAB编码器)|codegen
(MATLAB编码器)|fitglm
|预测