主要内容

导出回归模型预测新数据

将模型导出到工作区

在回归学习者应用程序中交互式地创建回归模型后,您可以将最佳模型导出到工作区。然后你可以使用训练过的模型使用新数据进行预测。

请注意

最终的模型Regression Learner导出总是使用完整的数据集进行训练,不包括为测试保留的任何数据。您使用的验证方案只会影响应用程序计算验证指标的方式。您可以使用验证指标和各种可视化结果的图表来为您的回归问题选择最佳模型。

下面是将模型导出到MATLAB的步骤®工作区:

  1. 在应用程序中,选择要导出的模型模型窗格。

  2. 回归的学习者选项卡,在出口部分,单击其中一个导出选项:

    • 若要包含用于训练模型的数据,请单击出口模式并选择出口模式.此选项将训练好的模型作为包含回归对象的结构导出到工作区,例如RegressionTree.模型对象在可能的情况下包含训练数据。请注意,一些模型,如核近似模型,从不存储训练数据。

    • 如需排除培训数据,请单击出口模式并选择出口紧凑型.该选项导出删除了不必要数据的模型。也就是说,导出的结构包含一个回归对象,在可能的情况下,该对象不包括训练数据。您仍然可以使用该模型对新数据进行预测。

  3. 在“导出模型”对话框中,选中导出变量的名称,并根据需要对其进行编辑。然后,单击好吧.导出模型的默认名称,trainedModel,每次导出时递增,以避免覆盖模型(例如,trainedModel1).

    新变量(例如,trainedModel)出现在您的工作空间中。

    应用程序在命令窗口中显示关于导出模型的信息。阅读这篇文章,学习如何用新数据进行预测。

对新数据进行预测

当您从Regression Learner导出模型到工作区,或运行从应用程序生成的代码后,您将得到一个trainedModel结构,您可以使用新数据进行预测。该结构包含一个模型对象和一个用于预测的函数。该结构使您能够对包含主成分分析(PCA)的模型进行预测。

  1. 使用导出的模型对新数据进行预测,T

    yfit = trainedModel.predictFcn(T)
    在哪里trainedModel导出变量的名称。

    提供数据T使用与应用程序中使用的训练数据相同的格式和数据类型(表格或矩阵)。

    • 如果你提供一个表,那么确保它包含与你的训练数据相同的预测器名称。的predictFcn忽略表中的其他变量。变量格式和类型必须与原始训练数据匹配。

    • 如果你提供一个矩阵,它必须包含与你的训练数据相同的预测列或行,以相同的顺序和格式。不要包含响应变量、应用程序中没有导入的任何变量或其他未使用的变量。

    输出yfit包含每个数据点的预测。

  2. 检查导出结构的字段。如需帮助进行预测,请输入:

    trainedModel。HowToPredict

您还可以从导出的结构中提取模型对象以进行进一步分析。如果你在应用程序中使用PCA等特征转换,你必须通过使用结构的PCA字段中的信息来考虑这种转换。

生成MATLAB用新数据训练模型的代码

在回归学习者应用程序中交互式地创建回归模型后,您可以为最佳模型生成MATLAB代码。然后可以使用代码用新数据训练模型。

生成MATLAB代码以:

  • 在庞大的数据集上进行训练。探索应用程序中在数据子集上训练的模型,然后生成代码在更大的数据集上训练选定的模型。

  • 创建训练模型的脚本,而不需要学习不同函数的语法。

  • 检查代码以了解如何以编程方式训练模型。

  • 修改代码以进行进一步分析,例如设置应用程序中不能更改的选项。

  • 重复你对不同数据的分析并自动化训练。

要生成代码并使用它来用新数据训练模型:

  1. 在应用程序中,从模型窗格中,选择要为其生成代码的模型。

  2. 回归的学习者选项卡,在出口部分中,点击生成函数

    该应用程序从您的会话生成代码,并在MATLAB编辑器中显示文件。该文件包括预测器和响应、模型训练方法和验证方法。保存文件。

  3. 要重新训练您的模型,请使用原始数据或新数据作为输入参数从命令行调用该函数。新数据必须与原始数据具有相同的形状。

    复制生成的代码的第一行,不包括单词函数,并编辑trainingData输入参数以反映您的训练数据或新数据的变量名。类似地,编辑responseData输入参数(如果适用)。

    例如,重新训练一个用cartable数据集,输入:

    [trainedModel,validationRMSE] = trainRegressionModel(cartable)

    生成的代码返回trainedModel结构,该结构包含与您从Regression Learner导出模型到工作区时创建的结构相同的字段。

如果您想用新数据自动训练相同的模型,或者学习如何以编程方式训练模型,请检查生成的代码。该代码向您展示如何:

  • 将数据处理成正确的形状。

  • 训练一个模型并指定所有的模型选项。

  • 执行交叉验证。

  • 计算统计数据。

  • 计算验证预测和分数。

请注意

如果从经过训练的可优化模型生成MATLAB代码,则生成的代码不包括优化过程。

生成用于预测的C代码

如果您使用回归学习器训练该表中的一个模型,则可以生成用于预测的C代码。

