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.

ClassificationECOCCoderConfigurer

Configurador de codificador para modelo multiclase con máquinas de vectores de soporte (SVMs)

Descripción

Un objeto es un configurador de codificador de un modelo de clasificación (o) de códigos de salida de corrección de errores multiclase (ECOC) que utiliza alumnos binarios de SVM.ClassificationECOCCoderConfigurerClassificationECOCCompactClassificationECOC

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.

  • Configurar opciones de generación de código y especificar los atributos del codificador de parámetros de modelo mediante propiedades de objeto.

  • Genere código de C/C++ para las funciones del modelo ECOC utilizando.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 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 ECOC multiclase, vea las secciones de generación de código de, y.CompactClassificationECOCPredecirupdate

Creación

Después de entrenar un modelo de clasificación ECOC multiclase con alumnos binarios de SVM mediante el uso, cree un configurador de codificador para el modelo mediante el uso.fitcecoclearnerCoderConfigurer 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 los Datos predictores que se pasarán al código de C/C++ generado para la función del modelo de clasificación ECOC, especificado comoPredecir 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

Atributos del codificador de la función de pérdida binaria del alumno (argumento de par nombre-valor de), especificado como un'BinaryLoss'Predecir EnumeratedInput Objeto.

Los valores de atributo predeterminados del objeto se basan en los valores predeterminados de la función:EnumeratedInputPredecir

  • — Función de pérdida de aprendizaje binaria, especificada como uno de los vectores de caracteres o un vector de caracteres que designa un nombre de función personalizado.ValueBuiltInOptions El valor predeterminado es.'hinge'

    Para utilizar una opción personalizada, defina una función personalizada en la ruta de búsqueda y especifique como nombre de la función personalizada.MATLABValue

  • — Este valor es (predeterminado) o.SelectedOption'Built-in''Custom' El software se ajusta según.SelectedOptionValue Este atributo es de solo lectura.

  • — Matriz de celdas de,,,,, y.BuiltInOptions'hamming''linear''quadratic''exponential''binodeviance''hinge''logit' Este atributo es de solo lectura.

  • — Este valor debe ser.IsConstanttrue

  • — El valor predeterminado es.Tunabilityfalse Si especifica otros valores de atributo cuando es, el software se establece en.TunabilityfalseTunabilitytrue

Atributos del codificador del esquema de decodificación (argumento de par nombre-valor de), especificado como un'Decoding'Predecir EnumeratedInput Objeto.

Los valores de atributo predeterminados del objeto se basan en los valores predeterminados de la función:EnumeratedInputPredecir

  • — Valor de esquema de decodificación, especificado como (predeterminado), o unValue'lossweighted''lossbased' LearnerCoderInput Objeto.

    Si se establece en, a continuación, el software cambia a unIsConstantfalseValue LearnerCoderInput objeto con estos valores de atributo de codificador de solo lectura:

    • SizeVector[1,12]

    • VariableDimensions[0,1]

    • DataType'char'

    • — 1Tunability

    La entrada en el código generado es un vector de caracteres ajustable de tamaño variable que es o.'lossweighted''lossbased'

  • — Este valor es (predeterminado) o.SelectedOption'Built-in''NonConstant' El software se ajusta según.SelectedOptionValue Este atributo es de solo lectura.

  • — Matriz de celdas de y.BuiltInOptions'lossweighted''lossbased' Este atributo es de solo lectura.

  • — El valor predeterminado es.IsConstanttrue Si establece este valor en, el software cambia a un objeto.falseValueLearnerCoderInput

  • — El valor predeterminado es.Tunabilityfalse Si especifica otros valores de atributo cuando es, el software se establece en.TunabilityfalseTunabilitytrue

Atributos del codificador de la dimensión de observación de Datos predictores (argumento de par nombre-valor de), especificado como un'ObservationsIn'Predecir EnumeratedInput Objeto.

Los valores de atributo predeterminados del objeto se basan en los valores predeterminados de la función:EnumeratedInputPredecir

  • — Dimensión de observación de Datos predictores, especificada como (por defecto) o.Value'rows''columns' Este valor debe ser para un modelo que usa los alumnos binarios de SVM.'rows'

  • — Este valor es siempre.SelectedOption'Built-in' Este atributo es de solo lectura.

  • — Matriz de celdas de y.BuiltInOptions'rows''columns' Este atributo es de solo lectura.

  • — Este valor debe ser.IsConstanttrue

  • — El valor predeterminado es.Tunabilityfalse Si especifica otros valores de atributo cuando es, el software se establece en.TunabilityfalseTunabilitytrue

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 ECOC, especificado como 1, 2 o 3.Predecir

