Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

ClassificationSVMCoderConfigurer

Configurador de codificador para la máquina de vectores de soporte (SVM) para la clasificación binaria y de una clase

Descripción

Un objeto es un configurador de codificador de un modelo de clasificación de SVM (o).ClassificationSVMCoderConfigurerClassificationSVMCompactClassificationSVM

Un configurador de codificador ofrece características convenientes para configurar las opciones de generación de código, generar código de C/C++ y actualizar los parámetros del modelo en el código generado.

  • Configure las opciones de generación de código y especifique los atributos del codificador de los parámetros del modelo SVM utilizando propiedades del objeto.

  • Genere código de C/C++ para las funciones y el modelo de clasificación de SVM mediante el uso de.PredecirupdategenerateCode La generación de código C/C++ requiere MATLAB®Coder™.

  • Actualizar los parámetros del modelo en el código de C/C++ generado sin tener que regenerar el código. Esta característica reduce el esfuerzo necesario para regenerar, volver a implementar y volver a comprobar el código de C/C++ cuando se vuelve a entrenar el modelo SVM con nuevos datos o configuración. Antes de actualizar los parámetros del modelo, utilice para validar y extraer los parámetros del modelo que se actualizarán.validatedUpdateInputs

Este diagrama de flujo muestra el flujo de trabajo de generación de código utilizando un configurador de codificador.

Para las notas de uso de generación de código y las limitaciones de un modelo de clasificación de SVM, vea las secciones de generación de código de, y.CompactClassificationSVMPredecirupdate

Creación

Después de entrenar un modelo de clasificación de SVM mediante el uso, cree un configurador de codificador para el modelo mediante.fitcsvmlearnerCoderConfigurer Utilice las propiedades de un configurador de codificador para especificar los atributos de codificador y los argumentos.Predecirupdate A continuación, se usa para generar código de C/C++ basado en los atributos de codificador especificados.generateCode

Propiedades

expandir todo

ArgumentosPredecir

Las propiedades enumeradas en esta sección especifican los atributos del codificador de los argumentos de función en el código generado.Predecir

Atributos del codificador de Datos predictores para pasar al código de C/C++ generado para la función del modelo de clasificación de SVM, especificado como unPredecir LearnerCoderInput Objeto.

Cuando se crea un configurador de codificador mediante la función, el argumento de entrada determina los valores predeterminados de los atributos del codificador:learnerCoderConfigurerXLearnerCoderInput

  • : El valor predeterminado es el tamaño de la matriz de la entrada.SizeVectorX

  • — Este valor es (predeterminado) o.VariableDimensions[0,0][1,0]

    • indica que el tamaño de la matriz es fijo como se especifica en.[0,0]SizeVector

    • indica que la matriz tiene filas de tamaño variable y columnas de tamaño fijo.[1,0] En este caso, el primer valor de es el límite superior para el número de filas y el segundo valor de es el número de columnas.SizeVectorSizeVector

  • — Este valor es o.DataTypesingledouble El tipo de datos predeterminado depende del tipo de datos de la entrada.X

  • — Este valor debe ser, lo que significa que en el código de C/C++ generado siempre incluye Datos predictores como una entrada.TunabilitytruePredecir

Puede modificar los atributos del codificador mediante la notación de puntos. Por ejemplo, si desea generar código C/C++ que acepte Datos predictores con 100 observaciones de tres variables predictoras, especifique los atributos del codificador del configurador del codificador de la siguiente manera: indica que la primera y la segunda dimensión de (número de observati Ons y el número de variables predictoras, respectivamente) tienen tamaños fijos.Xconfigurer

configurer.X.SizeVector = [100 3]; configurer.X.DataType = 'double'; configurer.X.VariableDimensions = [0 0];
[0 0]X

Para permitir que el código de C/C++ generado acepte Datos predictores con hasta 100 observaciones, especifique los atributos del codificador de la siguiente manera: indica que la primera dimensión de (número de observaciones) tiene un tamaño variable y la segunda dimensión de (número de predictor var iables) tiene un tamaño fijo.X

