В этом примере показано, как обучить модель дерева принятия решения классификации с помощью приложения Classification Learner, и затем использовать блок ClassificationTree Predict для предсказания метки в Simulink®. Блок принимает наблюдение (данные о предикторе) и возвращает предсказанную метку класса и счет класса к наблюдению с помощью обученной модели дерева принятия решения классификации.
Обучите модель дерева принятия решения классификации при помощи гипероптимизации параметров управления в Приложении 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. Открытый Classification Learner. На вкладке Apps, в разделе Apps, нажимают Show больше стрелы, чтобы отобразить галерею Apps. В группе Машинного обучения и Глубокого обучения нажмите Classification Learner.
3. На вкладке Classification Learner, в Разделе файла, нажимают New Session и выбирают From Workspace.
4. В диалоговом окне New Session from Workspace выберите матричный prsntX
из Списка переменных Набора данных. При Ответе нажмите переключатель рабочей области From и выберите векторный prsntY
из рабочей области. Опция валидации по умолчанию является 5-кратной перекрестной проверкой, чтобы защитить от сверхподбора кривой. В данном примере не изменяйте настройки по умолчанию.
5. Чтобы принять опции по умолчанию и продолжиться, нажмите Start Session.
6. Выберите optimizable древовидную модель, чтобы обучаться. На вкладке Classification Learner, в разделе Model Type, нажимают Show больше стрелы, чтобы открыть галерею. В группе Деревьев решений нажмите Optimizable Tree. Приложение отключает кнопку Use Parallel, когда вы выбираете optimizable модель.
7. В разделе Training нажмите Train. Отображения приложения Минимальная Диаграмма погрешностей Классификации, когда это запускает процесс оптимизации. В каждой итерации приложение пробует различную комбинацию гиперзначений параметров и обновляет график с минимальной ошибкой классификации валидаций, наблюдаемой до той итерации, обозначенной в темно-синем. Когда приложение завершает процесс оптимизации, оно выбирает набор оптимизированных гиперпараметров, обозначенных красным квадратом. Для получения дополнительной информации смотрите Минимальную Диаграмму погрешностей Классификации.
Списки приложений оптимизированные гиперпараметры и в разделе Optimization Results справа от графика и в разделе Optimized Hyperparameters панели Сводных данных Текущей модели. В общем случае результаты оптимизации не восстанавливаемы.
8. Экспортируйте модель в рабочее пространство MATLAB. На вкладке Classification Learner, в Разделе экспорта, нажимают Export Model и выбирают Export Model, затем нажимают ОК. Именем по умолчанию для экспортируемой модели является trainedModel
.
В качестве альтернативы можно сгенерировать код MATLAB, который обучает модель классификации с теми же настройками, используемыми, чтобы обучить модель в приложении. На вкладке Classification Learner, в Разделе экспорта, нажимают Generate Function. Приложение генерирует код от вашего сеанса и отображает файл в редакторе MATLAB. Файл задает функцию, которая принимает переменные прогноза и переменные отклика, обучает модель классификации и выполняет перекрестную проверку. Поменяйте имя функции на trainClassificationTreeModel
и сохраните файл функции. Обучите модель классификации деревьев решений при помощи trainClassificationTreeModel
функция.
trainedModel = trainClassificationTreeModel(prsntX,prsntY);
9. Извлеките обученную модель из trainedModel
переменная. trainedModel
содержит ClassificationTree
объект модели в ClassificationTree
поле .
treeMdl = trainedModel.ClassificationTree;
Поскольку гипероптимизация параметров управления может привести к сверхподобранной модели, рекомендуемый подход должен создать отдельный набор тестов прежде, чем импортировать ваши данные в приложение Classification Learner и видеть, как оптимизированная модель выполняет на вашем наборе тестов. Для получения дополнительной информации смотрите, Обучают Классификатор Используя Гипероптимизацию параметров управления в Приложении Classification Learner.
Этот пример предоставляет модели Simulink slexIonosphereClassificationTreePredictExample.slx
, который включает блок ClassificationTree Predict. Можно открыть модель 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 и добавьте блок ClassificationTree Predict. Добавьте блоки Inport и Outport и соедините их с блоком ClassificationTree Predict.
Дважды кликните блок ClassificationTree Predict, чтобы открыть диалоговое окно Block Parameters. Можно задать имя переменной рабочей области, которая содержит обученную модель. Именем переменной по умолчанию является treeMdl
. Нажмите Кнопку Обновить. Диалоговое окно отображается, опции раньше обучали модель treeMdl
в соответствии с Обученной Моделью Машинного обучения. Выберите выходной порт Add для предсказанного флажка баллов класса, чтобы добавить второй счет выходного порта.
Блок ClassificationTree Predict ожидает наблюдение, содержащее 34 значения предиктора. Дважды кликните Inport блок и установите размерности Порта на 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);
Импортировать данные сигнала из рабочей области:
Откройте диалоговое окно Configuration Parameters. На вкладке Modeling нажмите Model Settings.
В панели Импорта/Экспорта Данных установите флажок Input и введите radarReturnInput
в смежном текстовом поле.
В панели Решателя, под Временем симуляции, Временем остановки набора к radarReturnInput.time(end)
. При выборе Решателя, Типе набора к Fixed-step
, и Решатель набора к discrete (no continuous states)
.
Для получения дополнительной информации смотрите Данные сигнала Загрузки для Симуляции (Simulink).
Симулируйте модель.
sim(SimMdlName);
Когда Inport блок обнаруживает наблюдение, он направляет наблюдение в блок ClassificationTree Predict. Можно использовать Инспектора Данных моделирования (Simulink), чтобы просмотреть записанные данные блоков Выходного порта.