Экспортируйте модель классификации, чтобы предсказать новые данные

Экспортируйте модель в рабочую область, чтобы сделать предсказания для новых данных

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

Примечание

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

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

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

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

    • Если вы хотите включать данные, используемые для обучения модель, то нажмите Export Model и выберите Export Model.

      Вы экспортируете обученную модель в рабочую область как структура, содержащая объект классификации, такой как ClassificationTree, ClassificationDiscriminant, ClassificationSVM, ClassificationNaiveBayes, ClassificationKNN, ClassificationKernel, ClassificationEnsemble, ClassificationNeuralNetwork, и так далее.

    • Если вы не хотите включать обучающие данные, то нажмите Export Model и выберите Export Compact Model. Эта опция экспортирует модель с ненужными данными, удаленными, если это возможно. Для некоторых классификаторов это - компактный объект классификации, который не включает обучающие данные (например, CompactClassificationTree). Можно использовать компактный объект классификации для того, чтобы сделать предсказания новых данных, но можно использовать меньше других методов с ними.

  3. В диалоговом окне Export Model отредактируйте имя для своей экспортируемой переменной, если вы хотите, и затем нажимаете OK. Имя по умолчанию для вашей экспортируемой модели, trainedModel, постепенно увеличивается каждый раз, когда вы экспортируете, чтобы не перезаписывать ваши классификаторы (например, trainedModel1).

    Новая переменная (например, trainedModel) появляется в вашей рабочей области.

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

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

После того, как вы экспортируете модель в рабочую область от Classification Learner или запустите код, сгенерированный из приложения, вы получаете trainedModel структура, которую можно использовать, чтобы сделать предсказания с помощью новых данных. Структура содержит объект классификации и функцию для предсказания. Структура позволяет вам делать предсказания для моделей, которые включают анализ главных компонентов (PCA).

  1. Использовать экспортируемый классификатор, чтобы сделать предсказания для новых данных, T, используйте форму:

    yfit = C.predictFcn(T)
    где C имя вашей переменной (например, trainedModel).

    Снабдите данными T с тем же форматом и типом данных как обучающие данные, используемые в приложении (таблица или матрица).

    • Если вы предоставляете таблицу, гарантируете, что она содержит те же имена предиктора как ваши обучающие данные. predictFcn функция игнорирует дополнительные переменные в таблицах. Переменные форматы и типы должны совпадать с исходными обучающими данными.

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

    Выход yfit содержит предсказание класса для каждой точки данных.

  2. Исследуйте поля экспортируемой структуры. Для предсказаний создания справки, введите:

    C.HowToPredict

Можно также извлечь объект классификации из экспортируемой структуры для последующего анализа (например, trainedModel.ClassificationSVM, trainedModel.ClassificationTree, и так далее, в зависимости от вашего типа модели). Следует иметь в виду, что, если вы использовали преобразование функции, такое как PCA в приложении, необходимо будет принять во внимание это преобразование при помощи информации в полях PCA структуры.

Сгенерируйте код MATLAB, чтобы обучить модель с новыми данными

После того, как вы создадите модели классификации в интерактивном режиме в Classification Learner, можно сгенерировать код MATLAB для лучшей модели. Можно затем использовать код, чтобы обучить модель с новыми данными.

Сгенерируйте код MATLAB к:

  • Обучайтесь на огромных наборах данных. Исследуйте модели в приложении, обученном на подмножестве ваших данных, затем сгенерируйте код, чтобы обучить выбранную модель на большем наборе данных

  • Создайте скрипты для учебных моделей, не будучи должен изучить синтаксис различных функций

  • Исследуйте код, чтобы изучить, как обучить классификаторы программно

  • Измените код для последующего анализа, например, чтобы установить опции, которые вы не можете изменить в приложении

  • Повторите свой анализ различных данных и автоматизируйте обучение

  1. В Classification Learner, в панели Models, выбирают модель, для которой вы хотите сгенерировать код.

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

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

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

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

    Например, чтобы переобучить классификатор, обученный с fishertable набор данных, введите:

    [trainedModel,validationAccuracy] = trainClassifier(fishertable)

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

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

    • Обработайте данные в правильную форму

    • Обучите классификатор и задайте все опции классификатора

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

    • Вычислите точность валидации

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

    Примечание

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

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

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

