В этом примере показано, как обучить модель в 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