ClassificationTreeCoderConfigurer

Кодер configurer модели дерева выбора из двух альтернатив для классификации мультиклассов

Описание

ClassificationTreeCoderConfigurer объект является кодером configurer модели дерева выбора из двух альтернатив для классификации мультиклассов (ClassificationTree или CompactClassificationTree).

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

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

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

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

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

Two code generation workflows: the first after training a model, and the second after retraining the same model. First workflow, Step 1: Create a coder configurer. Step 2: Generate code. Step 3: Verify the generated code. Second workflow, Step 1: Check if the update is valid. If yes, go to Step 2; if no, go to the first step of the first workflow. Step 2: Update the model parameters in the generated code.

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

Создание

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

Свойства

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

predict Аргументы

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

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

Когда вы создаете кодер configurer при помощи 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:

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 функция модели дерева классификации в виде 1, 2, 3, или 4.

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

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

configurer.NumOutputs = 2;

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

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

update Аргументы

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

Атрибуты кодера дочерних узлов для каждого узла в дереве (Children из модели дерева классификации) в виде LearnerCoderInput объект.

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

  • SizeVector — Значением по умолчанию является [nd 2], где nd количество узлов в Mdl.

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

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

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

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

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

Если вы изменяете первую размерность SizeVector быть newnd, затем программное обеспечение изменяет первую размерность SizeVector припишите, чтобы быть newnd для свойств ClassProbability, CutPoint, и CutPredictorIndex. Точно так же, если вы изменяете первую размерность VariableDimensions быть 1, затем программное обеспечение изменяет первую размерность VariableDimensions припишите, чтобы быть 1 для этих свойств.

Атрибуты кодера вероятностей класса для каждого узла в дереве (ClassProbability из модели дерева классификации) в виде LearnerCoderInput объект.

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

  • SizeVector — Значением по умолчанию является [nd c], где nd количество узлов в Mdl и c количество классов.

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

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

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

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

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

Если вы изменяете первую размерность SizeVector быть newnd, затем программное обеспечение изменяет первую размерность SizeVector припишите, чтобы быть newnd для свойств Children, CutPoint, и CutPredictorIndex. Точно так же, если вы изменяете первую размерность VariableDimensions быть 1, затем программное обеспечение изменяет первую размерность VariableDimensions припишите, чтобы быть 1 для этих свойств.

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

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

  • SizeVector — Этим значением должен быть [c c], где c количество классов.

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

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

  • Tunability — Значением по умолчанию является true.

Атрибуты кодера точки разделения для каждого узла в дереве (CutPoint из модели дерева классификации) в виде LearnerCoderInput объект.

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

  • SizeVector — Значением по умолчанию является [nd 1], где nd количество узлов в Mdl.

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

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

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

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

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

Если вы изменяете первую размерность SizeVector быть newnd, затем программное обеспечение изменяет первую размерность SizeVector припишите, чтобы быть newnd для свойств Children, ClassProbability, и CutPredictorIndex. Точно так же, если вы изменяете первую размерность VariableDimensions быть 1, затем программное обеспечение изменяет первую размерность VariableDimensions припишите, чтобы быть 1 для этих свойств.

Атрибуты кодера предиктора сокращения индексируют для каждого узла в дереве (CutPredictorIndex из модели дерева классификации) в виде LearnerCoderInput объект.

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

  • SizeVector — Значением по умолчанию является [nd 1], где nd количество узлов в Mdl.

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

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

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

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

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

Если вы изменяете первую размерность SizeVector быть newnd, затем программное обеспечение изменяет первую размерность SizeVector припишите, чтобы быть newnd для свойств Children, ClassProbability, и CutPoint. Точно так же, если вы изменяете первую размерность VariableDimensions быть 1, затем программное обеспечение изменяет первую размерность VariableDimensions припишите, чтобы быть 1 для этих свойств.

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

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

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

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

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

  • Tunability — Значением по умолчанию является true.

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

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

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

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

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

configurer.OutputFileName = 'myModel';

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

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

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

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

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

configurer.Verbose = false;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вы изменяете атрибуты кодера параметра модели при помощи кодера configurer свойства (update Свойства аргументов), затем обновления программного обеспечения соответствующий 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.

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

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

Mdl ClassificationTree объект.

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

configurer = learnerCoderConfigurer(Mdl,X)
configurer = 
  ClassificationTreeCoderConfigurer with properties:

   Update Inputs:
             Children: [1x1 LearnerCoderInput]
     ClassProbability: [1x1 LearnerCoderInput]
             CutPoint: [1x1 LearnerCoderInput]
    CutPredictorIndex: [1x1 LearnerCoderInput]
                Prior: [1x1 LearnerCoderInput]
                 Cost: [1x1 LearnerCoderInput]

   Predict Inputs:
                    X: [1x1 LearnerCoderInput]

   Code Generation Parameters:
           NumOutputs: 1
       OutputFileName: 'ClassificationTreeModel'


  Properties, Methods

configurer ClassificationTreeCoderConfigurer объект, который является кодером configurer ClassificationTree объект.

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

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

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

generateCode функция завершает эти действия:

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

  • Создайте MEX-функцию под названием ClassificationTreeModel для двух функций точки входа.

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

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

