exponenta event banner

ClassificationSVMCoderConfigurer

Конфигуратор кодера для поддержки векторной машины (SVM) для одноклассной и двоичной классификации

Описание

A ClassificationSVMCoderConfigurer объект является конфигуратором кодера модели классификации SVM (ClassificationSVM или CompactClassificationSVM).

Конфигуратор кодера предлагает удобные функции для настройки параметров генерации кода, генерации кода C/C + + и обновления параметров модели в сгенерированном коде.

  • Настройте параметры генерации кода и укажите атрибуты кодера параметров модели SVM с помощью свойств объекта.

  • Создание кода C/C + + для predict и update функции модели классификации SVM с использованием generateCode. Для создания кода C/C + + требуется Coder™ MATLAB ®.

  • Обновление параметров модели в сгенерированном коде C/C + + без необходимости регенерации кода. Эта функция уменьшает усилия, необходимые для регенерации, повторного развертывания и восстановления кода C/C + + при переподготовке модели SVM с новыми данными или настройками. Перед обновлением параметров модели используйтеvalidatedUpdateInputs для проверки и извлечения обновляемых параметров модели.

На этой блок-схеме показан рабочий процесс создания кода с использованием конфигуратора кодера.

Примечания по использованию генерации кода и ограничения модели классификации SVM см. в разделах Создание кода (Code Generation) CompactClassificationSVM, predict, и update.

Создание

После обучения модели классификации SVM с использованием fitcsvm, создайте конфигуратор кодера для модели с помощью learnerCoderConfigurer. Используйте свойства конфигуратора кодера, чтобы указать атрибуты кодера predict и update аргументы. Затем используйте generateCode для создания кода C/C + + на основе указанных атрибутов кодера.

Свойства

развернуть все

predict Аргументы

Свойства, перечисленные в этом разделе, определяют атрибуты кодера predict аргументы функции в сгенерированном коде.

Атрибуты кодера данных предиктора для передачи в сгенерированный код C/C + + для predict функция модели классификации SVM, указанная как LearnerCoderInput объект.

При создании конфигуратора кодера с помощью learnerCoderConfigurer функция, входной аргумент X определяет значения по умолчанию для LearnerCoderInput атрибуты кодера:

  • SizeVector - Значением по умолчанию является размер массива входных данных. X.

  • VariableDimensions - Это значение равно [0 0](по умолчанию) или [1 0].

    • [0 0] указывает, что размер массива фиксирован, как указано в SizeVector.

    • [1 0] указывает, что массив содержит строки переменного размера и столбцы фиксированного размера. В этом случае первое значение SizeVector - верхняя граница для количества строк и второе значение SizeVector - количество столбцов.

  • DataType - Это значение равно single или double. Тип данных по умолчанию зависит от типа входных данных X.

  • Tunability - Это значение должно быть true, означающее, что predict в сгенерированном коде C/C + + всегда содержит данные предиктора в качестве входных данных.

Можно изменить атрибуты кодера с помощью точечной нотации. Например, чтобы создать код C/C + +, который принимает данные предиктора с 100 наблюдениями трех переменных предиктора, укажите эти атрибуты кодера X для конфигуратора кодера configurer:

configurer.X.SizeVector = [100 3];
configurer.X.DataType = 'double';
configurer.X.VariableDimensions = [0 0];
[0 0] указывает, что первый и второй размеры X (количество наблюдений и количество переменных предиктора соответственно) имеют фиксированные размеры.

Чтобы позволить сгенерированному коду C/C + + принимать данные предиктора с до 100 наблюдениями, укажите эти атрибуты кодера X:

configurer.X.SizeVector = [100 3];
configurer.X.DataType = 'double';
configurer.X.VariableDimensions = [1 0];
[1 0] указывает, что первое измерение X (количество наблюдений) имеет переменный размер и второе измерение X (количество переменных предиктора) имеет фиксированный размер. Указанное количество наблюдений, 100 в этом примере, становится максимально допустимым количеством наблюдений в сгенерированном коде C/C + +. Чтобы разрешить любое количество наблюдений, укажите границу какInf.

