exponenta event banner

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

Экспорт модели в рабочую область

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

Примечание

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

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

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

  2. На вкладке «Регрессионный обучающийся» в разделе «Экспорт» выберите один из параметров экспорта:

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

      Обучаемая модель экспортируется в рабочую область как структура, содержащая объект регрессионной модели.

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

  3. В диалоговом окне Экспорт модели (Export Model) проверьте имя экспортируемой переменной и при необходимости отредактируйте ее. Затем нажмите кнопку OK. Имя экспортируемой модели по умолчанию. trainedModel, увеличивается при каждом экспорте, чтобы избежать перезаписи моделей (например, trainedModel1).

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

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

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

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

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

    yfit = trainedModel.predictFcn(T)
    где trainedModel - имя экспортируемой переменной.

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

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

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

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

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

    trainedModel.HowToPredict

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

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

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

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

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

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

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

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

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

Чтобы создать код и использовать его для обучения модели с новыми данными:

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

  2. На вкладке Обучающийся регрессии в разделе Экспорт щелкните Создать функцию.

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

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

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

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

    [trainedModel,validationRMSE] = trainRegressionModel(cartable)

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

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

  • Обработайте данные в нужную форму.

  • Выполните тренировку модели и задайте все опции модели.

  • Выполните перекрестную проверку.

  • Вычислить статистику.

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

Примечание

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

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

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

Тип моделиБазовый объект модели
Линейная регрессияLinearModel или CompactLinearModel
Дерево решенийRegressionTree или CompactRegressionTree
Поддерживающая векторная машинаRegressionSVM или CompactRegressionSVM
Регрессия гауссова процессаRegressionGP или CompactRegressionGP
АнсамбльRegressionEnsemble, CompactRegressionEnsemble, или RegressionBaggedEnsemble

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

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

  • Соответствующая модель

  1. Например, обучите модель дерева в модуле «Обучающийся регрессии», а затем экспортируйте модель в рабочую область.

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

    Базовый объект модели зависит от экспорта компактной модели. Объект модели может быть RegressionTree или CompactRegressionTree объект.

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

    saveLearnerForCoder(S.RegressionTree,'myTree')

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

    function yfit = predictY (X) %#codegen
    %PREDICTY Predict responses using tree model
    %  PREDICTY uses the measurements in X 
    %  and the tree model in the file myTree.mat, and then 
    %  returns predicted responses in yfit.
    
    CompactMdl = loadLearnerForCoder('myTree'); 
    yfit = predict(CompactMdl,X);
    end
  4. Создайте функцию MEX из своей функции. Например:

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

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

    yfit = predictY_mex(data);

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

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

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

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

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

    function yfit = predictY (X) %#codegen
    %PREDICTY Predict responses using tree model
    %  PREDICTY uses the measurements in X 
    %  and the tree model in the file myTree.mat, 
    %  and then returns predicted responses in yfit.
    % If you used manual feature selection in the app, ensure that X
    % contains only the columns you included in the model.
    
    CompactMdl = loadLearnerForCoder('myTree'); 
    pcaInfo = coder.load('pcaInfo.mat','PCACenters','PCACoefficients');
    PCACenters = pcaInfo.PCACenters;
    PCACoefficients = pcaInfo.PCACoefficients;
    
    % Performs PCA transformation 
    pcaTransformedX = bsxfun(@minus,X,PCACenters)*PCACoefficients;
    
    yfit = predict(CompactMdl,pcaTransformedX);
    end

Дополнительные сведения о рабочем процессе и ограничениях создания кода C см. в разделе Создание кода. Примеры см. в разделе saveLearnerForCoder и loadLearnerForCoder.

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

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

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

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

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

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

    mcc -m mypredict.m
    

См. также

Функции

Классы

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