Тип моделиЛежание в основе объекта модели
Дерево решенийClassificationTree или CompactClassificationTree
Дискриминантный анализClassificationDiscriminant или CompactClassificationDiscriminant
Наивный БайесClassificationNaiveBayes или CompactClassificationNaiveBayes
Машина опорных векторовClassificationSVM (двоичный файл), CompactClassificationSVM (двоичный файл), ClassificationECOC (мультикласс) или CompactClassificationECOC (мультикласс)
NearestNeighborClassificationKNN
АнсамбльClassificationEnsemble, CompactClassificationEnsemble, или ClassificationBaggedEnsemble

Примечание

Можно сгенерировать код С для предсказания с помощью модели логистической регрессии. Однако, потому что базовой моделью для логистической регрессии является GeneralizedLinearModel или CompactGeneralizedLinearModel объект, этот процесс требует, чтобы вы добавили дополнительные строки кода в функции точки входа предсказания, чтобы преобразовать числовые предсказания, чтобы классифицировать предсказания. Для примера смотрите Генерацию кода для модели логистической регрессии, Обученной в Classification Learner.

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

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

  • Соответствующая модель (двоичный файл или мультикласс)

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

    Найдите базовый объект модели классификации в экспортируемой структуре. Исследуйте поля структуры, чтобы найти объект модели, например, C.ClassificationSVM, где C имя вашей структуры.

    Базовый объект модели зависит от того, какой SVM вы обучили (двоичный файл или мультикласс) и экспортировали ли вы компактную модель. Объектом модели может быть ClassificationSVM, CompactClassificationSVM, ClassificationECOC, или CompactClassificationECOC.

  2. Используйте функцию saveLearnerForCoder подготовить модель к генерации кода: saveLearnerForCoder(Mdl,filename). Например:

    saveLearnerForCoder(C.ClassificationSVM,'mySVM')

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

    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
  4. Сгенерируйте MEX-функцию от своей функции. Например:

    codegen classifyX.m -args {data}
    %#codegen директива компиляции указывает, что код MATLAB предназначается для генерации кода. Чтобы гарантировать, что MEX-функция может использовать тот же вход, задайте данные в рабочей области в качестве аргументов к функции с помощью -args опция. Задайте data когда матрица, содержащая только столбцы предиктора раньше, обучала модель.

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

    labels = classifyX_mex(data);

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

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

  1. Сохраните поля PCACenters и PCACoefficients обученной структуры классификатора, C, к файлу используя следующую команду:

    save('pcaInfo.mat','-struct','C','PCACenters','PCACoefficients'); 

  2. В вашем файле функции включайте дополнительные линии, чтобы выполнить преобразование 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 и Генерация кода. Для получения дополнительной информации о рабочем процессе генерации кода C и ограничениях, смотрите Генерацию кода.

Разверните предсказания Используя MATLAB Compiler

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

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

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

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

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

    mcc -m mypredict.m
    

Модель экспорта для развертывания на MATLAB Production Server

После того, как вы обучаете модель в Classification Learner, можно экспортировать модель для развертывания на MATLAB Production Server™ (требует MATLAB Compiler SDK™).

  • Выберите обученную модель в панели Models. На вкладке Classification Learner, в разделе Export, нажимают Export Model и выбирают Export Model for Deployment.

  • В диалоговом окне Select Project File for Model Deployment выберите местоположение и имя для вашего файла проекта.

  • В автоматически сгенерированном predictFunction.m файл, смотрите и исправьте код по мере необходимости.

  • Используйте приложение Production Server Compiler, чтобы группировать вашу функцию модели и предсказания. Можно симулировать развертывание модели на MATLAB Production Server путем нажатия кнопки Test Client в разделе Test вкладки Compiler, и затем группировать код путем нажатия кнопки Package в разделе Package.

Для примера смотрите, Развертывают Модель, Обученную в Classification Learner к MATLAB Production Server. Для получения дополнительной информации смотрите, Создают Развертываемый Архив для MATLAB Production Server (MATLAB Production Server).

Смотрите также

Функции

Классы

Похожие темы