exponenta event banner

Экспорт классификационной модели для прогнозирования новых данных

Экспорт модели в рабочую область для создания прогнозов для новых данных

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

Примечание

Окончательный экспорт модели Classification Learner всегда проходит обучение с использованием полного набора данных. Используемая схема проверки влияет только на то, как приложение вычисляет метрики проверки. Можно использовать метрики проверки и различные графики, которые визуализируют результаты, чтобы выбрать оптимальную модель для задачи классификации.

Ниже приведены шаги экспорта модели в рабочую область MATLAB ®.

  1. В окне «Классификатор» выберите модель, которую требуется экспортировать, на панели «Модели».

  2. На вкладке «Классификатор» в разделе «Экспорт» выберите один из параметров экспорта:

    • Если требуется включить данные, используемые для обучения модели, выберите Экспортировать модель (Export Model).

      Обучаемая модель экспортируется в рабочую область в виде структуры, содержащей объект классификации, такой как ClassificationTree, ClassificationDiscriminant, ClassificationSVM, ClassificationNaiveBayes, ClassificationKNN, ClassificationEnsemble, ClassificationNeuralNetworkи так далее.

    • Если не требуется включать данные обучения, выберите Экспортировать компактную модель (Export Compact Model). Этот параметр экспортирует модель с удалением ненужных данных, где это возможно. Для некоторых классификаторов это компактный объект классификации, который не включает данные обучения (например, CompactClassificationTree). Для прогнозирования новых данных можно использовать компактный объект классификации, но с ним можно использовать меньше других методов.

  3. В диалоговом окне «Экспорт модели» отредактируйте имя экспортируемой переменной и нажмите кнопку «ОК». Имя экспортируемой модели по умолчанию. trainedModel, увеличивается при каждом экспорте, чтобы избежать перезаписи классификаторов (например, trainedModel1).

    Новая переменная (например, trainedModel) появляется в рабочей области.

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

Составление прогнозов для новых данных

После экспорта модели в рабочую область из Classification Learner или запуска кода, созданного из приложения, вы получаете trainedModel структура, которую можно использовать для прогнозирования с использованием новых данных. Структура содержит объект классификации и функцию для прогнозирования. Структура позволяет делать прогнозы для моделей, включающих анализ основных компонентов (PCA).

  1. Чтобы использовать экспортированный классификатор для прогнозирования новых данных, T, используйте форму:

    yfit = C.predictFcn(T)
    где C - имя переменной (например, trainedModel).

    Предоставление данных T с тем же форматом и типом данных, что и обучающие данные, используемые в приложении (таблица или матрица).

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

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

    Продукция yfit содержит прогнозирование класса для каждой точки данных.

  2. Проверьте поля экспортированной структуры. Для получения справки по составлению прогнозов введите:

    C.HowToPredict

Можно также извлечь объект классификации из экспортированной структуры для дальнейшего анализа (например, trainedModel.ClassificationSVM, trainedModel.ClassificationTreeи т.д., в зависимости от типа модели). Помните, что при использовании в приложении преобразования функций, например PCA, необходимо учитывать это преобразование, используя информацию в полях PCA структуры.

Создание кода MATLAB для обучения модели новым данным

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

Создать код MATLAB для:

  • Тренируйтесь на огромных наборах данных. Изучите модели в приложении, обученном на подмножестве ваших данных, а затем создайте код, чтобы обучить выбранную модель большему набору данных

  • Создание сценариев для обучающих моделей без необходимости изучения синтаксиса различных функций

  • Изучите код, чтобы научиться программному обучению классификаторов

  • Измените код для дальнейшего анализа, например, чтобы задать параметры, которые нельзя изменить в приложении

  • Повторите анализ различных данных и автоматизируйте обучение

  1. В окне «Классификатор» на панели «Модели» выберите модель, для которой требуется создать код.

  2. На вкладке «Классификатор» в разделе «Экспорт» выберите «Создать функцию».

    Приложение генерирует код из сеанса и отображает файл в редакторе MATLAB. Файл включает предикторы и ответ, методы обучения классификатора и методы проверки. Сохраните файл.

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

    Копировать первую строку созданного кода, исключая слово functionи отредактируйте trainingData входной аргумент, отражающий имя переменной данных обучения или новых данных. Аналогично, отредактируйте responseData входной аргумент (если применимо).

    Например, для переподготовки классификатора, обученного fishertable набор данных, введите:

    [trainedModel,validationAccuracy] = trainClassifier(fishertable)

    Созданный код возвращает trainedModel структура, содержащая те же поля, что и структура, создаваемая при экспорте классификатора из Classification Learner в рабочую область.

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

    • Обработка данных в правильную форму

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

    • Выполнение перекрестной проверки

    • Точность вычисления при проверке

    • Вычислить прогнозы и оценки проверки

    Примечание

    При создании кода MATLAB из обученной оптимизируемой модели созданный код не включает процесс оптимизации.

Создать код C для прогнозирования

При обучении одной из моделей в этой таблице с помощью Classification Learner можно создать код C для прогнозирования.