模型类型 底层模型对象
线性回归 LinearModelCompactLinearModel
决策树 RegressionTreeCompactRegressionTree
金宝app支持向量机 RegressionSVMCompactRegressionSVM
高斯过程回归 RegressionGPCompactRegressionGP
系综 RegressionEnsembleCompactRegressionEnsemble,或RegressionBaggedEnsemble

C代码生成需要:

  • MATLAB编码器™许可证

  • 合适的模型

  1. 例如,在Regression Learner中训练树模型,然后将模型导出到工作区。

    在导出的结构中查找底层回归模型对象。检查结构的字段以查找模型对象,例如,S.RegressionTree,在那里年代是结构的名称。

    底层模型对象取决于是否导出了紧凑模型。模型对象可以是RegressionTreeCompactRegressionTree对象。

  2. 使用函数saveLearnerForCoder为代码生成准备模型:saveLearnerForCoder (Mdl文件名).例如:

    saveLearnerForCoder (S。RegressionTree,“myTree”

  3. 创建一个函数,加载保存的模型并对新数据进行预测。例如:

    函数yfit = predictY (X)% # codegen使用树形模型预测响应% PREDICTY使用X中的测量值%和myTree.mat文件中的树模型,而且then%在yfit中返回预测响应。CompactMdl = loadLearnerForCoder(“myTree”);yfit = predict(CompactMdl,X);结束
  4. 从函数生成一个MEX函数。例如:

    codegenpredictY.marg游戏{数据}
    % # codegen编译指令表明MATLAB代码是用于代码生成的。方法将工作区中的数据指定为函数的参数,以确保MEX函数可以使用相同的输入arg游戏选择。指定数据作为仅包含用于训练模型的预测列的矩阵。

  5. 使用MEX函数进行预测。例如:

    yfit = predictY_mex(data);

如果你在应用程序中使用了特征选择或PCA特征转换,那么你需要采取额外的步骤。如果您使用手动特性选择,则在X.的X参数是函数的输入。

如果您在应用程序中使用了PCA,请使用导出结构的PCA字段中的信息来考虑这种转换。这并不重要,你是否导入表或矩阵到应用程序,只要X以相同的顺序包含矩阵列。在生成代码之前,执行以下步骤:

  1. 保存PCACenters而且PCACoefficients经过训练的回归结构的域,年代,使用以下命令保存到文件中:

    保存(“pcaInfo.mat”“结构”“年代”“PCACenters”“PCACoefficients”);

  2. 在函数文件中,包含额外的行来执行PCA转换。创建一个函数,加载保存的模型,执行PCA,并对新数据进行预测。例如:

    函数yfit = predictY (X)% # codegen使用树形模型预测响应% PREDICTY使用X中的测量值%和myTree.mat文件中的树模型,%,然后在yfit中返回预测的响应。%如果您在应用程序中使用手动功能选择,请确保X%仅包含模型中包含的列。CompactMdl = loadLearnerForCoder(“myTree”);pcaInfo = code .load(“pcaInfo.mat”“PCACenters”“PCACoefficients”);PCACenters = pcaInfo.PCACenters;pcacoeffents = pcainfo . pcacoeffents;%执行PCA变换pcaTransformedX = bsxfun(@minus,X,PCACenters)*PCACoefficients;yfit = predict(CompactMdl,pcaTransformedX);结束

有关C代码生成工作流和限制的更多信息,请参见代码生成.有关示例,请参见saveLearnerForCoder而且loadLearnerForCoder

使用MATLAB编译器部署预测

从Regression Learner导出模型到工作区后,您可以使用MATLAB编译器™

假设您根据中的说明将训练好的模型导出到MATLAB工作区将模型导出到工作区,用名字trainedModel.要部署预测,请执行以下步骤。

  • 保存trainedModel结构在.mat文件中。

    保存mymodeltrainedModel
  • 编写要编译的代码。这段代码必须加载经过训练的模型,并使用它来进行预测。它还必须有一个pragma,这样编译器才能识别已编译的应用程序中需要Statistics and Machine Learning Toolbox™代码。此pragma可以是Regression Learner中使用的任何模型训练函数(例如,fitrtree).

    函数Ypred = mypredict(tbl)% #函数fitrtree负载(“mymodel.mat”);ypred = trainedModel.predictFcn(tbl);结束
  • 编译为一个独立的应用程序。

    世纪挑战集团- mmypredict.m

导出用于部署的模型MATLAB生产服务器

在Regression Learner中训练模型后,可以导出模型以部署到其中MATLAB生产服务器(需要MATLAB编译SDK™).

  • 中选择训练过的模型模型窗格。在回归的学习者选项卡,在出口部分中,点击出口模式并选择用于部署的导出模型

  • 在“为模型部署选择项目文件”对话框中,为您的项目文件选择一个位置和名称。

  • 在自动生成的predictFunction.m根据需要归档、检查和修改代码。

  • 使用生产服务器编译器应用程序打包您的模型和预测功能。您可以模拟模型部署到MATLAB制作服务器请按测试客户端按钮。测试部份编译器选项卡,然后通过单击按钮。部分。

有关示例,请参见将在回归学习器中训练的模型部署到MATLAB生产服务器.有关更多信息,请参见为MATLAB生产服务器创建可部署存档(MATLAB Production Server)

另请参阅

功能

相关的话题