После того, как вы создаете регрессионные модели в интерактивном режиме в приложении Regression Learner, можно экспортировать вашу лучшую модель в рабочую область. Затем можно использовать эту обученную модель, чтобы делать предсказания с помощью новых данных.
Примечание
Итоговая модель экспортов Regression Learner всегда обучается с использованием полного набора данных. Схема валидации, которую вы используете, влияет только на то, как приложение вычисляет метрики валидации. Можно использовать метрики валидации и различные графики, которые визуализируют результаты, чтобы выбрать лучшую модель для вашей задачи регрессии.
Вот шаги для экспорта модели в MATLAB® рабочая область:
В приложении выберите модель, которую вы хотите экспортировать, на панели Models.
На вкладке Regression Learner, в разделе Export, щелкните один из опций экспорта:
Чтобы включить данные, используемые для настройки модели, выберите Export Model.
Вы экспортируете обученную модель в рабочую область как структуру, содержащую объект регрессионой модели.
Чтобы исключить обучающие данные, выберите Export Compact Model. Эта опция экспортирует модель с ненужными данными, удаленными по возможности. Для некоторых моделей это компактный объект, который не включает обучающие данные, но вы все еще можете использовать его для создания предсказаний на новых данных.
В диалоговом окне Экспорт модели (Export Model) проверьте имя экспортированной переменной и отредактируйте ее, если хотите. Затем нажмите OK. Имя по умолчанию для экспортированной модели, trainedModel
, увеличивает каждый раз, когда вы экспортируете, чтобы избежать перезаписи моделей (для примера, trainedModel1
).
Новая переменная (для примера, trainedModel
) появляется в рабочей рабочей области.
Приложение отображает информацию об экспортированной модели в командном окне. Прочитайте сообщение, чтобы узнать, как делать предсказания с новыми данными.
После того, как вы экспортируете модель в рабочую область из Regression Learner или запускаете код, сгенерированный из приложения, вы получаете trainedModel
структуру, которую можно использовать, чтобы делать предсказания с помощью новых данных. Структура содержит объект модели и функцию для предсказания. Структура позволяет вам делать предсказания для моделей, которые включают анализ основных компонентов (PCA).
Используйте экспортированную модель, чтобы делать предсказания для новых данных, T
:
yfit = trainedModel.predictFcn(T)
trainedModel
- имя экспортированной переменной.Предоставьте данные T
с тем же форматом и типом данных, что и обучающие данные, используемые в приложении (таблица или матрица).
Если вы предоставляете таблицу, убедитесь, что она содержит те же имена предикторов, что и ваши обучающие данные. predictFcn
игнорирует дополнительные переменные в таблицах. Форматы и типы переменных должны совпадать с исходными обучающими данными.
Если вы поставляете матрицу, она должна содержать те же столбцы или строки предиктора, что и ваши обучающие данные, в том же порядке и формате. Не включать переменную отклика, любые переменные, которые вы не импортировали в приложение, или другие неиспользуемые переменные.
Область выхода yfit
содержит предсказание для каждой точки данных.
Исследуйте поля экспортированной структуры. Для помощи в создании предсказаний введите:
trainedModel.HowToPredict
Можно также извлечь объект модели из экспортированной структуры для последующего анализа. Если вы используете преобразование функций, такое как PCA в приложении, необходимо учесть это преобразование с помощью информации в полях PCA структуры.
После того, как вы создаете регрессионные модели в интерактивном режиме в приложении Regression Learner, можно сгенерировать код MATLAB для вашей лучшей модели. Затем можно использовать код, чтобы обучить модель с новыми данными.
Сгенерируйте код MATLAB для:
Обучайте на огромных наборах данных. Исследуйте модели в приложении, обученном на подмножестве ваших данных, и затем сгенерируйте код, чтобы обучить выбранную модель на большем наборе данных.
Создайте скрипты для моделей обучения, не нуждаясь в изучении синтаксиса различных функций.
Исследуйте код, чтобы узнать, как обучить модели программно.
Измените код для последующего анализа, например, чтобы задать опции, которые вы не можете изменить в приложении.
Повторите анализ на различных данных и автоматизируйте обучение.
Чтобы сгенерировать код и использовать его для обучения модели с новыми данными:
В приложении на панели Models выберите модель, для которой вы хотите сгенерировать код.
На вкладке Regression Learner, в разделе Export, нажмите Generate Function.
Приложение генерирует код из вашего сеанса и отображает файл в РЕДАКТОРА MATLAB. Файл включает предикторы и ответ, методы обучения моделей и методы валидации. Сохраните файл.
Чтобы переобучить модель, вызовите функцию из командной строки с исходными данными или новыми данными в качестве входного параметра или аргументов. Новые данные должны иметь ту же форму, что и исходные данные.
Скопируйте первую линию сгенерированного кода, исключая слово 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™
Соответствующая модель
Например, обучите древовидную модель в Regression Learner, а затем экспортируйте модель в рабочую область.
Найдите базовый объект регрессионной модели в экспортированной структуре. Исследуйте поля структуры, чтобы найти объект модели, например S.RegressionTree
, где S
- имя вашей структуры.
Базовый объект модели зависит от того, экспортировали ли вы компактную модель. Объектом модели может быть RegressionTree
или CompactRegressionTree
объект.
Используйте функцию saveLearnerForCoder
для подготовки модели к генерации кода: saveLearnerForCoder(Mdl,filename)
. Для примера:
saveLearnerForCoder(S.RegressionTree,'myTree')
Создайте функцию, которая загружает сохраненную модель и делает предсказания на новых данных. Для примера:
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
Сгенерируйте MEX-функцию из своей функции. Для примера:
codegen predictY.m -args {data}
%#codegen
директива компиляции указывает, что код MATLAB предназначен для генерации кода. Чтобы убедиться, что MEX-функция может использовать тот же вход, задайте данные в рабочей области как аргументы к функции, используя -args
опция. Задайте data
как матрица, содержащая только столбцы предиктора, используемые для обучения модели.Используйте MEX-функцию, чтобы делать предсказания. Для примера:
yfit = predictY_mex(data);
Если вы использовали выбор признаков или преобразование функций PCA в приложении, то вам нужно сделать дополнительные шаги. Если вы использовали ручной выбор признаков, укажите те же столбцы в X
. The X
аргумент является входом в вашу функцию.
Если вы использовали PCA в приложении, используйте информацию в полях PCA экспортированной структуры, чтобы учесть это преобразование. Неважно, импортировали ли вы таблицу или матрицу в приложение, пока X
содержит матричные столбцы в том же порядке. Перед генерацией кода выполните следующие шаги:
Сохраните поля PCACenters и PCACoefficients обученной регрессионной структуры, S
, для файла с помощью следующей команды:
save('pcaInfo.mat','-struct','S','PCACenters','PCACoefficients');
В файл функции включите дополнительные линии для выполнения преобразования 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
.
После экспорта модели в рабочую область из 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
fitlm
| fitrensemble
| fitrgp
| fitrnet
| fitrsvm
| fitrtree
| stepwiselm
CompactLinearModel
| CompactRegressionEnsemble
| CompactRegressionGP
| CompactRegressionNeuralNetwork
| CompactRegressionSVM
| CompactRegressionTree
| LinearModel
| RegressionEnsemble
| RegressionGP
| RegressionNeuralNetwork
| RegressionSVM
| RegressionTree