Количество выходных аргументов, возвращаемых из сгенерированного кода C/C + + для predict функция модели классификации SVM, указанная как 1 или 2.

Выходные аргументы predict являются label (прогнозируемые метки класса) и score (оценки или задние вероятности) в порядке перечисления. predict в сгенерированном коде C/C + + возвращает первыйn выходных данных predict функция, где n является NumOutputs значение.

После создания конфигуратора кодера configurerможно указать количество выходов с помощью точечной нотации.

configurer.NumOutputs = 2;

NumOutputs свойство эквивалентно '-nargout' параметр компилятора codegen (Кодер MATLAB). Этот параметр определяет количество выходных аргументов в функции начального значения генерации кода. Функция объекта generateCode генерирует две функции точки входа -predict.m и update.m для predict и update функции модели классификации SVM, соответственно, и генерирует код C/C + + для двух функций точки входа. Указанное значение для NumOutputs свойство соответствует количеству выходных аргументов в функции точки входа predict.m.

Типы данных: double

update Аргументы

Свойства, перечисленные в этом разделе, определяют атрибуты кодера update аргументы функции в сгенерированном коде. update функция принимает обученную модель и новые параметры модели в качестве входных аргументов и возвращает обновленную версию модели, содержащую новые параметры. Чтобы включить обновление параметров в сгенерированном коде, перед созданием кода необходимо указать атрибуты кодера параметров. Использовать LearnerCoderInput для указания атрибутов кодера каждого параметра. Значения атрибутов по умолчанию основаны на параметрах модели во входном аргументе Mdl из learnerCoderConfigurer.

Атрибуты кодера обучаемых коэффициентов классификатора (Alpha модели классификации SVM), указанной как LearnerCoderInput объект.

Значения атрибутов по умолчанию для LearnerCoderInput объекты основаны на входном аргументе Mdl из learnerCoderConfigurer:

  • SizeVector - Значение по умолчанию: [s,1], где s - количество векторов поддержки в Mdl.

  • VariableDimensions - Это значение равно [0 0](по умолчанию) или [1 0].

    • [0 0] указывает, что размер массива фиксирован, как указано в SizeVector.

    • [1 0] указывает, что массив содержит строки переменного размера и столбцы фиксированного размера. В этом случае первое значение SizeVector - верхняя граница для количества строк и второе значение SizeVector - количество столбцов.

  • DataType - Это значение равно 'single' или 'double'. Тип данных по умолчанию согласуется с типом данных обучения, которые используются для обучения. Mdl.

  • Tunability - Если вы тренируете модель с линейной функцией ядра, и модель сохраняет коэффициенты линейного предиктора (Beta) без векторов поддержки и связанных значений, то это значение должно быть false. В противном случае это значение должно быть true.

Атрибуты кодера коэффициентов линейного предиктора (Beta модели классификации SVM), указанной как LearnerCoderInput объект.

Значения атрибутов по умолчанию для LearnerCoderInput объекты основаны на входном аргументе Mdl из learnerCoderConfigurer:

  • SizeVector - Это значение должно быть [p 1], где p - количество предикторов в Mdl.

  • VariableDimensions - Это значение должно быть [0 0], указывающее, что размер массива фиксирован, как указано в SizeVector.

  • DataType - Это значение равно 'single' или 'double'. Тип данных по умолчанию согласуется с типом данных обучения, которые используются для обучения. Mdl.

  • Tunability - Если вы тренируете модель с линейной функцией ядра, и модель сохраняет коэффициенты линейного предиктора (Beta) без векторов поддержки и связанных значений, то это значение должно быть true. В противном случае это значение должно быть false.

Атрибуты кодера термина смещения (Bias модели классификации SVM), указанной как LearnerCoderInput объект.