configurer.X.SizeVector = [100 3]; configurer.X.DataType = 'double'; configurer.X.VariableDimensions = [1 0];
[1 0]XX El número especificado de observaciones, 100 en este ejemplo, se convierte en el número máximo permitido de observaciones en el código de C/C++ generado. Para permitir cualquier número de observaciones, especifique el límite como.Inf

Número de argumentos de salida que se devuelven desde el código de C/C++ generado para la función del modelo de clasificación de SVM, especificado como 1 o 2.Predecir

Los argumentos de salida de son (etiquetas de clase pronosticadas) y (puntuaciones o probabilidades posteriores) en el orden de la lista. en el código de C/C++ generado devuelve las primeras salidas de la función, donde es el valor.PredecirEtiquetaPuntuaciónPredecirnPredecirnNumOutputs

Después de crear el configurador del codificador, puede especificar el número de salidas mediante la notación de puntos.configurer

configurer.NumOutputs = 2;

La propiedad equivale a la opción del compilador.NumOutputs'-nargout'codegen Esta opción especifica el número de argumentos de salida en la función de punto de entrada de generación de código. La función de objeto genera dos funciones de punto de entrada (y para las funciones de un modelo de clasificación de SVM, respectivamente) y genera código de C/C++ para las dos funciones de punto de entrada.generateCodepredict.mupdate.mPredecirupdate El valor especificado para la propiedad corresponde al número de argumentos de salida en la función de punto de entrada.NumOutputspredict.m

Tipos de datos: double

Argumentosupdate

Las propiedades enumeradas en esta sección especifican los atributos del codificador de los argumentos de función en el código generado.update La función toma un modelo entrenado y nuevos parámetros de modelo como argumentos de entrada y devuelve una versión actualizada del modelo que contiene los nuevos parámetros.update Para habilitar la actualización de los parámetros en el código generado, debe especificar los atributos del codificador de los parámetros antes de generar el código. Utilice un LearnerCoderInput objeto para especificar los atributos del codificador de cada parámetro. Los valores de atributo predeterminados se basan en los parámetros del modelo en el argumento de entrada de.MdllearnerCoderConfigurer

Atributos del codificador de los coeficientes del clasificador entrenado (de un modelo de clasificación de SVM), especificados como unAlpha LearnerCoderInput Objeto.

Los valores de atributo predeterminados del objeto se basan en el argumento de entrada de:LearnerCoderInputMdllearnerCoderConfigurer

  • — El valor predeterminado es, donde está el número de vectores de soporte en.SizeVector[s,1]sMdl

  • — Este valor es (predeterminado) o.VariableDimensions[0,0][1,0]

    • indica que el tamaño de la matriz es fijo como se especifica en.[0,0]SizeVector

    • indica que la matriz tiene filas de tamaño variable y columnas de tamaño fijo.[1,0] En este caso, el primer valor de es el límite superior para el número de filas y el segundo valor de es el número de columnas.SizeVectorSizeVector

  • — Este valor es o.DataTypesingledouble El tipo de datos predeterminado es coherente con el tipo de datos de los datos de entrenamiento que se usan para entrenar.Mdl

  • : Si entrena un modelo con una función de kernel lineal y el modelo almacena los coeficientes predictores lineales () sin los vectores de soporte y los valores relacionados, este valor debe ser.TunabilityBetafalse De lo contrario, este valor debe ser.true

Atributos de codificador de los coeficientes predictores lineales (de un modelo de clasificación de SVM), especificados como unBeta LearnerCoderInput Objeto.

Los valores de atributo predeterminados del objeto se basan en el argumento de entrada de:LearnerCoderInputMdllearnerCoderConfigurer

  • — Este valor debe ser, donde está el número de predictores en.SizeVector[p,1]pMdl

  • — Este valor debe ser, indicando que el tamaño de la matriz es fijo como se especifica en.VariableDimensions[0,0]SizeVector

  • — Este valor es o.DataTypesingledouble El tipo de datos predeterminado es coherente con el tipo de datos de los datos de entrenamiento que se usan para entrenar.Mdl

  • : Si entrena un modelo con una función de kernel lineal y el modelo almacena los coeficientes predictores lineales () sin los vectores de soporte y los valores relacionados, este valor debe ser.TunabilityBetatrue De lo contrario, este valor debe ser.false

