ClassificationSVMCoderConfigurer

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

Описание

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

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

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

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

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

Эта блок-схема показывает рабочий процесс генерации кода с помощью кодера configurer.

Для указаний и ограничений по применению генерации кода модели классификации SVM смотрите разделы Генерации кода CompactClassificationSVM, predict и update.

Создание

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

Свойства

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

Аргументы predict

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

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

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

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

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

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

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

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

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

Можно изменить атрибуты кодера при помощи записи через точку. Например, если вы хотите сгенерировать код C/C++, который принимает данные о предикторе с 100 наблюдениями за тремя переменными прогноза, задайте атрибуты кодера X кодера configurer 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, можно задать количество выходных параметров при помощи записи через точку.

configurer.NumOutputs = 2;

Свойство NumOutputs эквивалентно параметру компилятора '-nargout' codegen. Эта опция задает количество выходных аргументов в функции точки входа генерации кода. Объектный функциональный 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 является количеством столбцов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Тип данных Этим значением является 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.

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

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

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

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

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

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

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

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

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

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

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

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

  • Тип данных Этим значением является 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.

  • Тип данных Этим значением является 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 является количеством столбцов.

  • Тип данных Этим значением является 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 является количеством столбцов.

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

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

Другие опции Configurer

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

Объектный функциональный generateCode ClassificationSVMCoderConfigurer генерирует код C/C++ с помощью этого имени файла.

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

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

configurer.OutputFileName = 'myModel';

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

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

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

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

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

configurer.Verbose = false;

Типы данных: логический

Опции для индивидуальной настройки генерации кода

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

load ionosphere
Mdl = fitcsvm(X,Y);

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

Создайте кодер configurer для модели 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, который является кодером configurer объекта ClassificationSVM.

Чтобы сгенерировать код C/C++, у вас должен быть доступ к компилятору C/C++, который сконфигурирован правильно. MATLAB Coder определяет местоположение и использует поддерживаемый, установленный компилятор. Можно использовать mex -setup, чтобы просмотреть и изменить компилятор по умолчанию. Для получения дополнительной информации см. Компилятор Значения по умолчанию Изменения (MATLAB).

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

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

Функция 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,  22-Feb-2019 03:10:43
[varargout{1:nargout}] = initialize('predict',X,varargin{:});
end
type update.m
function update(varargin) %#codegen
% Autogenerated by MATLAB,  22-Feb-2019 03:10:43
initialize('update',varargin{:});
end
type initialize.m
function [varargout] = initialize(command,varargin) %#codegen
% Autogenerated by MATLAB, 22-Feb-2019 03:10:43
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

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

Модель train

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

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

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

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

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

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

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

Задайте атрибуты кодера параметров

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

Во-первых, задайте атрибуты кодера X так, чтобы сгенерированный код принял любое количество наблюдений. Измените атрибуты VariableDimensions и SizeVector. Атрибут 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, чтобы просмотреть и изменить компилятор по умолчанию. Для получения дополнительной информации см. Компилятор Значения по умолчанию Изменения (MATLAB).

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

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

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 возвращает логическую единицу (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