Значения атрибутов по умолчанию для LearnerCoderInput объекты основаны на входном аргументе Mdl из learnerCoderConfigurer:

  • SizeVector - Это значение должно быть [1 1].

  • VariableDimensions - Это значение должно быть [0 0], указывающее, что размер массива фиксирован, как указано в SizeVector.

  • DataType - Это значение равно 'single' или 'double'. Тип данных по умолчанию согласуется с типом данных обучения, которые используются для обучения. Mdl.

  • Tunability - Это значение должно быть true.

Атрибуты кодера стоимости неправильной классификации (Cost модели классификации SVM), указанной как LearnerCoderInput объект.

Значения атрибутов по умолчанию для LearnerCoderInput объекты основаны на входном аргументе Mdl из learnerCoderConfigurer:

  • SizeVector - Для двоичной классификации это значение должно быть [2 2]. Для одноклассной классификации это значение должно быть [1 1].

  • VariableDimensions - Это значение должно быть [0 0], указывающее, что размер массива фиксирован, как указано в SizeVector.

  • DataType - Это значение равно 'single' или 'double'. Тип данных по умолчанию согласуется с типом данных обучения, которые используются для обучения. Mdl.

  • Tunability - Для двоичной классификации значением по умолчанию является true. Для одноклассной классификации это значение должно быть false.

Атрибуты кодера средства предсказания (Mu модели классификации SVM), указанной как LearnerCoderInput объект.

Значения атрибутов по умолчанию для LearnerCoderInput объекты основаны на входном аргументе Mdl из learnerCoderConfigurer:

  • SizeVector - Если вы тренируетесь Mdl использование стандартизированных данных предиктора путем указания 'Standardize',true, это значение должно быть [1,p], где p - количество предикторов в Mdl. В противном случае это значение должно быть [0,0].

  • VariableDimensions - Это значение должно быть [0 0], указывающее, что размер массива фиксирован, как указано в SizeVector.

  • DataType - Это значение равно 'single' или 'double'. Тип данных по умолчанию согласуется с типом данных обучения, которые используются для обучения. Mdl.

  • Tunability - Если вы тренируетесь Mdl использование стандартизированных данных предиктора путем указания 'Standardize',true, значением по умолчанию является true. В противном случае это значение должно быть false.

Атрибуты кодера предшествующих вероятностей (Prior модели классификации SVM), указанной как LearnerCoderInput объект.

Значения атрибутов по умолчанию для LearnerCoderInput объекты основаны на входном аргументе Mdl из learnerCoderConfigurer:

  • SizeVector - Для двоичной классификации это значение должно быть [1 2]. Для одноклассной классификации это значение должно быть [1 1].

  • VariableDimensions - Это значение должно быть [0 0], указывающее, что размер массива фиксирован, как указано в SizeVector.

  • DataType - Это значение равно 'single' или 'double'. Тип данных по умолчанию согласуется с типом данных обучения, которые используются для обучения. Mdl.

  • Tunability - Для двоичной классификации значением по умолчанию является true. Для одноклассной классификации это значение должно быть false.

Атрибуты кодера параметра масштаба ядра (KernelParameters.Scale модели классификации SVM), указанной как LearnerCoderInput объект.

Значения атрибутов по умолчанию для LearnerCoderInput объекты основаны на входном аргументе Mdl из learnerCoderConfigurer:

  • SizeVector - Это значение должно быть [1 1].

  • VariableDimensions - Это значение должно быть [0 0], указывающее, что размер массива фиксирован, как указано в SizeVector.

  • DataType - Это значение равно 'single' или 'double'. Тип данных по умолчанию согласуется с типом данных обучения, которые используются для обучения. Mdl.

  • Tunability - Значение по умолчанию: true.

Атрибуты кодера стандартных отклонений предиктора (Sigma модели классификации SVM), указанной как LearnerCoderInput объект.

