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

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

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

Примечание

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

Вот шаги для экспорта модели в MATLAB® рабочая область:

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

  2. На вкладке Regression Learner, в разделе Export, щелкните один из опций экспорта:

    • Чтобы включить данные, используемые для настройки модели, выберите 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. В приложении на панели Models выберите модель, для которой вы хотите сгенерировать код.

  2. На вкладке Regression Learner, в разделе Export, нажмите Generate Function.

    Приложение генерирует код из вашего сеанса и отображает файл в РЕДАКТОРА MATLAB. Файл включает предикторы и ответ, методы обучения моделей и методы валидации. Сохраните файл.

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

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

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

    [trainedModel,validationRMSE] = trainRegressionModel(cartable)

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

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

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

  • Обучите модель и задайте все опции модели.

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

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

  • Вычислите предсказания и счета валидации.

Примечание

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

Сгенерируйте код С для предсказания

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

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

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

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

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

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

    Найдите базовый объект регрессионной модели в экспортированной структуре. Исследуйте поля структуры, чтобы найти объект модели, например 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}
    The %#codegen директива компиляции указывает, что код MATLAB предназначен для генерации кода. Чтобы убедиться, что MEX-функция может использовать тот же вход, задайте данные в рабочей области как аргументы к функции, используя -args опция. Задайте data как матрица, содержащая только столбцы предиктора, используемые для обучения модели.

  5. Используйте MEX-функцию, чтобы делать предсказания. Для примера:

    yfit = predictY_mex(data);

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

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

  1. Сохраните поля PCACenters и 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 и ограничениях смотрите Code Generation. Для примеров см. saveLearnerForCoder и loadLearnerForCoder.

Развертывание предсказаний с помощью MATLAB Compiler

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

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

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

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

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

    mcc -m mypredict.m
    

См. также

Функции

Классы

Похожие темы