В этом примере показано, как обучить модель в Classification Learner и экспортировать его для развертывания на MATLAB® Production Server™. Этот рабочий процесс требует MATLAB Compiler SDK™.
В Командном окне загрузите patients
набор данных, и составляет таблицу от подмножества переменных в наборе данных. Каждая строка в patientTbl
соответствует пациенту, и каждый столбец соответствует диагностической переменной.
load patients patientTbl = table(Age,Diastolic,Gender,Height, ... SelfAssessedHealthStatus,Systolic,Weight,Smoker);
Преобразуйте SelfAssessedHealthStatus
переменная к порядковому категориальному предиктору.
patientTbl.SelfAssessedHealthStatus = categorical(patientTbl.SelfAssessedHealthStatus, ... ["Poor","Fair","Good","Excellent"],"Ordinal",true);
Из Командного окна откройте приложение Classification Learner. Заполните диалоговое окно New Session from Arguments с данными о предикторе в patientTbl
и переменная отклика Smoker
.
classificationLearner(patientTbl,"Smoker")
Чтобы принять выборы в диалоговом окне New Session from Arguments и продолжиться, нажмите Start Session.
Обучите все предварительно установленные модели. На вкладке Classification Learner, в разделе Model Type, кликают по стреле, чтобы открыть галерею. В группе Get Started нажмите All. В разделе Training нажмите Train. Приложение обучает все предварительно установленные модели и отображает модели в панели Models.
Совет
Если у вас есть Parallel Computing Toolbox™, можно обучить все модели (All) одновременно путем нажатия кнопки Use Parallel в разделе Training перед нажатием Train. После того, как вы нажимаете Train, диалоговое окно Opening Parallel Pool открывается и остается открытым, в то время как приложение открывает параллельный пул рабочих. В это время вы не можете взаимодействовать с программным обеспечением. После того, как пул открывается, приложение обучает все модели одновременно.
Отображения приложения матрица беспорядка для первой модели. Синие значения указывают на правильные классификации, и красные значения указывают на неправильные классификации. Панель Models слева показывает точность валидации для каждой модели.
Сортировка моделей на основе точности валидации. В панели Models откройте список Sort by и выберите Accuracy (Validation)
. Приложение обрисовывает в общих чертах метрику для модели (или моделей) с самой высокой точностью валидации.
Выберите модель в панели Models с самой высокой точностью валидации.
Экспортируйте выбранную модель для развертывания на MATLAB Production Server. На вкладке Classification Learner, в разделе Export, нажимают Export Model и выбирают Export Model for Deployment.
В диалоговом окне Select Project File for Model Deployment выберите местоположение и имя для вашего файла проекта. В данном примере используйте название проекта по умолчанию ClassificationLearnerDeployedModel.prj
. Нажмите Save.
Программное обеспечение открывает приложение Production Server Compiler и автоматически сгенерированный predictFunction.m
файл.
Во вкладке Compiler приложения Production Server Compiler раздел Exported Functions включает файлы modelInformation.m
и predictFunction.m
. Раздел Additional files required for your archive to run включает файлы processInputData.m
и TrainedClassificationModel.mat
.
Обновите код в файлах processInputData.m
и predictFunction.m
включать шаги предварительной обработки, выполняемые, прежде чем вы импортировали данные в Classification Learner. Откройте processInputData.m
файл от ClassificationLearnerDeployedModel_resources
папка и изменение код, чтобы включать преобразование SelfAssessedHealthStatus
переменная к порядковому категориальному предиктору.
function processedData = processInputData(T) T.SelfAssessedHealthStatus = categorical(T.SelfAssessedHealthStatus, ... ["Poor","Fair","Good","Excellent"],"Ordinal",true); processedData = T; end
В predictFunction.m
файл, не комментируют следующие строки кода так, чтобы predictFunction
вызовы функции processInputData
функция.
processedData = processInputData(T); T = processedData;
Отредактируйте predictFunction.m
код так, чтобы функция возвратила два выходных параметра, labels
и scores
, вместо одного выхода result
. Обновите функциональную подпись в первой строке кода.
function [labels,scores] = predictFunction(varargin)
result = model.predictFcn(T);
строка кода, чтобы включать эти два выходных аргумента.[labels,scores] = model.predictFcn(T);
Также обновите прокомментированное описание predictFunction
функция, чтобы включать описания новых выходных аргументов. labels
содержит предсказанные метки, возвращенные обученной моделью и scores
содержит предсказанные оценки, возвращенные обученной моделью.
Закройте файлы predictFunction.m
и processInputData.m
.
Прежде, чем группировать ваш код для развертывания на MATLAB Production Server, можно симулировать развертывание модели с помощью клиента MATLAB. Завершение этого процесса требует открытия другого экземпляра MATLAB. Для примера, который показывает, как использовать демонстрационный Java® клиент для отправки данных к функции MATLAB, развернутой на сервере, смотрите, Оценивают Развернутые Модели Машинного обучения Используя Клиент Java (MATLAB Production Server).
В приложении Production Server Compiler нажмите кнопку Test Client в разделе Test по вкладке Compiler.
На вкладке Test, в разделе Server Actions, нажимают кнопку Start. Отметьте адрес, перечисленный в панели Server Address, которая в этом примере является http://localhost:9910/DeployedClassificationModel
.
Откройте новый экземпляр MATLAB.
В новом экземпляре MATLAB автоматически открывается приложение Production Server Compiler. Закройте этот экземпляр приложения.
В Командном окне нового экземпляра MATLAB загрузите данные об ответе и предиктор. Убедитесь, что данные имеют тот же формат как обучающие данные, используемые в Classification Learner.
load patients patientTbl = table(Age,Diastolic,Gender,Height, ... SelfAssessedHealthStatus,Systolic,Weight,Smoker); patientTbl.SelfAssessedHealthStatus = categorical(patientTbl.SelfAssessedHealthStatus, ... ["Poor","Fair","Good","Excellent"],"Ordinal",true);
Подготовьте данные, чтобы отправить его в MATLAB Production Server.
Необходимо преобразовать категориальные переменные и таблицы к массивам ячеек и структурам, соответственно, прежде, чем отправить их в MATLAB Production Server. Поскольку SelfAssessedHealthStatus
категориальная переменная и patientTbl
таблица, обработайте входные данные далее прежде, чем отправить ее.
inputTbl = patientTbl; columnNames = patientTbl.Properties.VariableNames; for i=1:length(columnNames) if iscategorical(patientTbl.(columnNames{i})) inputTbl.(columnNames{i}) = cellstr(patientTbl.(columnNames{i})); end end inputData = table2struct(inputTbl);
Отправьте входные данные в MATLAB Production Server. Используйте адрес сервера, отображенный в приложении Production Server Compiler.
jsonData = mps.json.encoderequest({inputData},"Nargout",2); URL = "http://localhost:9910/DeployedClassificationModel/predictFunction"; options = weboptions("MediaType","application/json","Timeout",30); response = webwrite(URL,jsonData,options);
В исходном экземпляре MATLAB, в открытом приложении Production Server Compiler, панель MATLAB Execution Requests под вкладкой Test показывает успешный запрос между сервером и клиентом MATLAB.
В Командном окне нового экземпляра MATLAB извлеките предсказанные метки и баллы от response
переменная. Проверяйте, что ожидаемые значения правильны.
labels = response.lhs{1}; scores = response.lhs{2};
В исходном экземпляре MATLAB, в приложении Production Server Compiler, нажимают Stop в разделе Server Actions по вкладке Test. В разделе Close нажмите Close Test.
Используйте приложение Production Server Compiler, чтобы группировать вашу функцию модели и предсказания. На вкладке Compiler, в разделе Package, нажимают кнопку Package.
В диалоговом окне Package проверьте, что опция Open output folder when process completes выбрана.
После концов процесса развертывания исследуйте сгенерированный выход.
for_redistribution
— Папка, содержащая DeployedClassificationModel.ctf
файл
for_testing
— Папка, содержащая сырые данные, сгенерировала файлы, требуемые создать инсталлятор
PackagingLog.html
— Файл журнала сгенерирован MATLAB Compiler SDK