Los argumentos de salida son, en orden: (etiquetas de clase pronosticadas), (pérdidas binarias promedio negadas) y (puntuaciones de clase positiva). en el código de C/C++ generado devuelve las primeras salidas de la función, donde es el valor.PredecirEtiquetaNegLossPBScorePredecirnPredecirnNumOutputs

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 ECOC, 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 alumnos binarios entrenados (de un modelo de clasificación ECOC), especificados como unBinaryLearners ClassificationSVMCoderConfigurer Objeto.

Utilice el Argumentosupdate del objeto para especificar los atributos del codificador de todos los alumnos binarios.ClassificationSVMCoderConfigurer Los argumentos son,,,,,,,, y.updateAlphaBetaBiasCostoMuPriorScaleSigmaSupportVectorLabelsSupportVectors Para la configuración de, el software utiliza sólo las propiedades de argumento y omite las otras propiedades de.BinaryLearnersupdateClassificationSVMCoderConfigurer

Cada alumno puede tener un número diferente de vectores de soporte. Por lo tanto, el software configura los valores de atributo predeterminados del LearnerCoderInput objetos para, y para acomodar a todos los estudiantes binarios, en función del argumento de entrada de.AlphaSupportVectorLabelsSupportVectorsMdllearnerCoderConfigurer

  • SizeVector

    • Este valor es para y, donde es el mayor número de vectores de soporte en los estudiantes binarios.[s,1]AlphaSupportVectorLabelss

    • Este valor es para, donde es el número de predictores.[s,p]SupportVectorsp

  • — Este valor es o.VariableDimensions[0,0][1,0] Si cada alumno tiene el mismo número de vectores de soporte, el valor predeterminado es.[0,0] De lo contrario, este valor debe ser.[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

Para obtener más información sobre los demás argumentos, consulteupdate Argumentosupdate De.ClassificationSVMCoderConfigurer

Atributos del codificador del coste de clasificación errónea (de un modelo de clasificación ECOC), especificados como unCosto 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 clases.SizeVector[c,c]c

  • — 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 probabilidades previas (de un modelo de clasificación ECOC), especificados como unPrior 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 clases.SizeVector[1,c]c

  • — 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

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 ClassificationECOCCoderConfigurer 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

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.predict.m La matriz de celdas contiene otra matriz de celdas que incluye objetos y objetos.coder.PrimitiveTypecoder.Constant

Si modifica los atributos del codificador de ArgumentosPredecir, el software actualiza los objetos correspondientes en consecuencia. Si especifica el atributo como, el software eliminará el objeto correspondiente de la lista.TunabilityfalsePredictInputs

La matriz de celdas en es equivalente a para el configurador del codificador.PredictInputsconfigurer.CodeGenerationArguments{6}configurer

Tipos de datos: cell

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.update.m La estructura incluye un objeto para y objetos para y.coder.CellTypeBinaryLearnerscoder.PrimitiveTypeCostoPrior

Si modifica los atributos del codificador de Argumentosupdate, el software actualiza los objetos correspondientes en consecuencia. Si especifica el atributo como, el software eliminará el objeto correspondiente de la lista.TunabilityfalseUpdateInputs

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 de iris de Fisher y capacite un modelo ECOC multiclase utilizando estudiantes binarios de SVM.

load fisheriris X = meas; Y = species; Mdl = fitcecoc(X,Y);

es un objeto.MdlClassificationECOC

Cree un configurador de codificador para el modelo utilizando.ClassificationECOClearnerCoderConfigurer 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 =    ClassificationECOCCoderConfigurer with properties:     Update Inputs:     BinaryLearners: [1x1 ClassificationSVMCoderConfigurer]              Prior: [1x1 LearnerCoderInput]               Cost: [1x1 LearnerCoderInput]     Predict Inputs:                  X: [1x1 LearnerCoderInput]     Code Generation Parameters:         NumOutputs: 1     OutputFileName: 'ClassificationECOCModel'     Properties, Methods  

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

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 del modelo de clasificación ECOC () con la configuración predeterminada.PredecirupdateMdl

generateCode(configurer)
generateCode creates these files in output folder: 'initialize.m', 'predict.m', 'update.m', 'ClassificationECOCModel.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.ClassificationECOCModel

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

  • 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:40:41 [varargout{1:nargout}] = initialize('predict',X,varargin{:}); end 
type update.m
function update(varargin) %#codegen % Autogenerated by MATLAB,  09-Feb-2019 00:40:41 initialize('update',varargin{:}); end 
type initialize.m
function [varargout] = initialize(command,varargin) %#codegen % Autogenerated by MATLAB, 09-Feb-2019 00:40:41 coder.inline('always'); persistent model; if isempty(model)     model = loadCompactModel('ClassificationECOCModel.mat'); end switch(command)     case 'update'         % Update struct fields: BinaryLearners         %                       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 de códigos de salida de corrección de errores (ECOC) utilizando estudiantes binarios de SVM 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 ECOC. 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 diferentes configuraciones y actualice los parámetros en el código generado sin regenerar el código.

Entrenar modelo

Cargue el conjunto de datos de iris de Fisher.

load fisheriris X = meas; Y = species;

Cree una plantilla de aprendizaje binario de SVM para utilizar una función del kernel gaussiano y para estandarizar los Datos predictores.

t = templateSVM('KernelFunction','gaussian','Standardize',true);

Entrenar un modelo ECOC multiclase utilizando la plantilla.t

Mdl = fitcecoc(X,Y,'Learners',t);

es un objeto.MdlClassificationECOC

Cree el configurador del codificador

Cree un configurador de codificador para el modelo utilizando.ClassificationECOClearnerCoderConfigurer 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 dos primeras salidas de la función, que son las etiquetas pronosticadas y las pérdidas binarias promedio negadas.predict

configurer = learnerCoderConfigurer(Mdl,X,'NumOutputs',2)
configurer =    ClassificationECOCCoderConfigurer with properties:     Update Inputs:     BinaryLearners: [1×1 ClassificationSVMCoderConfigurer]              Prior: [1×1 LearnerCoderInput]               Cost: [1×1 LearnerCoderInput]     Predict Inputs:                  X: [1×1 LearnerCoderInput]     Code Generation Parameters:         NumOutputs: 2     OutputFileName: 'ClassificationECOCModel'     Properties, Methods  

es un objeto, que es un configurador de codificador de un objeto.configurerClassificationECOCCoderConfigurerClassificationECOC La pantalla muestra los argumentos de entrada ajustables de y:,,, y.PredecirupdateXBinaryLearnersPriorCosto

Especificar atributos de codificador de parámetros

Especifique los atributos del codificador de argumentos (Datos predictores y los argumentos de par nombre-valor y) y argumentos (vectores de soporte de los alumnos de SVM) para que pueda utilizar estos argumentos como argumentos de entrada y en el código generado.Predecir'Decoding''BinaryLoss'updatePredecirupdate

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 4]; 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 4 predictores, por lo que el segundo valor del atributo debe ser 4 y el segundo valor del atributo debe ser.XSizeVectorVariableDimensionsfalse

