exponenta event banner

Предскажите, что этикетки класса Используя ClassificationSVM предсказывают блок

Этот пример шоу, как использовать ClassificationSVM, Предсказывает блок для прогноза этикетки в Simulink®. Блок принимает наблюдение (данные предиктора) и возвращает предсказанную метку класса и оценку класса для наблюдения с использованием модели классификации обученной машины вектора поддержки (SVM).

Модель классификации поездов

В этом примере используется ionosphere набор данных, содержащий характеристики возврата РЛС (Y) и данные предиктора (X) из 34 переменных. Радиолокаторы имеют хорошее качество ('g') или плохого качества ('b').

Загрузить ionosphere набор данных. Определите размер выборки.

load ionosphere
n = numel(Y)
n = 351

Предположим, что возврат радара обнаруживается последовательно, и у вас есть первые 300 наблюдений, но вы еще не получили последний 51. Разбейте данные на текущую и будущую выборки.

prsntX = X(1:300,:);
prsntY = Y(1:300);
ftrX = X(301:end,:);
ftrY = Y(301:end);

Обучение модели SVM с использованием всех имеющихся в настоящее время данных. Укажите стандартизацию данных предиктора.

svmMdl = fitcsvm(prsntX,prsntY,'Standardize',true);

svmMdl является ClassificationSVM модель.

Проверьте отрицательные и положительные имена классов с помощью ClassNames имущество svmMdl.

svmMdl.ClassNames
ans = 2x1 cell
    {'b'}
    {'g'}

Отрицательный класс: 'b', и положительный класс 'g'. Ценности продукции от порта счета ClassificationSVM Предсказывают, что у блока есть тот же заказ. Первый и второй элементы соответствуют отрицательному классу и положительному классу соответственно.

Создание модели Simulink

В этом примере представлена модель Simulink slexIonosphereClassificationSVMPredictExample.slx, который включает ClassificationSVM, Предсказывают блок. Можно открыть модель Simulink или создать новую модель, как описано в этом разделе.

Открытие модели Simulink slexIonosphereClassificationSVMPredictExample.slx.

SimMdlName = 'slexIonosphereClassificationSVMPredictExample'; 
open_system(SimMdlName)

PreLoadFcn функция обратного вызова slexIonosphereClassificationSVMPredictExample включает в себя код для загрузки данных выборки, обучения модели SVM и создания входного сигнала для модели Simulink. При открытии модели Simulink программа запускает код в PreLoadFcn перед загрузкой модели Simulink. Чтобы просмотреть функцию обратного вызова, в разделе Настройка (Setup) на вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings) и выберите Свойства модели (Model Properties). Затем на вкладке Callbacks выберите PreLoadFcn функция обратного вызова на панели Обратные вызовы модели.

Чтобы создать новую модель Simulink, откройте шаблон Пустой модели (Blank Model) и добавьте блок Прогнозирование Simulink SVM. Добавьте блоки «Inport» и «Outport» и подключите их к блоку «PerformingSVM Predict».

Для открытия диалогового окна «Параметры блока» дважды щелкните на блоке «Прогнозирование». Укажите параметр Выбрать обучаемую модель машинного обучения (Select trained machine learning model) как svmMdl, которое является именем переменной рабочей области, содержащей обученную модель SVM. "Нажмите кнопку ""Обновить""". В диалоговом окне отображаются опции, используемые для обучения модели SVM. svmMdl в разделе Обучаемая модель машинного обучения. Установите флажок Добавить выходной порт для прогнозируемых оценок класса, чтобы добавить второй балл выходного порта.

ClassificationSVM Предсказывают, что блок ожидает наблюдение, содержащее 34 ценности предсказателя. Дважды щелкните блок «Inport» и установите для параметра «Port dimensions» значение 34 на вкладке «Signal Attributes».

Создайте входной сигнал в виде массива структуры для модели Simulink. Структурный массив должен содержать следующие поля:

  • time - моменты времени, в которые наблюдения входят в модель. В этом примере длительность включает целые числа от 0 до 50. Ориентация должна соответствовать наблюдениям в данных предиктора. Итак, в данном случае, time должен быть вектором столбца.

  • signals - Структурный массив 1 к 1, описывающий входные данные и содержащий поля values и dimensions, где values является матрицей данных предиктора, и dimensions - количество переменных предиктора.

Создайте соответствующий структурный массив для будущих радарных возвращений.

radarReturnInput.time = (0:50)';
radarReturnInput.signals(1).values = ftrX;
radarReturnInput.signals(1).dimensions = size(ftrX,2);

Чтобы импортировать данные сигнала из рабочей области:

  • Откройте диалоговое окно «Параметры конфигурации». На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).

  • На панели Импорт/экспорт данных установите флажок Ввод и введите carsmallInput в соседнем текстовом поле.

  • На панели Решатель (Solver) в разделе Время моделирования (Simulation time) задайте для параметра Время остановки (Stop time) значение radarReturnInput.time(end). В разделе Выбор решателя (Solver selection) задайте для параметра Тип (Type) значение Fixed-stepи установите для решателя значение discrete (no continuous states).

Дополнительные сведения см. в разделе Загрузка данных сигналов для моделирования (Simulink).

Моделирование модели.

sim(SimMdlName);

Когда блок Inport обнаруживает наблюдение, он предписывает, чтобы наблюдение в ClassificationSVM Предсказало блок. Инспектор данных моделирования (Simulation Data Inspector, Simulink) можно использовать для просмотра зарегистрированных данных блоков исходящего порта.

См. также

Связанные темы