Экспорт классификационной модели для предсказания новых данных

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

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

Примечание

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

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

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

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

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

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

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

  3. В диалоговом окне Экспорт модели отредактируйте имя экспортированной переменной, если хотите, и нажмите 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 из обученной оптимизируемой модели, сгенерированный код не включает процесс оптимизации.

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

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

Тип моделиБазовый объект модели
Дерево решенийClassificationTree или CompactClassificationTree
Дискриминантный анализClassificationDiscriminant или CompactClassificationDiscriminant
Наивный БайесClassificationNaiveBayes или CompactClassificationNaiveBayes
Машина опорных векторовClassificationSVM (двоичный), CompactClassificationSVM (двоичный), ClassificationECOC (многоклассовый), или CompactClassificationECOC (многоклассовый)
Ближайший СоседнийClassificationKNN
Ансамбль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}
    The %#codegen директива компиляции указывает, что код MATLAB предназначен для генерации кода. Чтобы убедиться, что MEX-функция может использовать тот же вход, задайте данные в рабочей области как аргументы к функции, используя -args опция. Задайте data как матрица, содержащая только столбцы предиктора, используемые для обучения модели.

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

    labels = classifyX_mex(data);

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

Развертывание предсказаний с помощью MATLAB Compiler

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

См. также

Функции

Классы

Похожие темы