Значения атрибутов по умолчанию для LearnerCoderInput объекты основаны на входном аргументе Mdl из learnerCoderConfigurer:

  • SizeVector - Если вы тренируетесь Mdl использование стандартизированных данных предиктора путем указания 'Standardize',true, это значение должно быть [1,p], где p - количество предикторов в Mdl. В противном случае это значение должно быть [0,0].

  • VariableDimensions - Это значение должно быть [0 0], указывающее, что размер массива фиксирован, как указано в SizeVector.

  • DataType - Это значение равно 'single' или 'double'. Тип данных по умолчанию согласуется с типом данных обучения, которые используются для обучения. Mdl.

  • Tunability - Если вы тренируетесь Mdl использование стандартизированных данных предиктора путем указания 'Standardize',true, значением по умолчанию является true. В противном случае это значение должно быть false.

Атрибуты кодера меток класса вектора поддержки (SupportVectorLabels модели классификации SVM), указанной как LearnerCoderInput объект.

Значения атрибутов по умолчанию для LearnerCoderInput объекты основаны на входном аргументе Mdl из learnerCoderConfigurer:

  • SizeVector - Значение по умолчанию: [s,1], где s - количество векторов поддержки в Mdl.

  • VariableDimensions - Это значение равно [0 0](по умолчанию) или [1 0].

    • [0 0] указывает, что размер массива фиксирован, как указано в SizeVector.

    • [1 0] указывает, что массив содержит строки переменного размера и столбцы фиксированного размера. В этом случае первое значение SizeVector - верхняя граница для количества строк и второе значение SizeVector - количество столбцов.

  • DataType - Это значение равно 'single' или 'double'. Тип данных по умолчанию согласуется с типом данных обучения, которые используются для обучения. Mdl.

  • Tunability - Если вы тренируете модель с линейной функцией ядра, и модель сохраняет коэффициенты линейного предиктора (Beta) без векторов поддержки и связанных значений, то это значение должно быть false. В противном случае это значение должно быть true.

Атрибуты кодера векторов поддержки (SupportVectors модели классификации SVM), указанной как LearnerCoderInput объект.

Значения атрибутов по умолчанию для LearnerCoderInput объекты основаны на входном аргументе Mdl из learnerCoderConfigurer:

  • SizeVector - Значение по умолчанию: [s,p], где s - количество векторов поддержки, и p - количество предикторов в Mdl.

  • VariableDimensions - Это значение равно [0 0](по умолчанию) или [1 0].

    • [0 0] указывает, что размер массива фиксирован, как указано в SizeVector.

    • [1 0] указывает, что массив содержит строки переменного размера и столбцы фиксированного размера. В этом случае первое значение SizeVector - верхняя граница для количества строк и второе значение SizeVector - количество столбцов.

  • DataType - Это значение равно 'single' или 'double'. Тип данных по умолчанию согласуется с типом данных обучения, которые используются для обучения. Mdl.

  • Tunability - Если вы тренируете модель с линейной функцией ядра, и модель сохраняет коэффициенты линейного предиктора (Beta) без векторов поддержки и связанных значений, то это значение должно быть false. В противном случае это значение должно быть true.

Другие опции конфигуратора

Имя файла сгенерированного кода C/C + +, заданного как символьный вектор.

Функция объекта generateCode из ClassificationSVMCoderConfigurer создает код C/C + + с использованием этого имени файла.

Имя файла не должно содержать пробелов, поскольку они могут привести к сбоям при создании кода в определенных конфигурациях операционной системы. Кроме того, имя должно быть допустимым именем функции MATLAB.

После создания конфигуратора кодера configurer, можно указать имя файла с помощью точечной нотации.

configurer.OutputFileName = 'myModel';

Типы данных: char

Уровень детализации, указанный как true (логический 1) или false (логический 0). Уровень детализации управляет отображением уведомлений в командной строке.