Atributos del codificador del término de sesgo (de un modelo de clasificación de SVM), especificado como unBias LearnerCoderInput Objeto.

Los valores de atributo predeterminados del objeto se basan en el argumento de entrada de:LearnerCoderInputMdllearnerCoderConfigurer

  • — Este valor debe ser.SizeVector[1,1]

  • — Este valor debe ser, indicando que el tamaño de la matriz es fijo como se especifica en.VariableDimensions[0,0]SizeVector

  • — Este valor es o.DataTypesingledouble El tipo de datos predeterminado es coherente con el tipo de datos de los datos de entrenamiento que se usan para entrenar.Mdl

  • — Este valor debe ser.Tunabilitytrue

Atributos del codificador del costo de clasificación errónea (de un modelo de clasificación de SVM), especificado como unCosto LearnerCoderInput Objeto.

Los valores de atributo predeterminados del objeto se basan en el argumento de entrada de:LearnerCoderInputMdllearnerCoderConfigurer

  • — Para la clasificación binaria, este valor debe ser.SizeVector[2 2] Para la clasificación de una clase, este valor debe ser.[1 1]

  • — Este valor debe ser, indicando que el tamaño de la matriz es fijo como se especifica en.VariableDimensions[0,0]SizeVector

  • — Este valor es o.DataTypesingledouble El tipo de datos predeterminado es coherente con el tipo de datos de los datos de entrenamiento que se usan para entrenar.Mdl

  • : Para la clasificación binaria, el valor predeterminado es.Tunabilitytrue Para la clasificación de una clase, este valor debe ser.false

Atributos del codificador de los medios predictores (de un modelo de clasificación de SVM), especificados como unMu LearnerCoderInput Objeto.

Los valores de atributo predeterminados del objeto se basan en el argumento de entrada de:LearnerCoderInputMdllearnerCoderConfigurer

  • — Si entrena utilizando Datos predictores estandarizados especificandoSizeVectorMdl 'Standardize',true, este valor debe ser, donde es el número de predictores en.[1,p]pMdl De lo contrario, este valor debe ser.[0,0]

  • — Este valor debe ser, indicando que el tamaño de la matriz es fijo como se especifica en.VariableDimensions[0,0]SizeVector

  • — Este valor es o.DataTypesingledouble El tipo de datos predeterminado es coherente con el tipo de datos de los datos de entrenamiento que se usan para entrenar.Mdl

  • — Si entrena utilizando Datos predictores estandarizados especificandoTunabilityMdl 'Standardize',true, el valor predeterminado es.true De lo contrario, este valor debe ser.false

Atributos del codificador de las probabilidades previas (de un modelo de clasificación de SVM), especificados como unPrior LearnerCoderInput Objeto.

Los valores de atributo predeterminados del objeto se basan en el argumento de entrada de:LearnerCoderInputMdllearnerCoderConfigurer

  • — Para la clasificación binaria, este valor debe ser.SizeVector[1 2] Para la clasificación de una clase, este valor debe ser.[1 1]

  • — Este valor debe ser, indicando que el tamaño de la matriz es fijo como se especifica en.VariableDimensions[0,0]SizeVector

  • — Este valor es o.DataTypesingledouble El tipo de datos predeterminado es coherente con el tipo de datos de los datos de entrenamiento que se usan para entrenar.Mdl

  • : Para la clasificación binaria, el valor predeterminado es.Tunabilitytrue Para la clasificación de una clase, este valor debe ser.false

Atributos del codificador del parámetro de escala del kernel (de un modelo de clasificación de SVM), especificado como unKernelParameters.Scale LearnerCoderInput Objeto.

