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

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

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

Примечание

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

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

  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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Скопируйте первую строку сгенерированного кода, исключая слово function и отредактируйте входной параметр trainingData к имени переменной ваших данных тренировки или новых данных. Например, чтобы переобучить классификатор, обученный с набором данных fisheriris, введите:

    [trainedModel, validationAccuracy] = trainClassifier(fisheriris)
    Сгенерированный код возвращает структуру trainedModel, которая содержит те же поля как struct, который вы создаете, когда вы экспортируете классификатор от Classification Learner до рабочей области.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    saveCompactModel(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 = loadCompactModel('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 экспортируемого struct, чтобы принять во внимание это преобразование. Не имеет значения, импортировали ли вы таблицу или матрицу в приложение, пока X содержит столбцы матрицы в том же порядке. Прежде, чем сгенерировать код, выполните эти шаги:

  1. Сохраните поля PCACenters и PCACoefficients обученного struct классификатора, 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 = loadCompactModel('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 и ограничениях, смотрите Генерацию кода. Для примеров смотрите saveCompactModel и loadCompactModel.

Разверните прогнозы Используя 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
    

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

Функции

Классы

Похожие темы