В этом примере показано, как использовать блок 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 slexCarDataRegressionTreePredictExample.slx
, который включает блок RegressionTree Predict. Можно открыть модель Simulink или создать новую модель как описано в этом разделе.
Откройте модель Simulink slexCarDataRegressionTreePredictExample.slx
.
SimMdlName = 'slexCarDataRegressionTreePredictExample';
open_system(SimMdlName)
PreLoadFcn
функция обратного вызова slexCarDataRegressionTreePredictExample
включает код, чтобы загрузить выборочные данные, обучить древовидную модель и создать входной сигнал для модели Simulink. Если вы открываете модель Simulink, то программное обеспечение запускает код в PreLoadFcn
прежде, чем загрузить модель Simulink. Чтобы просмотреть функцию обратного вызова, в разделе Setup по вкладке Modeling, нажимают Model Settings и выбирают Model Properties. Затем на вкладке Callbacks выберите PreLoadFcn
функция обратного вызова в панели коллбэков Модели.
Чтобы создать новую модель Simulink, откройте шаблон Blank Model и добавьте блок RegressionTree Predict. Добавьте блоки Inport и Outport и соедините их с блоком RegressionTree Predict.
Дважды кликните блок RegressionTree Predict, чтобы открыть диалоговое окно Block Parameters. Можно задать имя переменной рабочей области, которая содержит обученную древовидную модель. Именем переменной по умолчанию является treeMdl
. Нажмите Кнопку Обновить. Диалоговое окно отображается, опции раньше обучали древовидную модель treeMdl
в соответствии с обученной моделью машинного обучения.
Блок RegressionTree Predict ожидает наблюдение, содержащее 6 значений предиктора. Дважды кликните блок Inport и установите размерности Порта на 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);
Импортировать данные сигнала из рабочей области:
Откройте диалоговое окно Configuration Parameters. На вкладке Modeling нажмите Model Settings.
В панели Импорта/Экспорта Данных установите флажок Input и введите carsmallInput
в смежном текстовом поле.
В панели Решателя, под Временем симуляции, Временем остановки набора к carsmallInput.time(end)
. При выборе Решателя, Типе набора к Fixed-step
, и Решатель набора к discrete (no continuous states)
.
Для получения дополнительной информации смотрите Данные сигнала Загрузки для Симуляции (Simulink).
Симулируйте модель.
sim(SimMdlName);
Когда блок Inport обнаруживает наблюдение, он направляет наблюдение в блок RegressionTree Predict. Можно использовать Инспектора Данных моделирования (Simulink), чтобы просмотреть записанные данные блока Outport.