Los valores de atributo predeterminados del objeto se basan en el argumento de entrada de:LearnerCoderInputMdllearnerCoderConfigurer

  • — Este valor debe ser.SizeVector[1,1]

  • — Este valor debe ser, indicando que el tamaño de la matriz es fijo como se especifica en.VariableDimensions[0,0]SizeVector

  • — Este valor es o.DataTypesingledouble El tipo de datos predeterminado es coherente con el tipo de datos de los datos de entrenamiento que se usan para entrenar.Mdl

  • — El valor predeterminado es.Tunabilitytrue

Atributos del codificador de las desviaciones estándar del predictor (de un modelo de clasificación de SVM), especificados como unSigma LearnerCoderInput Objeto.

Los valores de atributo predeterminados del objeto se basan en el argumento de entrada de:LearnerCoderInputMdllearnerCoderConfigurer

  • — Si entrena utilizando Datos predictores estandarizados especificandoSizeVectorMdl 'Standardize',true, este valor debe ser, donde es el número de predictores en.[1,p]pMdl De lo contrario, este valor debe ser.[0,0]

  • — Este valor debe ser, indicando que el tamaño de la matriz es fijo como se especifica en.VariableDimensions[0,0]SizeVector

  • — Este valor es o.DataTypesingledouble El tipo de datos predeterminado es coherente con el tipo de datos de los datos de entrenamiento que se usan para entrenar.Mdl

  • — Si entrena utilizando Datos predictores estandarizados especificandoTunabilityMdl 'Standardize',true, el valor predeterminado es.true De lo contrario, este valor debe ser.false

Atributos del codificador de las etiquetas de clase de vector de soporte (de un modelo de clasificación de SVM), especificadas como unSupportVectorLabels LearnerCoderInput Objeto.

Los valores de atributo predeterminados del objeto se basan en el argumento de entrada de:LearnerCoderInputMdllearnerCoderConfigurer

  • — El valor predeterminado es, donde está el número de vectores de soporte en.SizeVector[s,1]sMdl

  • — Este valor es (predeterminado) o.VariableDimensions[0,0][1,0]

    • indica que el tamaño de la matriz es fijo como se especifica en.[0,0]SizeVector

    • indica que la matriz tiene filas de tamaño variable y columnas de tamaño fijo.[1,0] En este caso, el primer valor de es el límite superior para el número de filas y el segundo valor de es el número de columnas.SizeVectorSizeVector

  • — Este valor es o.DataTypesingledouble El tipo de datos predeterminado es coherente con el tipo de datos de los datos de entrenamiento que se usan para entrenar.Mdl

  • : Si entrena un modelo con una función de kernel lineal y el modelo almacena los coeficientes predictores lineales () sin los vectores de soporte y los valores relacionados, este valor debe ser.TunabilityBetafalse De lo contrario, este valor debe ser.true

Atributos del codificador de los vectores de soporte (de un modelo de clasificación de SVM), especificados como unSupportVectors LearnerCoderInput Objeto.

Los valores de atributo predeterminados del objeto se basan en el argumento de entrada de:LearnerCoderInputMdllearnerCoderConfigurer

  • — El valor predeterminado es, donde es el número de vectores de soporte, y es el número de predictores en.SizeVector[s,p]spMdl

  • — Este valor es (predeterminado) o.VariableDimensions[0,0][1,0]

    • indica que el tamaño de la matriz es fijo como se especifica en.[0,0]SizeVector

    • indica que la matriz tiene filas de tamaño variable y columnas de tamaño fijo.[1,0] En este caso, el primer valor de es el límite superior para el número de filas y el segundo valor de es el número de columnas.SizeVectorSizeVector

  • — Este valor es o.DataTypesingledouble El tipo de datos predeterminado es coherente con el tipo de datos de los datos de entrenamiento que se usan para entrenar.Mdl

  • : Si entrena un modelo con una función de kernel lineal y el modelo almacena los coeficientes predictores lineales () sin los vectores de soporte y los valores relacionados, este valor debe ser.TunabilityBetafalse De lo contrario, este valor debe ser.true

Otras opciones de configurador

Nombre de archivo del código de C/C++ generado, especificado como vector de caracteres.

