exponenta event banner

Спрогнозировать метки классов с помощью блока ForcedTree Predict

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

Модель классификации поездов в приложении Classifier Learner

Обучение модели дерева принятия решений по классификации с помощью оптимизации гиперпараметров в приложении Classification Learner.

1. В окне команд MATLAB ® загрузите 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);

2. Открыть классификатор. На вкладке Приложения в разделе Приложения щелкните стрелку Показать другие, чтобы отобразить галерею приложений. В группе Machine Learning and Deep Learning выберите Classification Learner.

3. На вкладке «Классификатор» в разделе «Файл» щелкните «Создать сеанс» и выберите «Из рабочей области».

4. В диалоговом окне Создать сессию из рабочей области (New Session from Workspace) выберите матрицу prsntX из списка «Переменная набора данных». В разделе Ответ (Response) нажмите кнопку Из рабочей области (From workspace) и выберите вектор. prsntY из рабочей области. Для защиты от переоборудования по умолчанию используется пятикратная перекрестная проверка. В этом примере не изменяйте параметры по умолчанию.

5. Чтобы принять параметры по умолчанию и продолжить, щелкните Начать сеанс (Start Session).

6. Выберите оптимизируемую модель дерева для обучения. На вкладке Ученик по классификации (Classification Learner) в разделе Тип модели (Model Type) щелкните стрелку Показать дополнительные (Show more), чтобы открыть галерею. В группе Деревья решений (Decision Trees) щелкните Оптимизируемое дерево (Optimizable Tree). Приложение отключает кнопку «Использовать параллель» при выборе оптимизируемой модели.

7. В разделе Обучение щелкните Обучение. Приложение отображает график минимальной ошибки классификации при выполнении процесса оптимизации. При каждой итерации приложение пробует различную комбинацию значений гиперпараметров и обновляет график с минимальной ошибкой классификации проверки, наблюдаемой до этой итерации, обозначенной темно-синим цветом. Когда приложение завершает процесс оптимизации, оно выбирает набор оптимизированных гиперпараметров, обозначенных красным квадратом. Дополнительные сведения см. в разделе График минимальной ошибки классификации.

Приложение перечисляет оптимизированные гиперпараметры в разделе «Результаты оптимизации» справа от графика и в разделе «Оптимизированные гиперпараметры» панели «Сводка текущей модели». В общем, результаты оптимизации не воспроизводимы.

8. Экспортируйте модель в рабочую область MATLAB. На вкладке Classification Learner в разделе Export щелкните Export Model (Экспорт модели) и выберите Export Model (Экспорт модели), затем нажмите кнопку OK. Имя экспортируемой модели по умолчанию: trainedModel.

Кроме того, можно создать код MATLAB, который обучает классификационную модель с теми же параметрами, которые используются для обучения модели в приложении. На вкладке Ученик по классификации (Classification Learner) в разделе Экспорт (Export) щелкните Создать функцию (Generate Function). Приложение генерирует код из сеанса и отображает файл в редакторе MATLAB. Файл определяет функцию, которая принимает переменные предиктора и ответа, обучает классификационную модель и выполняет перекрестную проверку. Измените имя функции на trainClassificationTreeModel и сохраните файл функции. Обучение модели классификации дерева решений с помощью trainClassificationTreeModel функция.

trainedModel = trainClassificationTreeModel(prsntX,prsntY);

9. Извлеките обученную модель из trainedModel переменная. trainedModel содержит ClassificationTree объект модели в ClassificationTree поле.

treeMdl = trainedModel.ClassificationTree;

Поскольку оптимизация гиперпараметров может привести к переполнению модели, рекомендуется создать отдельный тестовый набор перед импортом данных в приложение Classification Learner и посмотреть, как оптимизированная модель работает с тестовым набором. Дополнительные сведения см. в разделе Классификатор поездов с использованием оптимизации гиперпараметров в приложении Classification Learner.

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

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

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

SimMdlName = 'slexIonosphereClassificationTreePredictExample'; 
open_system(SimMdlName)

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

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

Дважды щелкните блок «Прогнозирование дерева», чтобы открыть диалоговое окно «Параметры блока». Можно указать имя переменной рабочей области, содержащей обучаемую модель. Имя переменной по умолчанию: treeMdl. "Нажмите кнопку ""Обновить""". В диалоговом окне отображаются опции, используемые для обучения модели. treeMdl в разделе Обучаемая модель машинного обучения. Установите флажок Добавить выходной порт для прогнозируемых оценок класса, чтобы добавить второй балл выходного порта.

Блок предсказания DreamTree ожидает наблюдения, содержащего 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).

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

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

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

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

sim(SimMdlName);

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

См. также

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