СтоимостьОписание
true (логический 1)Программа отображает уведомления, когда изменения атрибутов кодера параметра приводят к изменениям других зависимых параметров.
false (логический 0)Программа не отображает уведомления.

Чтобы включить обновление параметров модели машинного обучения в сгенерированном коде, необходимо настроить атрибуты кодера параметров перед созданием кода. Атрибуты кодера параметров зависят друг от друга, поэтому программное обеспечение сохраняет зависимости как ограничения конфигурации. При изменении атрибутов кодера параметра с помощью конфигуратора кодера и необходимости последующих изменений других зависимых параметров в соответствии с ограничениями конфигурации программа изменяет атрибуты кодера зависимых параметров. Уровень детализации определяет, отображает ли программное обеспечение сообщения уведомления для этих последующих изменений.

После создания конфигуратора кодера configurer, можно изменить уровень детализации с помощью точечной нотации.

configurer.Verbose = false;

Типы данных: logical

Параметры настройки создания кода

Чтобы настроить рабочий процесс создания кода, используйте generateFiles функции и следующих трех свойств с codegen (Кодер MATLAB), вместо использования generateCode функция.

После генерации двух файлов функций начального уровня (predict.m и update.m) с помощью generateFiles можно изменить эти файлы в соответствии с рабочим процессом создания кода. Например, можно изменить predict.m для включения предварительной обработки данных или можно добавить эти функции точки входа в другой проект создания кода. Затем можно создать код C/C + + с помощью codegen (Кодер MATLAB) и codegen аргументы, подходящие для измененных функций точки входа или проекта создания кода. Используйте три свойства, описанные в этом разделе, в качестве начальной точки для установки codegen аргументы.

Это свойство доступно только для чтения.

codegen Аргументы (MATLAB Coder), указанные как массив ячеек.

Это свойство позволяет настроить рабочий процесс создания кода. Используйте generateCode если не требуется настраивать рабочий процесс.

Вместо использования generateCode с конфигуратором кодера configurer, код C/C + + можно создать следующим образом:

generateFiles(configurer)
cgArgs = configurer.CodeGenerationArguments;
codegen(cgArgs{:})
При настройке рабочего процесса создания кода измените cgArgs соответственно перед вызовом codegen.

При изменении других свойств configurer, программное обеспечение обновляет CodeGenerationArguments соответственно собственности.

Типы данных: cell

Это свойство доступно только для чтения.

Входной аргумент функции точки входа predict.m для генерации кода, заданного как массив ячеек coder.PrimitiveType (Кодер MATLAB). coder.PrimitiveType объект включает в себя атрибуты кодера данных предиктора, хранящихся в X собственность.

При изменении атрибутов кодера данных предиктора программное обеспечение обновляет coder.PrimitiveType соответственно возражают.

coder.PrimitiveType объект в PredictInputs эквивалентно configurer.CodeGenerationArguments{6} для конфигуратора кодера configurer.

Типы данных: cell

Это свойство доступно только для чтения.

Список настраиваемых входных аргументов функции точки входа update.m для генерации кода, определяемого как массив ячеек структуры, включающий coder.PrimitiveType (Кодер MATLAB) объекты. Каждый coder.PrimitiveType объект включает в себя атрибуты кодера настраиваемого параметра модели машинного обучения.

При изменении атрибутов кодера параметра модели с помощью свойств конфигуратора кодера (update Arguments properties), затем программное обеспечение обновляет соответствующий coder.PrimitiveType соответственно возражают. При указании Tunability атрибут параметра модели машинного обучения как false, то программное обеспечение удаляет соответствующий coder.PrimitiveType объект из UpdateInputs список.

Структура в UpdateInputs эквивалентно configurer.CodeGenerationArguments{3} для конфигуратора кодера configurer.

Типы данных: cell

Функции объекта