La función de objeto degenerateCode ClassificationSVMCoderConfigurer genera código de C/C++ con este nombre de archivo.

El nombre de archivo no debe contener espacios porque pueden provocar errores de generación de código en determinadas configuraciones del sistema operativo. Además, el nombre debe ser un nombre de función de MATLAB válido.

Después de crear el configurador del codificador, puede especificar el nombre del archivo utilizando la notación de puntos.configurer

configurer.OutputFileName = 'myModel';

Tipos de datos: char

Nivel de verbosidad, especificado como (lógico 1) o (lógico 0).truefalse El nivel de detalle controla la visualización de mensajes de notificación en la línea de comandos.

ValorDescripción
(lógico 1)trueEl software muestra mensajes de notificación cuando los cambios realizados en los atributos del codificador de un parámetro resultan en cambios para otros parámetros dependientes.
(lógico 0)falseEl software no muestra mensajes de notificación.

Para habilitar la actualización de los parámetros del modelo de aprendizaje automático en el código generado, debe configurar los atributos del codificador de los parámetros antes de generar el código. Los atributos del codificador de parámetros dependen unos de otros, por lo que el software almacena las dependencias como restricciones de configuración. Si usted modifica los atributos del codificador de un parámetro usando un configurador del codificador, y la modificación requiere los cambios subsiguientes a otros parámetros dependientes para satisfacer las restricciones de la configuración, después el software cambia los atributos del codificador del dependiente Parámetros. El nivel de verbosidad determina si el software muestra o no mensajes de notificación para estos cambios posteriores.

Después de crear el configurador del codificador, puede modificar el nivel de verbosidad mediante la notación de puntos.configurer

configurer.Verbose = false;

Tipos de datos: logical

Opciones para la personalización de generación de código

Para personalizar el flujo de trabajo de generación de código, utilice la función y las tres propiedades siguientes con, en lugar de utilizar la función.generateFilescodegengenerateCode

Después de generar los dos archivos de función de punto de entrada (y) mediante la función, puede modificar estos archivos según el flujo de trabajo de generación de código.predict.mupdate.mgenerateFiles Por ejemplo, puede modificar el archivo para incluir el preprocesamiento de datos, o puede agregar estas funciones de punto de entrada a otro proyecto de generación de código.predict.m A continuación, puede generar código de C/C++ mediante la función y los argumentos apropiados para las funciones de punto de entrada modificadas o el proyecto de generación de código.codegencodegen Utilice las tres propiedades descritas en esta sección como punto de partida para establecer los argumentos.codegen

Esta propiedad es de solo lectura.

argumentos, especificados como una matriz de celdas.codegen

Esta propiedad permite personalizar el flujo de trabajo de generación de código. Utilice la función si no necesita personalizar el flujo de trabajo.generateCode

En lugar de utilizar con el configurador del codificador, puede generar código de C/C++ de la siguiente manera: Si personaliza el flujo de trabajo de generación de código, modifique en consecuencia antes de llamar.generateCodeconfigurer

generateFiles(configurer) cgArgs = configurer.CodeGenerationArguments; codegen(cgArgs{:})
cgArgscodegen

Si modifica otras propiedades de, el software actualiza la propiedad en consecuencia.configurerCodeGenerationArguments

Tipos de datos: cell

Esta propiedad es de solo lectura.

Argumento de entrada de la función de punto de entrada para la generación de código, especificado como una matriz de celdas de un objeto.predict.mcoder.PrimitiveType El objeto incluye los atributos del codificador de los Datos predictores almacenados en la propiedad.coder.PrimitiveTypeX

Si modifica los atributos del codificador de los Datos predictores, el software actualiza el objeto en consecuencia.coder.PrimitiveType

El objeto en es equivalente a para el configurador del codificador.coder.PrimitiveTypePredictInputsconfigurer.CodeGenerationArguments{6}configurer

Tipos de datos: cell

Esta propiedad es de solo lectura.

Lista de los argumentos de entrada ajustables de la función de punto de entrada para la generación de código, especificado como una matriz de celdas de una estructura que incluye objetos.update.mcoder.PrimitiveType Cada objeto incluye los atributos del codificador de un parámetro de modelo de aprendizaje automático afinable.coder.PrimitiveType