A continuación, modifique los atributos del codificador y utilice los argumentos de par nombre-valor en el código generado.BinaryLossDecoding'BinaryLoss''Decoding' Mostrar los atributos del codificador de.BinaryLoss

configurer.BinaryLoss
ans =    EnumeratedInput with properties:               Value: 'hinge'     SelectedOption: 'Built-in'     BuiltInOptions: {'hamming'  'linear'  'quadratic'  'exponential'  'binodeviance'  'hinge'  'logit'}         IsConstant: 1         Tunability: 0  

Para usar un valor no predeterminado en el código generado, debe especificar el valor antes de generar el código. Especifique el atributo de as.ValueBinaryLoss'exponential'

configurer.BinaryLoss.Value = 'exponential'; configurer.BinaryLoss
ans =    EnumeratedInput with properties:               Value: 'exponential'     SelectedOption: 'Built-in'     BuiltInOptions: {'hamming'  'linear'  'quadratic'  'exponential'  'binodeviance'  'hinge'  'logit'}         IsConstant: 1         Tunability: 1  

Si modifica valores de atributo cuando es (lógico 0), el software establece la a (lógica 1).TunabilityfalseTunabilitytrue

Mostrar los atributos del codificador de.Decoding

configurer.Decoding
ans =    EnumeratedInput with properties:               Value: 'lossweighted'     SelectedOption: 'Built-in'     BuiltInOptions: {'lossweighted'  'lossbased'}         IsConstant: 1         Tunability: 0  

