После того, как вы создаете классификационные модели в интерактивном режиме в Classification Learner, можно экспортировать лучшую модель в рабочую область. Затем можно использовать обученную модель, чтобы делать предсказания с помощью новых данных.
Примечание
Итоговая модель экспортов Classification Learner всегда обучается с использованием полного набора данных. Схема валидации, которую вы используете, влияет только на то, как приложение вычисляет метрики валидации. Можно использовать метрики валидации и различные графики, которые визуализируют результаты, чтобы выбрать лучшую модель для вашей задачи классификации.
Вот шаги для экспорта модели в MATLAB® рабочая область:
В Classification Learner выберите модель, которую вы хотите экспортировать, на панели Models.
На вкладке Classification Learner, в разделе Export, щелкните один из опций экспорта:
Если вы хотите включить данные, используемые для настройки модели, выберите Export Model.
Вы экспортируете обученную модель в рабочую область как структуру, содержащую объект классификации, такой как ClassificationTree
, ClassificationDiscriminant
, ClassificationSVM
, ClassificationNaiveBayes
, ClassificationKNN
, ClassificationEnsemble
, ClassificationNeuralNetwork
и так далее.
Если вы не хотите включать обучающие данные, выберите Export Compact Model. Эта опция экспортирует модель с ненужными данными, удаленными по возможности. Для некоторых классификаторов это компактный объект классификации, который не включает обучающие данные (для примера CompactClassificationTree
). Можно использовать компактный объект классификации для предсказаний новых данных, но можно использовать с ним меньше других методов.
В диалоговом окне Экспорт модели отредактируйте имя экспортированной переменной, если хотите, и нажмите OK. Имя по умолчанию для экспортированной модели, trainedModel
, увеличивает каждый раз, когда вы экспортируете, чтобы избежать перезаписи классификаторов (для примера, trainedModel1
).
Новая переменная (для примера, trainedModel
) появляется в рабочей рабочей области.
Приложение отображает информацию об экспортированной модели в командном окне. Прочитайте сообщение, чтобы узнать, как делать предсказания с новыми данными.
После того, как вы экспортируете модель в рабочую область из Classification Learner или запускаете код, сгенерированный из приложения, вы получаете trainedModel
структуру, которую можно использовать, чтобы делать предсказания с помощью новых данных. Структура содержит объект классификации и функцию для предсказания. Структура позволяет вам делать предсказания для моделей, которые включают анализ основных компонентов (PCA).
Чтобы использовать экспортированный классификатор для предсказаний новых данных, T
, используйте форму:
yfit = C.predictFcn(T)
C
- имя вашей переменной (для примера, trainedModel
).Предоставьте данные T
с тем же форматом и типом данных, что и обучающие данные, используемые в приложении (таблица или матрица).
Если вы предоставляете таблицу, убедитесь, что она содержит те же имена предикторов, что и ваши обучающие данные. predictFcn
функция игнорирует дополнительные переменные в таблицах. Форматы и типы переменных должны совпадать с исходными обучающими данными.
Если вы поставляете матрицу, она должна содержать те же столбцы или строки предиктора, что и ваши обучающие данные, в том же порядке и формате. Не включать переменную отклика, любые переменные, которые вы не импортировали в приложение, или другие неиспользуемые переменные.
Область выхода yfit
содержит предсказание класса для каждой точки данных.
Исследуйте поля экспортированной структуры. Для помощи в создании предсказаний введите:
C.HowToPredict
Можно также извлечь объект классификации из экспортированной структуры для последующего анализа (для примера trainedModel.ClassificationSVM
, trainedModel.ClassificationTree
, и так далее, в зависимости от типа вашей модели). Следует иметь в виду, что если вы использовали преобразование функций, такое как PCA в приложении, вам нужно будет учесть это преобразование, используя информацию в полях PCA структуры.
После того, как вы создаете классификационные модели в интерактивном режиме в Classification Learner, можно сгенерировать код MATLAB для вашей лучшей модели. Затем можно использовать код для обучения модели с новыми данными.
Сгенерируйте код MATLAB для:
Обучайте на огромных наборах данных. Исследуйте модели в приложении, обученном на подмножестве ваших данных, затем сгенерируйте код, чтобы обучить выбранную модель на большем наборе данных
Создайте скрипты для моделей обучения, не нуждаясь в синтаксисе различных функций
Исследуйте код, чтобы узнать, как обучить классификаторы программно
Измените код для последующего анализа, например, чтобы задать опции, которые вы не можете изменить в приложении
Повторите анализ на различных данных и автоматизируйте обучение
В Classification Learner, на панели Models, выберите модель, для которой необходимо сгенерировать код.
На вкладке Classification Learner, в разделе Export, нажмите Generate Function.
Приложение генерирует код из вашего сеанса и отображает файл в РЕДАКТОРА MATLAB. Файл включает предикторы и ответ, методы обучения классификаторов и методы валидации. Сохраните файл.
Чтобы переобучить модель классификатора, вызовите функцию из командной строки с исходными данными или новыми данными в качестве входного параметра или аргументов. Новые данные должны иметь ту же форму, что и исходные данные.
Скопируйте первую линию сгенерированного кода, исключая слово function
, и отредактируйте trainingData
входной параметр, отражающий имя переменной обучающих данных или новых данных. Точно так же отредактируйте responseData
входной параметр (если применимо).
Например, чтобы переобучить классификатор, обученный с fishertable
набор данных, введите:
[trainedModel,validationAccuracy] = trainClassifier(fishertable)
Сгенерированный код возвращает trainedModel
структура, содержащая те же поля, что и структура, созданная при экспорте классификатора из Classification Learner в рабочую область.
Если вы хотите автоматизировать обучение того же классификатора с новыми данными или узнать, как программно обучить классификаторы, исследуйте сгенерированный код. Код показывает, как:
Обработайте данные в нужную форму
Обучите классификатор и задайте все опции классификатора
Выполните перекрестную валидацию
Вычислите точность валидации
Вычислите предсказания и счета валидации
Примечание
Если вы генерируете код MATLAB из обученной оптимизируемой модели, сгенерированный код не включает процесс оптимизации.
Если вы обучаете одну из моделей в этой таблице с помощью Classification Learner, можно сгенерировать код С для предсказания.
Тип модели | Базовый объект модели |
---|---|
Дерево решений | ClassificationTree или CompactClassificationTree |
Дискриминантный анализ | ClassificationDiscriminant или CompactClassificationDiscriminant |
Наивный Байес | ClassificationNaiveBayes или CompactClassificationNaiveBayes |
Машина опорных векторов | ClassificationSVM (двоичный), CompactClassificationSVM (двоичный), ClassificationECOC (многоклассовый), или CompactClassificationECOC (многоклассовый) |
Ближайший Соседний | ClassificationKNN |
Ансамбль | ClassificationEnsemble , CompactClassificationEnsemble , или ClassificationBaggedEnsemble |
Примечание
Можно сгенерировать код С для предсказания с помощью логистической регрессионой модели. Однако, потому что базовая модель логистической регрессии является GeneralizedLinearModel
или CompactGeneralizedLinearModel
объект, этот процесс требует, чтобы вы добавили дополнительные строки кода в функции точки входа предсказания, чтобы преобразовать числовые предсказания в предсказания классов. Для получения примера смотрите Генерацию кода для Моделей логистической регрессии, обученных в Classification Learner.
Генерация кода C требует:
Лицензия MATLAB Coder™
Соответствующая модель (двоичная или многоклассовая)
Например, обучите модель SVM в Classification Learner, а затем экспортируйте модель в рабочую область.
Найдите базовый объект модели классификации в экспортированной структуре. Исследуйте поля структуры, чтобы найти объект модели, например C.ClassificationSVM
, где C
- имя вашей структуры.
Базовый объект модели зависит от того, какой тип SVM вы обучили (двоичный или многоклассовый) и экспортировали ли вы компактную модель. Объект модели может быть ClassificationSVM
, CompactClassificationSVM
, ClassificationECOC
, или CompactClassificationECOC
.
Используйте функцию saveLearnerForCoder
для подготовки модели к генерации кода: saveLearnerForCoder(Mdl,filename)
. Для примера:
saveLearnerForCoder(C.ClassificationSVM,'mySVM')
Создайте функцию, которая загружает сохраненную модель и делает предсказания на новых данных. Для примера:
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
Сгенерируйте MEX-функцию из своей функции. Для примера:
codegen classifyX.m -args {data}
%#codegen
директива компиляции указывает, что код MATLAB предназначен для генерации кода. Чтобы убедиться, что MEX-функция может использовать тот же вход, задайте данные в рабочей области как аргументы к функции, используя -args
опция. Задайте data
как матрица, содержащая только столбцы предиктора, используемые для обучения модели.Используйте MEX-функцию, чтобы делать предсказания. Для примера:
labels = classifyX_mex(data);
Если вы использовали выбор признаков или преобразование функций PCA в приложении, то вам нужно сделать дополнительные шаги. Если вы использовали ручной выбор признаков, укажите те же столбцы в X
. The X
аргумент является входом в вашу функцию.
Если вы использовали PCA в приложении, используйте информацию в полях PCA экспортированной структуры, чтобы учесть это преобразование. Неважно, импортировали ли вы таблицу или матрицу в приложение, пока X
содержит матричные столбцы в том же порядке. Перед генерацией кода выполните следующие шаги:
Сохраните поля PCACenters и PCACoefficients обученной структуры классификатора, C
, для файла с помощью следующей команды:
save('pcaInfo.mat','-struct','C','PCACenters','PCACoefficients');
В файл функции включите дополнительные линии для выполнения преобразования 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
Для получения более подробного примера смотрите Генерацию кода и Classification Learner App. Для получения дополнительной информации о рабочем процессе генерации кода C и ограничениях смотрите Генерацию кода.
После экспорта модели в рабочую область из Classification Learner можно развернуть ее с помощью MATLAB Compiler™.
Предположим, что вы экспортируете обученную модель в Рабочее пространство MATLAB на основе инструкций в Экспорте модели в Рабочую область с именем trainedModel
. Чтобы развернуть предсказания, выполните следующие шаги.
Сохраните trainedModel
структура в .mat файле.
save mymodel trainedModel
Запишите код, который будет скомпилирован. Этот код должен загрузить обученную модель и использовать ее, чтобы сделать предсказание. Она также должна иметь прагму, поэтому компилятор распознает, что в скомпилированном приложении нужен Toolbox™ код Statistics and Machine Learning. Эта прагма может быть любой функцией в тулбоксе.
function ypred = mypredict(tbl) %#function fitctree load('mymodel.mat'); ypred = trainedModel.predictFcn(tbl); end
Компилируйте как автономное приложение.
mcc -m mypredict.m
ClassificationBaggedEnsemble
| ClassificationDiscriminant
| ClassificationECOC
| ClassificationEnsemble
| ClassificationKNN
| ClassificationNaiveBayes
| ClassificationNeuralNetwork
| ClassificationSVM
| ClassificationTree
| CompactClassificationDiscriminant
| CompactClassificationECOC
| CompactClassificationEnsemble
| CompactClassificationNaiveBayes
| CompactClassificationNeuralNetwork
| CompactClassificationSVM
| CompactClassificationTree
| GeneralizedLinearModel