generateCodeСоздание кода C/C + + с помощью конфигуратора кодера
generateFilesСоздание файлов MATLAB для создания кода с помощью конфигуратора кодера
validatedUpdateInputsПроверка и извлечение параметров модели машинного обучения для обновления

Примеры

свернуть все

Обучение модели машинного обучения, а затем создание кода для predict и update функции модели с помощью конфигуратора кодера.

Загрузить ionosphere набор данных и обучение двоичной модели классификации SVM.

load ionosphere
Mdl = fitcsvm(X,Y);

Mdl является ClassificationSVM объект.

Создание конфигуратора кодера для ClassificationSVM модель с использованием learnerCoderConfigurer. Укажите данные предиктора X. learnerCoderConfigurer функция использует вход X для конфигурирования атрибутов кодера predict ввод функции.

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

configurer является ClassificationSVMCoderConfigurer объект, который является конфигуратором кодера ClassificationSVM объект.

Для создания кода C/C + + необходимо иметь доступ к компилятору C/C + +, который настроен правильно. MATLAB Coder находит и использует поддерживаемый установленный компилятор. Вы можете использоватьmex -setup для просмотра и изменения компилятора по умолчанию. Дополнительные сведения см. в разделе Изменение компилятора по умолчанию.

Создание кода для predict и update функции модели классификации SVM (Mdl) с настройками по умолчанию.

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

generateCode функция выполняет следующие действия:

  • Создание файлов MATLAB, необходимых для создания кода, включая две функции точки входа predict.m и update.m для predict и update функции Mdlсоответственно.

  • Создание функции MEX с именем ClassificationSVMModel для двух функций точки входа.

  • Создайте код для функции MEX в codegen\mex\ClassificationSVMModel папка.

  • Скопируйте функцию MEX в текущую папку.

Отображение содержимого predict.m, update.m, и initialize.m с помощью type функция.