Тип моделиБазовый объект модели
Дерево решенийClassificationTree или CompactClassificationTree
Дискриминантный анализClassificationDiscriminant или CompactClassificationDiscriminant
Наивный БайесClassificationNaiveBayes или CompactClassificationNaiveBayes
Поддерживающая векторная машинаClassificationSVM (двоичный), CompactClassificationSVM (двоичный), ClassificationECOC (мультикласс), или CompactClassificationECOC (мультикласс)
Ближайший соседClassificationKNN
АнсамбльClassificationEnsemble, CompactClassificationEnsemble, или ClassificationBaggedEnsemble

Примечание

Можно создать код C для прогнозирования с помощью модели логистической регрессии. Однако, поскольку базовой моделью для логистической регрессии является GeneralizedLinearModel или CompactGeneralizedLinearModel этот процесс требует добавления дополнительных строк кода в функцию точки входа предсказания для преобразования числовых предсказаний в предсказания классов. Пример см. в разделе Создание кода для модели логистической регрессии, обученной ученику классификации.

Генерация кода C требует:

  • Лицензия MATLAB Coder™

  • Соответствующая модель (двоичная или многоклассовая)

  1. Например, обучите модель SVM в Classification Learner, а затем экспортируйте модель в рабочую область.

    Найдите базовый объект классификационной модели в экспортированной структуре. Проверьте поля структуры, чтобы найти объект модели, например: C.ClassificationSVM, где C - имя структуры.

    Базовый объект модели зависит от типа обучаемой SVM (двоичный или мультиклассный) и от экспорта компактной модели. Объект модели может быть ClassificationSVM, CompactClassificationSVM, ClassificationECOC, или CompactClassificationECOC.

  2. Используйте функцию saveLearnerForCoder для подготовки модели к формированию кода: saveLearnerForCoder(Mdl,filename). Например:

    saveLearnerForCoder(C.ClassificationSVM,'mySVM')

  3. Создайте функцию, которая загружает сохраненную модель и делает прогнозы для новых данных. Например:

    function label = classifyX (X) %#codegen 
    %CLASSIFYX Classify using SVM Model 
    %  CLASSIFYX classifies the measurements in X 
    %  using the SVM model in the file mySVM.mat, and then 
    %  returns class labels in label.
    
    CompactMdl = loadLearnerForCoder('mySVM'); 
    label = predict(CompactMdl,X);
    end
  4. Создайте функцию MEX из своей функции. Например:

    codegen classifyX.m -args {data}
    %#codegen директива компиляции указывает, что код MATLAB предназначен для генерации кода. Чтобы убедиться, что функция MEX может использовать один и тот же ввод, укажите данные в рабочей области в качестве аргументов функции с помощью -args вариант. Определить data как матрица, содержащая только столбцы предиктора, используемые для обучения модели.

  5. Используйте функцию MEX для прогнозирования. Например:

    labels = classifyX_mex(data);

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

Если вы использовали PCA в приложении, используйте информацию в полях PCA экспортируемой структуры, чтобы учесть это преобразование. Не имеет значения, импортировали ли вы таблицу или матрицу в приложение, пока X содержит столбцы матрицы в том же порядке. Перед созданием кода выполните следующие действия.

  1. Сохраните поля PCACints и PCACoefficients обученной структуры классификатора, C, для создания файла с помощью следующей команды:

    save('pcaInfo.mat','-struct','C','PCACenters','PCACoefficients'); 

  2. В файл функции добавьте дополнительные строки для выполнения преобразования PCA. Создайте функцию, которая загружает сохраненную модель, выполняет PCA и делает прогнозы для новых данных. Например:

    function label = classifyX (X) %#codegen 
    %CLASSIFYX Classify using SVM Model 
    %  CLASSIFYX classifies the measurements in X 
    %  using the SVM model in the file mySVM.mat,  
    %  and then returns class labels in label.
    % If you used manual feature selection in the app, ensure that X
    % contains only the columns you included in the model.
    
    CompactMdl = loadLearnerForCoder('mySVM'); 
    pcaInfo = coder.load('pcaInfo.mat','PCACenters','PCACoefficients');
    PCACenters = pcaInfo.PCACenters;
    PCACoefficients = pcaInfo.PCACoefficients;
    
    % Performs PCA transformation 
    pcaTransformedX = bsxfun(@minus,X,PCACenters)*PCACoefficients;
    
    [label,scores] = predict(CompactMdl,pcaTransformedX);
    end

Более подробный пример см. в разделе Создание кода и приложение для учащихся по классификации. Дополнительные сведения о рабочем процессе создания кода C и ограничениях см. в разделе Создание кода.

Развертывание прогнозов с помощью компилятора MATLAB

После экспорта модели в рабочую область из Classification Learner ее можно развернуть с помощью Compiler™ MATLAB.

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

  • Сохранить trainedModel структура в файле .mat.

    save mymodel trainedModel
  • Напишите код для компиляции. Этот код должен загрузить обученную модель и использовать ее для прогнозирования. Он также должен иметь прагматику, поэтому компилятор распознает, что в скомпилированном приложении необходим код Toolbox™ статистики и машинного обучения. Эта прагматика может быть любой функцией панели инструментов.

    function ypred = mypredict(tbl)
    %#function fitctree
    load('mymodel.mat');
    ypred = trainedModel.predictFcn(tbl);
    end
  • Скомпилировать как автономное приложение.

    mcc -m mypredict.m
    

См. также

Функции

Классы

Связанные темы