主要内容

导出分类模型以预测新数据

将模型导出到工作区以使新数据的预测

在以分类学习者交互式地创建分类模型后,您可以将最佳模型导出到工作区。然后,您可以使用训练有素的模型使用新数据来进行预测。

笔记

最终的模型分类学习者输出总是使用完整的数据集进行训练。您使用的验证方案只影响应用程序计算验证指标的方式。您可以使用验证指标和各种可视化结果的图来为您的分类问题选择最佳模型。

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

  1. 在“分类学习器”中,选择要导出的模型模型窗格。

  2. 在这一点分类学习者标签,在出口部分,单击其中一个导出选项:

  3. 在“导出模型”对话框中,编辑导出变量的名称,然后单击.导出模型的默认名称,训练有素,每次导出时都会递增以避免覆盖分类器(例如,训练显示器1).

    新变量(例如,训练有素)出现在您的工作区中。

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

对新数据进行预测

将模型从分类学习者导出到工作区后,或运行从应用程序生成的代码,您得到一个训练有素结构,您可以使用它来使用新数据进行预测。该结构包含一个分类对象和一个预测函数。该结构允许您对包括主成分分析(PCA)的模型进行预测。

  1. 要使用导出的分类器对新数据进行预测,T.,使用表单:

    YFIT = C.PREDICTFCN(T)
    在哪里C是您变量的名称(例如,训练有素).

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

    • 如果您提供一个表,请确保它包含与训练数据相同的预测器名称。这预测FCN.函数忽略表中的其他变量。可变格式和类型必须与原始培训数据匹配。

    • 如果提供矩阵,则必须以相同的顺序和格式包含与培训数据相同的预测仪列或行。不包含响应变量,您在应用程序中未导入的任何变量,或其他未使用的变量。

    输出YFIT.包含每个数据点的类预测。

  2. 检查导出结构的字段。有关帮助预测,请输入:

    C.Howtopredict.

您还可以从导出的结构中提取分类对象以进行进一步分析(例如,trousaModel.classificationsvm.trainedModel。ClassificationTree等等,这取决于您的模型类型)。请注意,如果您在应用程序中使用特征转换,如PCA,您将需要通过使用结构的PCA字段中的信息来考虑这种转换。

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

在分类学习者交互式创建分类模型后,您可以为您的最佳模型生成MATLAB代码。然后,您可以使用该代码用新数据训练模型。

生成MATLAB代码:

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

  • 为培训模型创建脚本,而无需学习不同功能的语法

  • 检查代码以了解如何以编程方式训练分类器

  • 修改代码以进行进一步分析,例如要设置您无法在应用程序中更改的选项

  • 对不同数据重复分析并自动培训

  1. 在分类学习者,在模型窗格,选择要生成代码的模型。

  2. 在这一点分类学习者标签,在出口部分,点击生成功能

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

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

    复制生成的代码的第一行,排除单词功能,并编辑trainingData输入参数以反映培训数据或新数据的变量名称。同样,编辑Respolatedata.输入参数(如果适用)。

    例如,要重新培训培训的分类器渔业数据集,输入:

    [TroundModel,ValidationAccuracy] = TrainClassifier(剥皮)

    生成的代码返回a训练有素结构,该结构包含与从Classification Learner将分类器导出到工作空间时创建的结构相同的字段。

  4. 如果要自动培训具有新数据的相同分类器,或者学习如何以编程方式培训分类器,请检查生成的代码。代码向您展示如何:

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

    • 训练一个分类器并指定所有分类器选项

    • 进行交叉验证

    • 计算验证准确性

    • 计算验证预测和分数

    笔记

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

生成C代码以进行预测

如果您使用分类学习者训练此表中的其中一个模型,可以生成C代码进行预测。

模型类型 底层模型对象
决策树 ClassificationTree要么CompactClassificationTree.
判别分析 分类Discriminant.要么CompactClassificationDiscriminant.
朴素贝叶斯 ClassificationniveBayes.要么CompactClassificaNiveBayes.
万博1manbetx支持矢量机器 分类VM.(二进制),CompactClassificationsVM.(二进制),ClassificationECOC(多级),或CompactClassificeCoc.(多牌)
最近的邻居 ClassificationKNN
合奏 分类素..CompactClassificationEnsemble, 要么ClassificationBaggedEnsemble

