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

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

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

Примечание

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

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

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

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

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

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

    • Если вы не хотите включать обучающие данные, выберите 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, в Списке предыстории, выбирают модель, для которой вы хотите сгенерировать код.

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

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

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

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

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

    [trainedModel, validationAccuracy] = trainClassifier(fishertable)

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

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

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

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

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

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

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

    Примечание

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

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

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

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

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

  • Модель SVM (двоичный файл или мультикласс)

  • Никакие категориальные предикторы или ответ в вашем наборе данных

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

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

    Имя модели зависит от того, какой 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 в приложении, то вам нужны дополнительные шаги. Если вы использовали ручной выбор признаков, предоставьте те же столбцы в XX вход к вашей функции.

Если вы использовали 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 = load('pcaInfo.mat', 'PCACenters', 'PCACoefficients'); 
    % performs pca transformation 
    pcaTransformedX = bsxfun(@minus, X, pcaInfo.PCACenters) * pcaInfo.PCACoefficients;
    [label, scores] = predict(CompactMdl, pcaTransformedX);
    end

Для получения дополнительной информации о рабочем процессе генерации кода C и ограничениях, смотрите Генерацию кода. Для примеров смотрите saveLearnerForCoder и loadLearnerForCoder.

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

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

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

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

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

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

    mcc -m mypredict.m
    

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

Функции

Классы

Похожие темы