Especifique el atributo de tal manera que pueda utilizar todos los valores disponibles en el código generado.IsConstantDecodingfalseBuiltInOptions

configurer.Decoding.IsConstant = false; configurer.Decoding
ans =    EnumeratedInput with properties:               Value: [1×1 LearnerCoderInput]     SelectedOption: 'NonConstant'     BuiltInOptions: {'lossweighted'  'lossbased'}         IsConstant: 0         Tunability: 1  

El software cambia el atributo de a un objeto para que pueda utilizar ambos y ' como el valor de.ValueDecodingLearnerCoderInput'lossweighted''lossbased'Decoding' Además, el software establece el to y el to.SelectedOption'NonConstant'Tunabilitytrue

Por último, modifique los atributos de codificador de in.SupportVectorsBinaryLearners Mostrar los atributos del codificador de.SupportVectors

configurer.BinaryLearners.SupportVectors
ans =    LearnerCoderInput with properties:              SizeVector: [54 4]     VariableDimensions: [1 0]               DataType: 'double'             Tunability: 1  

El valor predeterminado es porque cada alumno tiene un número diferente de vectores de soporte.VariableDimensions[true false] Si vuelve a entrenar el modelo ECOC con nuevos datos o diferentes configuraciones, el número de vectores de soporte en los alumnos de SVM puede variar. Por lo tanto, aumente el límite superior del número de vectores de soporte.

configurer.BinaryLearners.SupportVectors.SizeVector = [150 4];
SizeVector attribute for Alpha has been modified to satisfy configuration constraints. SizeVector 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.

Visualice el configurador del codificador.

configurer
configurer =    ClassificationECOCCoderConfigurer with properties:     Update Inputs:     BinaryLearners: [1×1 ClassificationSVMCoderConfigurer]              Prior: [1×1 LearnerCoderInput]               Cost: [1×1 LearnerCoderInput]     Predict Inputs:                  X: [1×1 LearnerCoderInput]         BinaryLoss: [1×1 EnumeratedInput]           Decoding: [1×1 EnumeratedInput]     Code Generation Parameters:         NumOutputs: 2     OutputFileName: 'ClassificationECOCModel'     Properties, Methods  

La pantalla ahora incluye y también.BinaryLossDecoding

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)

Genere código para las funciones del modelo de clasificación ECOC () con la configuración predeterminada.PredecirupdateMdl

generateCode(configurer)
generateCode creates these files in output folder: 'initialize.m', 'predict.m', 'update.m', 'ClassificationECOCModel.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.ClassificationECOCModel

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

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

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. Dado que especificó como un argumento de entrada ajustable cambiando el atributo antes de generar el código, también debe especificarlo en la llamada a la función MEX, aunque es el valor predeterminado de.'Decoding'IsConstant'lossweighted''Decoding'

[label,NegLoss] = predict(Mdl,X,'BinaryLoss','exponential'); [label_mex,NegLoss_mex] = ClassificationECOCModel('predict',X,'BinaryLoss','exponential','Decoding','lossweighted');

Comparar con mediante el uso de.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.NegLoss_mexNegLoss En este caso, compare con, permitiendo una pequeña tolerancia.NegLoss_mexNegLoss

find(abs(NegLoss-NegLoss_mex) > 1e-8)
ans =    0×1 empty double column vector 

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

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

Vuelva a entrenar el modelo con un ajuste diferente. Especifique como para que el software seleccione un factor de escala adecuado mediante un procedimiento heurístico.'KernelScale''auto'

t_new = templateSVM('KernelFunction','gaussian','Standardize',true,'KernelScale','auto'); retrainedMdl = fitcecoc(X,Y,'Learners',t_new);

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.

ClassificationECOCModel('update',params)

Compruebe que el código generado

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

[label,NegLoss] = predict(retrainedMdl,X,'BinaryLoss','exponential','Decoding','lossbased'); [label_mex,NegLoss_mex] = ClassificationECOCModel('predict',X,'BinaryLoss','exponential','Decoding','lossbased'); isequal(label,label_mex)
ans = logical
   1

find(abs(NegLoss-NegLoss_mex) > 1e-8)
ans =    0×1 empty double column vector 

La comparación confirma que y son iguales, y son iguales dentro de la tolerancia.labelslabels_mexNegLossNegLoss_mex

Más acerca de

expandir todo

Introducido en R2019a