笔记

您可以使用Logistic回归模型生成用于预测的C代码。但是,因为逻辑回归的底层模型是一个GeneralizedLinearModel.要么Compact一项式标Model.对象,此过程要求您在预测入口点中添加额外的代码行,以将数字预测转换为类预测。例如,看到分类学习者培训的逻辑回归模型的代码生成

C代码需要:

  • Matlab Coder™执照

  • 适当的模型(二进制或多类)

  1. 例如,在Classification Learner中训练一个SVM模型,然后将模型导出到工作空间中。

    在导出的结构中找到底层分类模型对象。检查结构的字段以查找模型对象,例如,C.ClassificationsVM.,在那里C是您的结构的名称。

    底层模型对象取决于您训练的哪种类型的SVM(二进制或多类),以及您是否导出了紧凑的模型。模型对象可以是分类VM.CompactClassificationsVM.ClassificationECOC, 要么CompactClassificeCoc.

  2. 使用功能saveLearnerForCoder要为代码生成准备模型:SavelAlnerForCoder(MDL,Filename).例如:

    saveLearnerForCoder (C。ClassificationSVM,'mysvm'

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

    功能label = classifyx(x)%#codegen.%classifyx使用SVM模型进行分类%classifyx对x中的测量进行分类%在文件mysvm.mat中使用svm模型,and then%返回标签中的类标签。CompactMdl = loadLearnerForCoder ('mysvm');标签=预测(compactmdl,x);结束
  4. 从函数中生成MEX功能。例如:

    Codegen.classifyx.m.-  args.{数据}
    %#codegen.编译指令表明MATLAB代码用于代码生成。要确保MEX函数可以使用相同的输入,请使用- args.选项。指定数据作为仅包含用于训练模型的预测列的矩阵。

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

    标签= classifyX_mex(数据);

如果在应用程序中使用了功能选择或PCA功能转换,则需要采取其他步骤。如果使用手动功能选择,请提供相同的列X.这X参数是您功能的输入。

如果您在应用程序中使用PCA,请使用导出结构的PCA字段中的信息考虑此转换。无论您将表格还是矩阵导入应用程序,都无关紧要X以相同顺序包含矩阵列。在生成代码之前,遵循以下步骤:

  1. 保存训练后的分类器结构的PCACenters和pcacoeffents字段,C修改文件时,使用以下命令:

    节省('pcainfo.mat''--truct''C''pcacenter''pcacoeffices');

  2. 在您的函数文件中,包括其他行以执行PCA转换。创建加载已保存的型号的函数,执行PCA,并对新数据进行预测。例如:

    功能label = classifyx(x)%#codegen.%classifyx使用SVM模型进行分类%classifyx对x中的测量进行分类%在文件mysvm.mat中使用svm模型,%,然后返回标签中的类标签。%如果在应用程序中使用了手动功能选择,请确保x%仅包含模型中包含的列。CompactMdl = loadLearnerForCoder ('mysvm');pcaInfo = coder.load ('pcainfo.mat''pcacenter''pcacoeffices');PCACenters = pcaInfo.PCACenters;PCACoefficients = pcaInfo.PCACoefficients;%进行PCA变换pcatransformedx = bsxfun(@ minus,x,pcacenters)* pcacoeffices;[标签,分数] =预测(CompactMDL,PCAtransformedX);结束

有关更详细的示例,请参见代码生成和分类学习程序.有关C代码生成工作流程和限制的更多信息,请参阅代码生成

使用MATLAB编译器部署预测

将模型从分类学习者导出到工作区后,可以使用它部署MATLAB编译器™

假设您根据指令将培训的模型导出到MATLAB工作区向工作区导出模型,名称训练有素.要部署预测,请按照下列步骤操作。

  • 保存训练有素结构中的结构。

    保存mymodel.训练有素
  • 编写要编译的代码。此代码必须加载培训的模型并使用它来进行预测。它还必须具有Pragma,因此编译器认识到编译应用程序中需要统计和机器学习工具箱™代码。此Pragma可以是工具箱中的任何功能。

    功能ypred = mypredict(tbl)% #函数fitctree加载('mymodel.mat');ypred = troughermodel.predictfcn(tbl);结束
  • 编译为独立应用程序。

    MCC.-M.mypredict.m

也可以看看

功能

班级

相关话题