Отобразите содержимое predict.m, update.m, и initialize.m файлы при помощи type функция.

type predict.m
function varargout = predict(X,varargin) %#codegen
% Autogenerated by MATLAB, 25-Aug-2021 22:30:20
[varargout{1:nargout}] = initialize('predict',X,varargin{:});
end
type update.m
function update(varargin) %#codegen
% Autogenerated by MATLAB, 25-Aug-2021 22:30:20
initialize('update',varargin{:});
end
type initialize.m
function [varargout] = initialize(command,varargin) %#codegen
% Autogenerated by MATLAB, 25-Aug-2021 22:30:20
coder.inline('always')
persistent model
if isempty(model)
    model = loadLearnerForCoder('ClassificationTreeModel.mat');
end
switch(command)
    case 'update'
        % Update struct fields: Children
        %                       ClassProbability
        %                       CutPoint
        %                       CutPredictorIndex
        %                       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

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

Обучите модель

Загрузите fisheriris набор данных, который содержит цветочные данные. Этот набор данных имеет четыре предиктора: длина чашелистика, ширина чашелистика, лепестковая длина и лепестковая ширина цветов. Переменная отклика содержит цветочные имена разновидностей: setosa, versicolor, и virginica. Обучите модель дерева классификации с помощью половины наблюдений.

load fisheriris
X = meas;
Y = species;

rng('default') % For reproducibility
n = length(Y);
c = cvpartition(Y,'HoldOut',0.5);
idxTrain = training(c,1);
XTrain = X(idxTrain,:);
YTrain = Y(idxTrain);

Mdl = fitctree(XTrain,YTrain);

Mdl ClassificationTree объект.

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

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

configurer = learnerCoderConfigurer(Mdl,XTrain,'NumOutputs',4);

configurer ClassificationTreeCoderConfigurer объект, который является кодером configurer ClassificationTree объект.

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

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

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

configurer.X.SizeVector = [Inf 4];
configurer.X.VariableDimensions
ans = 1x2 logical array

   1   0

Размер первой размерности является количеством наблюдений. Устанавливание значения SizeVector припишите Inf заставляет программное обеспечение изменять значение VariableDimensions припишите 1. Другими словами, верхней границей размера является Inf и размер является переменным, означая, что данные о предикторе могут иметь любое количество наблюдений. Эта спецификация удобна, если вы не знаете количество наблюдений при генерации кода.

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

Если вы переобучаете древовидную модель с помощью новых данных или различных настроек, количество узлов в дереве может варьироваться. Поэтому задайте первую размерность SizeVector атрибут одного из этих свойств так, чтобы можно было обновить количество узлов в сгенерированном коде: Children, ClassProbability, CutPoint, или CutPredictorIndex. Программное обеспечение затем изменяет другие свойства автоматически.

Например, установите первое значение SizeVector атрибут CutPoint свойство к Inf. Программное обеспечение изменяет SizeVector и VariableDimensions атрибуты Children, ClassProbability, и CutPredictorIndex совпадать с новой верхней границей на количестве узлов в дереве. Кроме того, первое значение VariableDimensions атрибут CutPoint изменения в 1.

configurer.CutPoint.SizeVector = [Inf 1];
SizeVector attribute for Children has been modified to satisfy configuration constraints.
SizeVector attribute for CutPredictorIndex has been modified to satisfy configuration constraints.
VariableDimensions attribute for Children has been modified to satisfy configuration constraints.
VariableDimensions attribute for CutPredictorIndex has been modified to satisfy configuration constraints.
SizeVector attribute for ClassProbability has been modified to satisfy configuration constraints.
VariableDimensions attribute for ClassProbability has been modified to satisfy configuration constraints.
configurer.CutPoint.VariableDimensions
ans = 1x2 logical array

   1   0

Сгенерируйте код

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

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

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

The generateCode функция завершает эти действия:

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

  • Создайте MEX-функцию под названием ClassificationTreeModel для двух функций точки входа.

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

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

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

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

[label,score,node,cnum] = predict(Mdl,XTrain);
[label_mex,score_mex,node_mex,cnum_mex] = ClassificationTreeModel('predict',XTrain);

Сравните label и label_mex при помощи isequal. Точно так же сравните node к node_mex и cnum к cnum_mex.

isequal(label,label_mex)
ans = logical
   1

isequal(node,node_mex)
ans = logical
   1

isequal(cnum,cnum_mex)
ans = logical
   1

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

Сравните score и score_mex.

max(abs(score-score_mex),[],'all')
ans = 0

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

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

Переобучите модель с помощью целого набора данных.

retrainedMdl = fitctree(X,Y);

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

params = validatedUpdateInputs(configurer,retrainedMdl);

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

ClassificationTreeModel('update',params)

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

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

[label,score,node,cnum] = predict(retrainedMdl,X);
[label_mex,score_mex,node_mex,cnum_mex] = ClassificationTreeModel('predict',X);

isequal(label,label_mex)
ans = logical
   1

isequal(node,node_mex)
ans = logical
   1

isequal(cnum,cnum_mex)
ans = logical
   1

max(abs(score-score_mex),[],'all')
ans = 0

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

Больше о

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

Введенный в R2019b