Предсказание откликов с помощью блока RegressionTree Predict

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

Обучите регрессионую модель

Загрузите carbig набор данных, содержащий измерения автомобилей 1970-х и начала 1980-х годов. Создайте матрицу, содержащую переменные предиктора и вектор переменной отклика.

load carbig
X = [Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight];
Y = MPG;

Обучите модель дерева регрессии.

treeMdl = fitrtree(X,Y);

treeMdl является RegressionTree модель.

Создайте модель Simulink

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

Откройте модель Simulink slexCarDataRegressionTreePredictExample.slx.

SimMdlName = 'slexCarDataRegressionTreePredictExample'; 
open_system(SimMdlName)

The PreLoadFcn функция обратного вызова от slexCarDataRegressionTreePredictExample включает код для загрузки выборочных данных, обучения древовидной модели и создания входного сигнала для модели Simulink. Если вы открываете модель Simulink, то программное обеспечение запускает код в PreLoadFcn перед загрузкой модели Simulink. Чтобы просмотреть функцию обратного вызова, в разделе Setup на вкладке Modeling, нажмите Model Settings и выберите Model Properties. Затем на вкладке Callbacks выберите PreLoadFcn функция обратного вызова на панели обратных коллбэков Model.

Чтобы создать новую модель Simulink, откройте шаблон Blank Model и добавьте блок RegressionTree Predict. Добавьте блоки Inport и Outport и соедините их с блоком RegressionTree Predict.

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

Блок RegressionTree Predict ожидает наблюдения, содержащего 6 значений предиктора. Дважды кликните блок Inport и установите для параметра Port dimensions значение 6 на вкладке Signal Attributes.

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

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

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

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

load carsmall
testX = [Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight];
testX = rmmissing(testX);
carsmallInput.time = (0:size(testX,1)-1)';
carsmallInput.signals(1).values = testX;
carsmallInput.signals(1).dimensions = size(testX,2);

Для импорта данных о сигнале из рабочей области:

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

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

  • На панели « Решатели» в разделе «Время симуляции» установите значение «Время остановки» carsmallInput.time(end). В группе «Выбор решателя» установите для параметра «Тип» значение Fixed-step, и установите решатель на discrete (no continuous states).

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

Симулируйте модель.

sim(SimMdlName);

Когда блок Inport обнаруживает наблюдение, он направляет наблюдение в блок RegressionTree Predict. Можно использовать Данные моделирования Inspector (Simulink), чтобы просмотреть записанные данные блока Outport.

См. также

Похожие темы