Si modifica los atributos del codificador de un parámetro de modelo utilizando las propiedades del configurador del codificador (Argumentosupdate propiedades), el software actualiza el objeto correspondiente en consecuencia.coder.PrimitiveType Si especifica el atributo de un parámetro de modelo de aprendizaje automático como, el software eliminará el objeto correspondiente de la lista.Tunabilityfalsecoder.PrimitiveTypeUpdateInputs

La estructura en es equivalente a para el configurador del codificador.UpdateInputsconfigurer.CodeGenerationArguments{3}configurer

Tipos de datos: cell

Funciones del objeto

generateCodeGenerar código de C/C++ mediante el configurador de codificador
generateFilesGenere archivos para la generación de código mediante el configurador del codificadorMATLAB
validatedUpdateInputsValide y extraiga parámetros del modelo de aprendizaje automático para actualizar

Ejemplos

contraer todo

Entrenar un modelo de aprendizaje automático y, a continuación, generar código para las funciones y el modelo mediante el uso de un configurador de codificador.Predecirupdate

Cargue el conjunto de datos y capacite un modelo de clasificación de SVM binario.ionosphere

load ionosphere Mdl = fitcsvm(X,Y);

es un objeto.MdlClassificationSVM

Cree un configurador de codificador para el modelo utilizando.ClassificationSVMlearnerCoderConfigurer Especifique los datos del predictor.X La función utiliza la entrada para configurar los atributos del codificador de la entrada de función.learnerCoderConfigurerXPredecir

configurer = learnerCoderConfigurer(Mdl,X)
configurer =    ClassificationSVMCoderConfigurer with properties:     Update Inputs:                   Alpha: [1x1 LearnerCoderInput]          SupportVectors: [1x1 LearnerCoderInput]     SupportVectorLabels: [1x1 LearnerCoderInput]                   Scale: [1x1 LearnerCoderInput]                    Bias: [1x1 LearnerCoderInput]                   Prior: [1x1 LearnerCoderInput]                    Cost: [1x1 LearnerCoderInput]     Predict Inputs:                       X: [1x1 LearnerCoderInput]     Code Generation Parameters:              NumOutputs: 1          OutputFileName: 'ClassificationSVMModel'     Properties, Methods  

es un objeto, que es un configurador de codificador de un objeto.configurerClassificationSVMCoderConfigurerClassificationSVM

Para generar código de C/C++, debe tener acceso a un compilador de C/C++ que esté configurado correctamente. MATLAB Coder localiza y utiliza un compilador compatible e instalado. Puede usar para ver y cambiar el compilador predeterminado.mex-setup Para obtener más información, consulte.Cambiar el compilador predeterminado (MATLAB)

Genere código para las funciones y el modelo de clasificación de SVM () con la configuración predeterminada.PredecirupdateMdl

generateCode(configurer)
generateCode creates these files in output folder: 'initialize.m', 'predict.m', 'update.m', 'ClassificationSVMModel.mat' 

La función completa estas acciones:generateCode

  • Genere los archivos de MATLAB necesarios para generar código, incluidas las dos funciones de punto de entrada y para las funciones de, respectivamente.predict.mupdate.mPredecirupdateMdl

  • Cree una función MEX denominada para las dos funciones de punto de entrada.ClassificationSVMModel

  • Cree el código para la función MEX en la carpeta.codegen\mex\ClassificationSVMModel

  • Copie la función MEX a la carpeta actual.

Mostrar el contenido de la, y los archivos mediante la función.predict.mupdate.minitialize.mtype