type predict.m
function varargout = predict(X,varargin) %#codegen
% Autogenerated by MATLAB, 23-Apr-2021 12:39:31
[varargout{1:nargout}] = initialize('predict',X,varargin{:});
end
type update.m
function update(varargin) %#codegen
% Autogenerated by MATLAB, 23-Apr-2021 12:39:31
initialize('update',varargin{:});
end
type initialize.m
function [varargout] = initialize(command,varargin) %#codegen
% Autogenerated by MATLAB, 23-Apr-2021 12:39:31
coder.inline('always')
persistent model
if isempty(model)
    model = loadLearnerForCoder('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

Обучение модели SVM с использованием частичного набора данных и создание конфигуратора кодера для модели. Используйте свойства конфигуратора кодера для указания атрибутов кодера параметров модели SVM. Используйте функцию объекта конфигуратора кодера для генерации кода C, который предсказывает метки для новых данных предиктора. Затем переобучите модель, используя весь набор данных, и обновите параметры в сгенерированном коде без регенерации кода.

Модель поезда

Загрузить ionosphere набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный отклик для радарных возвращений, либо плохой ('b') или хорошо ('g'). Тренировка двоичной модели классификации SVM с использованием первых 50 наблюдений.

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

Mdl является ClassificationSVM объект.

Создать конфигуратор кодера

Создание конфигуратора кодера для ClassificationSVM модель с использованием learnerCoderConfigurer. Укажите данные предиктора X. learnerCoderConfigurer функция использует вход X для конфигурирования атрибутов кодера predict ввод функции. Кроме того, установите число выходов равным 2, чтобы сгенерированный код возвращал предсказанные метки и оценки.

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

configurer является ClassificationSVMCoderConfigurer объект, который является конфигуратором кодера ClassificationSVM объект.

Определение атрибутов кодера параметров

Укажите атрибуты кодера параметров модели классификации SVM, чтобы можно было обновить параметры в сгенерированном коде после переподготовки модели. В этом примере указываются атрибуты кодера данных предиктора, которые требуется передать сгенерированному коду, и атрибуты кодера векторов поддержки модели SVM.

Сначала укажите атрибуты кодера X чтобы сгенерированный код принял любое количество наблюдений. Изменение SizeVector и VariableDimensions атрибуты. SizeVector атрибут указывает верхнюю границу размера данных предиктора и VariableDimensions атрибут указывает, имеет ли каждое измерение данных предиктора переменный размер или фиксированный размер.

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

Размер первого измерения - это количество наблюдений. В этом случае код указывает, что верхняя граница размера равна Inf и размер является переменным, что означает, что X может иметь любое количество наблюдений. Эта спецификация удобна, если не известно количество наблюдений при создании кода.

Размер второго измерения - это количество переменных предиктора. Это значение должно быть фиксированным для модели машинного обучения. X содержит 34 предиктора, поэтому значение SizeVector атрибут должен быть 34, а значение VariableDimensions атрибут должен быть false.

При переподготовке модели SVM с использованием новых данных или различных настроек количество векторов поддержки может варьироваться. Поэтому укажите атрибуты кодера 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.

При изменении атрибутов кодера SupportVectors, то программное обеспечение изменяет атрибуты кодера Alpha и SupportVectorLabels для удовлетворения ограничений конфигурации. Если изменение атрибутов кодера одного параметра требует последующих изменений других зависимых параметров для удовлетворения ограничений конфигурации, то программное обеспечение изменяет атрибуты кодера зависимых параметров.

Создать код

Для создания кода C/C + + необходимо иметь доступ к компилятору C/C + +, который настроен правильно. MATLAB Coder находит и использует поддерживаемый установленный компилятор. Вы можете использоватьmex -setup для просмотра и изменения компилятора по умолчанию. Дополнительные сведения см. в разделе Изменение компилятора по умолчанию.

Использовать generateCode для создания кода для predict и update функции модели классификации SVM (Mdl) с настройками по умолчанию.

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

generateCode создает файлы MATLAB, необходимые для создания кода, включая две функции точки входа predict.m и update.m для predict и update функции Mdlсоответственно. Тогда generateCode создает функцию MEX с именем ClassificationSVMModel для двух функций начального уровня в codegen\mex\ClassificationSVMModel и копирует функцию MEX в текущую папку.

Проверить созданный код

Передайте некоторые данные предиктора, чтобы проверить, predict функция Mdl и predict функция в функции MEX возвращает те же самые метки. Чтобы вызвать функцию точки входа в функции MEX, которая имеет более одной точки входа, укажите имя функции в качестве первого входного аргумента.

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

Выдержать сравнение label и label_mex с помощью isequal.

isequal(label,label_mex)
ans = logical
   1

isequal возвращает логический 1 (true), если все входы равны. Сравнение подтверждает, что predict функция Mdl и predict функция в функции MEX возвращает те же самые метки.

score_mex может включать разницы округления по сравнению с score. В этом случае сравните score_mex и score, допуская небольшой допуск.

find(abs(score-score_mex) > 1e-8)
ans =

  0x1 empty double column vector

Сравнение подтверждает, что score и score_mex равны в пределах допуска 1e–8.

Переподготовка модели и обновление параметров в сгенерированном коде

Переподготовка модели с использованием всего набора данных.

retrainedMdl = fitcsvm(X,Y);

Извлечение параметров для обновления с помощью validatedUpdateInputs. Эта функция обнаруживает измененные параметры модели в retrainedMdl и проверяет, удовлетворяют ли измененные значения параметров атрибутам кодера параметров.

params = validatedUpdateInputs(configurer,retrainedMdl);

Обновите параметры в созданном коде.

ClassificationSVMModel('update',params)

Проверить созданный код

Сравните выходные данные predict функция retrainedMdl и predict в обновленной функции MEX.

[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

Сравнение подтверждает, что labels и labels_mex равны, а значения баллов равны в пределах допуска.

Подробнее

развернуть все

Представлен в R2018b