在classification Learner中交互式地创建分类模型之后,可以将最佳模型导出到工作空间。然后,您可以使用训练过的模型来使用新数据进行预测。
请注意
最终的模型分类学习者输出总是使用完整的数据集进行训练。您使用的验证方案只影响应用程序计算验证指标的方式。您可以使用验证指标和各种可视化结果的图来为您的分类问题选择最佳模型。
下面是将模型导出到MATLAB的步骤®工作区:
在“分类学习器”中,选择要导出的模型模型窗格。
在分类学习者选项卡,出口部分,单击其中一个导出选项:
如果您想要包含用于训练模型的数据,那么选择出口模式.
您可以将训练过的模型作为包含分类对象的结构导出到工作区,例如ClassificationTree
,ClassificationDiscriminant
,ClassificationSVM
,ClassificationNaiveBayes
,ClassificationKNN
,ClassificationEnsemble
,ClassificationNeuralNetwork
,等等。
如果您不想包含培训数据,请选择出口紧凑的模型.此选项导出模型,并尽可能删除不必要的数据。对于一些分类器来说,这是一个不包含训练数据的紧凑分类对象(例如,CompactClassificationTree
).可以使用紧凑的分类对象对新数据进行预测,但可以使用较少的其他方法。
在“导出模型”对话框中,编辑导出变量的名称,然后单击好吧.导出模型的默认名称,trainedModel
,每次导出时递增,以避免覆盖分类器(例如,trainedModel1
).
新变量(例如,trainedModel
)出现在您的工作区中。
应用程序在命令窗口中显示关于导出模型的信息。阅读本文,学习如何利用新数据进行预测。
当你从Classification Learner中导出一个模型到工作空间,或者运行应用程序生成的代码后,你会得到一个trainedModel
结构,您可以使用它来使用新数据进行预测。该结构包含一个分类对象和一个预测函数。该结构允许您对包括主成分分析(PCA)的模型进行预测。
要使用导出的分类器对新数据进行预测,T
,使用以下形式:
yfit = C.predictFcn (T)
C
是变量的名称(例如,trainedModel
).提供的数据T
与应用程序中使用的训练数据(表格或矩阵)的格式和数据类型相同。
如果您提供一个表,请确保它包含与训练数据相同的预测器名称。的predictFcn
函数忽略表中的其他变量。可变格式和类型必须与原始训练数据匹配。
如果您提供一个矩阵,它必须包含与您的训练数据相同的预测器列或行,以相同的顺序和格式。不要包含响应变量,任何你没有在应用程序中导入的变量,或其他未使用的变量。
输出yfit
包含每个数据点的类预测。
检查导出结构的字段。为了帮助预测,请输入:
C.HowToPredict
您还可以从导出的结构中提取分类对象以进行进一步分析(例如,trainedModel。ClassificationSVM
,trainedModel。ClassificationTree
等等,这取决于您的模型类型)。请注意,如果您在应用程序中使用特征转换,如PCA,您将需要通过使用结构的PCA字段中的信息来考虑这种转换。
在分类学习器中交互式地创建分类模型后,您可以为您的最佳模型生成MATLAB代码。然后,您可以使用代码用新数据训练模型。
生成MATLAB代码:
在庞大的数据集上进行训练。探索应用程序中训练数据子集的模型,然后生成代码以在更大的数据集上训练选定的模型
创建用于培训模型的脚本,而不需要学习不同函数的语法
检查代码以了解如何以编程方式训练分类器
修改代码以进行进一步分析,例如设置应用程序中不能更改的选项
重复你对不同数据的分析和自动化训练
在分类学习者,在模型窗格中,选择要为其生成代码的模型。
在分类学习者选项卡,出口部分中,点击生成函数.
应用程序从你的会话生成代码,并在MATLAB编辑器中显示文件。该文件包括预测器和响应、分类器训练方法和验证方法。保存文件。
要重新训练分类器模型,请使用原始数据或新数据作为输入参数从命令行调用函数。新数据必须与原始数据具有相同的形状。
复制生成代码的第一行,不包括单词函数
,并编辑trainingData
输入参数,以反映训练数据或新数据的变量名。同样,编辑responseData
输入参数(如果适用)。
例如,要重新训练用fishertable
数据集,输入:
[trainedModel, validationAccuracy] = trainClassifier (fishertable)
生成的代码返回trainedModel
结构,该结构包含与从Classification Learner将分类器导出到工作空间时创建的结构相同的字段。
如果您想用新数据自动训练相同的分类器,或者学习如何以编程方式训练分类器,请检查生成的代码。代码告诉你如何:
把数据处理成正确的形状
训练一个分类器并指定所有分类器选项
进行交叉验证
计算精度验证
计算验证预测和得分
请注意
如果您从一个训练有素的可优化模型生成MATLAB代码,生成的代码不包括优化过程。
如果您使用Classification Learner训练表中的一个模型,您可以生成C代码进行预测。
请注意
您可以使用逻辑回归模型生成用于预测的C代码。然而,由于逻辑回归的基本模型是GeneralizedLinearModel
或CompactGeneralizedLinearModel
对象,此过程需要在预测入口点函数中添加额外的代码行,以将数值预测转换为类预测。例如,请参见分类学习中训练Logistic回归模型的代码生成.
C代码生成需要:
MATLAB编码器™许可证
适当的模型(二进制或多类)
例如,在Classification Learner中训练一个SVM模型,然后将模型导出到工作空间中。
在导出的结构中找到底层分类模型对象。检查结构的字段以找到模型对象,例如,C.ClassificationSVM
,在那里C
是您的结构的名称。
底层模型对象取决于您训练的哪种类型的SVM(二进制或多类),以及您是否导出了紧凑的模型。模型对象可以是ClassificationSVM
,CompactClassificationSVM
,ClassificationECOC
,或CompactClassificationECOC
.
使用的函数saveLearnerForCoder
为代码生成准备模型:saveLearnerForCoder (Mdl文件名)
.例如:
saveLearnerForCoder (C。ClassificationSVM,“mySVM”)
创建一个函数来加载保存的模型并对新数据进行预测。例如:
函数标签:% # codegen使用SVM模型进行分类% CLASSIFYX将测量值按X分类%使用mySVM.mat文件中的SVM模型,and then%返回label中的类标签。CompactMdl = loadLearnerForCoder (“mySVM”);标签=预测(CompactMdl X);结束
从函数生成一个MEX函数。例如:
codegenclassifyX.marg游戏{数据}
% # codegen
编译指令表明MATLAB代码用于代码生成。要确保MEX函数可以使用相同的输入,请使用arg游戏
选择。指定数据
作为一个矩阵,只包含用于训练模型的预测列。使用MEX函数进行预测。例如:
标签= classifyX_mex(数据);
如果你在应用程序中使用特征选择或PCA特征转换,那么你需要采取额外的步骤。如果您使用手动特性选择,请在X
.的X
参数是函数的输入。
如果您在应用程序中使用了PCA,请使用导出结构的PCA字段中的信息来考虑这种转换。不管你导入的是表格还是矩阵,只要X
以相同顺序包含矩阵列。在生成代码之前,遵循以下步骤:
保存训练后的分类器结构的PCACenters和pcacoeffents字段,C
修改文件时,使用以下命令:
保存(“pcaInfo.mat”,“结构”,“C”,“PCACenters”,“PCACoefficients”);
在函数文件中,包括执行PCA转换的附加行。创建一个函数来加载保存的模型,执行PCA,并对新数据进行预测。例如:
函数标签:% # codegen使用SVM模型进行分类% CLASSIFYX将测量值按X分类%使用mySVM.mat文件中的SVM模型,%,然后返回label中的类标签。%如果您在应用程序中使用手动功能选择,请确保X%只包含模型中包含的列。CompactMdl = loadLearnerForCoder (“mySVM”);pcaInfo = coder.load (“pcaInfo.mat”,“PCACenters”,“PCACoefficients”);PCACenters = pcaInfo.PCACenters;PCACoefficients = pcaInfo.PCACoefficients;%进行PCA变换pcaTransformedX = bsxfun (@minus X, PCACenters) * PCACoefficients;(标签,分数)=预测(CompactMdl pcaTransformedX);结束
有关更详细的示例,请参见代码生成和分类学习程序.有关C代码生成工作流和限制的更多信息,请参见代码生成.
将模型从Classification Learner导出到工作空间后,可以使用MATLAB编译器™.
假设你将训练过的模型导出到MATLAB Workspace中将模型导出到工作区,有名字trainedModel
.要部署预测,请遵循以下步骤。
保存trainedModel
结构在.mat文件中。
保存mymodeltrainedModel
编写要编译的代码。此代码必须加载经过训练的模型并使用它进行预测。它还必须有一个pragma,这样编译器就会识别出Statistics和Machine Learning Toolbox™代码在编译的应用程序中是需要的。这个pragma可以是工具箱中的任何函数。
函数ypred = mypredict(台)% #函数fitctree负载(“mymodel.mat”);ypred = trainedModel.predictFcn(台);结束
编译为独立的应用程序。
世纪挑战集团- mmypredict.m
ClassificationBaggedEnsemble
|ClassificationDiscriminant
|ClassificationECOC
|ClassificationEnsemble
|ClassificationKNN
|ClassificationNaiveBayes
|ClassificationNeuralNetwork
|ClassificationSVM
|ClassificationTree
|CompactClassificationDiscriminant
|CompactClassificationECOC
|CompactClassificationEnsemble
|CompactClassificationNaiveBayes
|CompactClassificationNeuralNetwork
|CompactClassificationSVM
|CompactClassificationTree
|GeneralizedLinearModel