type predict.m
function varargout = predict(X,varargin) %#codegen % Autogenerated by MATLAB,  09-Feb-2019 00:41:18 [varargout{1:nargout}] = initialize('predict',X,varargin{:}); end 
type update.m
function update(varargin) %#codegen % Autogenerated by MATLAB,  09-Feb-2019 00:41:18 initialize('update',varargin{:}); end 
type initialize.m
function [varargout] = initialize(command,varargin) %#codegen % Autogenerated by MATLAB, 09-Feb-2019 00:41:18 coder.inline('always'); persistent model; if isempty(model)     model = loadCompactModel('ClassificationSVMModel.mat'); end switch(command)     case 'update'         % Update struct fields: Alpha         %                       SupportVectors         %                       SupportVectorLabels         %                       Scale         %                       Bias         %                       Prior         %                       Cost                  model = update(model,varargin{:});     case 'predict'         % Predict Inputs: X                  X = varargin{1};         if nargin == 2             [varargout{1:nargout}] = predict(model,X);         else             PVPairs = cell(1,nargin-2);             for i = 1:nargin-2                 PVPairs{1,i} = varargin{i+1};             end             [varargout{1:nargout}] = predict(model,X,PVPairs{:});         end end end 

Entrenar un modelo SVM utilizando un conjunto de datos parciales y crear un configurador de codificador para el modelo. Utilice las propiedades del configurador del codificador para especificar los atributos del codificador de los parámetros del modelo SVM. Utilice la función de objeto del configurador del codificador para generar código C que predice etiquetas para nuevos Datos predictores. A continuación, vuelva a entrenar el modelo utilizando todo el conjunto de datos y actualizar los parámetros en el código generado sin regenerar el código.

Entrenar modelo

Cargue el conjunto de datos.ionosphere Este conjunto de datos tiene 34 predictores y 351 respuestas binarias para las devoluciones de radar, ya sea Bad () o Good ().'b''g' Entrenar un modelo de clasificación de SVM binario utilizando las primeras 50 observaciones.

load ionosphere Mdl = fitcsvm(X(1:50,:),Y(1:50));

es un objeto.MdlClassificationSVM

Cree el configurador del codificador

Cree un configurador de codificador para el modelo utilizando.ClassificationSVMlearnerCoderConfigurer Especifique los datos del predictor.X La función utiliza la entrada para configurar los atributos del codificador de la entrada de función.learnerCoderConfigurerXPredecir Además, establezca el número de salidas en 2 para que el código generado devuelva las etiquetas y las puntuaciones previstas.

configurer = learnerCoderConfigurer(Mdl,X(1:50,:),'NumOutputs',2);

es un objeto, que es un configurador de codificador de un objeto.configurerClassificationSVMCoderConfigurerClassificationSVM

Especificar atributos de codificador de parámetros

Especifique los atributos del codificador de los parámetros del modelo de clasificación de SVM para que pueda actualizar los parámetros en el código generado después de volver a entrenar el modelo. En este ejemplo se especifican los atributos del codificador de los Datos predictores que se desean pasar al código generado y los atributos del codificador de los vectores de soporte del modelo SVM.

En primer lugar, especifique los atributos del codificador de modo que el código generado acepte cualquier número de observaciones.X Modifique los atributos y.SizeVectorVariableDimensions El atributo especifica el límite superior del tamaño de los Datos predictores y el atributo especifica si cada dimensión de los Datos predictores tiene un tamaño variable o un tamaño fijo.SizeVectorVariableDimensions

configurer.X.SizeVector = [Inf 34]; configurer.X.VariableDimensions = [true false];

El tamaño de la primera dimensión es el número de observaciones. En este caso, el código especifica que el límite superior del tamaño es y el tamaño es variable, lo que significa que puede tener cualquier número de observaciones.InfX Esta especificación es conveniente si no conoce el número de observaciones al generar código.

El tamaño de la segunda dimensión es el número de variables predictoras. Este valor debe fijarse para un modelo de aprendizaje automático. contiene 34 predictores, por lo que el valor del atributo debe ser 34 y debe ser el valor del atributo.XSizeVectorVariableDimensionsfalse

Si vuelve a entrenar el modelo SVM con nuevos datos o con diferentes configuraciones, el número de vectores de soporte puede variar. Por lo tanto, especifique los atributos del codificador de modo que pueda actualizar los vectores de soporte en el código generado.SupportVectors

configurer.SupportVectors.SizeVector = [250 34];
SizeVector attribute for Alpha has been modified to satisfy configuration constraints. SizeVector attribute for SupportVectorLabels has been modified to satisfy configuration constraints. 
configurer.SupportVectors.VariableDimensions = [true false];
VariableDimensions attribute for Alpha has been modified to satisfy configuration constraints. VariableDimensions attribute for SupportVectorLabels has been modified to satisfy configuration constraints. 

Si usted modifica los atributos del codificador de, después el software modifica los atributos del codificador de y para satisfacer las restricciones de configuración.SupportVectorsAlphaSupportVectorLabels Si la modificación de los atributos del codificador de un parámetro requiere cambios subsiguientes en otros parámetros dependientes para satisfacer las restricciones de configuración, el software cambia los atributos del codificador de los parámetros dependientes.

Generar código

Para generar código de C/C++, debe tener acceso a un compilador de C/C++ que esté configurado correctamente. MATLAB Coder localiza y utiliza un compilador compatible e instalado. Puede usar para ver y cambiar el compilador predeterminado.mex-setup Para obtener más información, consulte.Cambiar el compilador predeterminado (MATLAB)

Se usa para generar código para las funciones y el modelo de clasificación de SVM () con la configuración predeterminada.generateCodePredecirupdateMdl

generateCode(configurer)
generateCode creates these files in output folder: 'initialize.m', 'predict.m', 'update.m', 'ClassificationSVMModel.mat' 

genera los archivos de MATLAB necesarios para generar código, incluidas las dos funciones de punto de entrada y para las funciones de, respectivamente.generateCodepredict.mupdate.mPredecirupdateMdl A continuación, crea una función MEX denominada para las dos funciones de punto de entrada en la carpeta y copia la función MEX a la carpeta actual.generateCodeClassificationSVMModelcodegen\mex\ClassificationSVMModel

Compruebe que el código generado

Pasar algunos Datos predictores para comprobar si la función de y la función en la función MEX devuelven las mismas etiquetas.PredecirMdlPredecir Para llamar a una función de punto de entrada en una función MEX que tiene más de un punto de entrada, especifique el nombre de la función como el primer argumento de entrada.

[label,score] = predict(Mdl,X); [label_mex,score_mex] = ClassificationSVMModel('predict',X);

Compare y utilice.Etiquetalabel_mexisequal

isequal(label,label_mex)
ans = logical
   1

Devuelve Logical 1 () si todas las entradas son iguales.isequaltrue La comparación confirma que la función y la función de la función MEX devuelven las mismas etiquetas.PredecirMdlPredecir

puede incluir diferencias de redondeo en comparación con.score_mexPuntuación En este caso, compare y, permitiendo una pequeña tolerancia.score_mexPuntuación

find(abs(score-score_mex) > 1e-8)
ans =    0x1 empty double column vector 

La comparación confirma que y son iguales dentro de la tolerancia.Puntuaciónscore_mex1e–8

Reentrenar modelo y actualizar parámetros en código generado

Vuelva a entrenar el modelo utilizando todo el conjunto de datos.

retrainedMdl = fitcsvm(X,Y);

Extraiga los parámetros que desea actualizar mediante.validatedUpdateInputs Esta función detecta los parámetros del modelo modificados y valida si los valores de parámetro modificados satisfacen los atributos del codificador de los parámetros.retrainedMdl

params = validatedUpdateInputs(configurer,retrainedMdl);

Actualizar los parámetros en el código generado.

ClassificationSVMModel('update',params)

Compruebe que el código generado

Compare las salidas de la función y la función en la función MEX actualizada.PredecirretrainedMdlPredecir

[label,score] = predict(retrainedMdl,X); [label_mex,score_mex] = ClassificationSVMModel('predict',X); isequal(label,label_mex)
ans = logical
   1

find(abs(score-score_mex) > 1e-8)
ans =    0x1 empty double column vector 

La comparación confirma que y son iguales, y los valores de puntuación son iguales dentro de la tolerancia.labelslabels_mex

Más acerca de

expandir todo

Introducido en R2018b