Спрогнозируйте ответы, используя обобщенную аддитивную модель (GAM)
задает, включать ли термины взаимодействия в расчеты.yFit
= predict(Mdl
,X
,'IncludeInteractions',includeInteractions
)
Обучите обобщенную аддитивную модель с помощью обучающих выборок, а затем предсказайте ответы тестовой выборки.
Загрузите patients
набор данных.
load patients
Создайте таблицу, которая содержит переменные предиктора (Age
, Diastolic
, Smoker
, Weight
, Gender
, SelfAssessedHealthStatus
) и переменной отклика (Systolic
).
tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);
Случайным образом разбейте наблюдения на набор обучающих данных и тестовый набор. Укажите 10% -ная выборка удержания для проверки.
rng('default') % For reproducibility cv = cvpartition(size(tbl,1),'HoldOut',0.10);
Извлеките индексы обучения и тестирования.
trainInds = training(cv); testInds = test(cv);
Обучите одномерную GAM, которая содержит линейные условия для предикторов в tbl
.
Mdl = fitrgam(tbl(trainInds,:),'Systolic')
Mdl = RegressionGAM PredictorNames: {1x6 cell} ResponseName: 'Systolic' CategoricalPredictors: [3 5 6] ResponseTransform: 'none' Intercept: 122.7444 NumObservations: 90 Properties, Methods
Mdl
является RegressionGAM
объект модели.
Спрогнозируйте ответы для тестового набора.
yFit = predict(Mdl,tbl(testInds,:));
Составьте таблицу, содержащую наблюдаемые значения отклика и предсказанные значения отклика.
table(tbl.Systolic(testInds),yFit, ... 'VariableNames',{'Observed Value','Predicted Value'})
ans=10×2 table
Observed Value Predicted Value
______________ _______________
124 126.58
121 123.95
130 116.72
115 117.35
121 117.45
116 118.5
123 126.16
132 124.14
125 127.36
124 115.99
Спрогнозируйте ответы на новые наблюдения, используя обобщенную аддитивную модель, которая содержит как линейные, так и условия взаимодействия для предикторов. Используйте объект модели, эффективный для памяти, и задайте, включать ли условия взаимодействия в предсказание ответов.
Загрузите carbig
набор данных, содержащий измерения автомобилей 1970-х и начала 1980-х годов.
load carbig
Задайте Acceleration
, Displacement
, Horsepower
, и Weight
как переменные предиктора (X
) и MPG
как переменная отклика (Y
).
X = [Acceleration,Displacement,Horsepower,Weight]; Y = MPG;
Разделите набор данных на два набора: один, содержащий обучающие данные, и другой, содержащий новые, незащищенные тестовые данные. Резервируйте 10 наблюдений для нового набора тестовых данных.
rng('default')
n = size(X,1);
newInds = randsample(n,10);
inds = ~ismember(1:n,newInds);
XNew = X(newInds,:);
YNew = Y(newInds);
Обучите GAM, которая содержит все доступные линейные условия и условия взаимодействия в X
.
Mdl = fitrgam(X(inds,:),Y(inds),'Interactions','all');
Mdl
является RegressionGAM
объект модели.
Сохраните память путем уменьшения размера обученной модели.
CMdl = compact(Mdl); whos('Mdl','CMdl')
Name Size Bytes Class Attributes CMdl 1x1 1228122 classreg.learning.regr.CompactRegressionGAM Mdl 1x1 1262143 RegressionGAM
CMdl
является CompactRegressionGAM
объект модели.
Спрогнозируйте ответы, используя как линейные, так и условия взаимодействия, а затем используя только линейные условия. Чтобы исключить условия взаимодействия, задайте 'IncludeInteractions',false
.
yFit = predict(CMdl,XNew);
yFit_nointeraction = predict(CMdl,XNew,'IncludeInteractions',false);
Составьте таблицу, содержащую наблюдаемые значения отклика и предсказанные значения отклика.
t = table(YNew,yFit,yFit_nointeraction, ... 'VariableNames',{'Observed Response', ... 'Predicted Response','Predicted Response Without Interactions'})
t=10×3 table
Observed Response Predicted Response Predicted Response Without Interactions
_________________ __________________ _______________________________________
27.9 23.04 23.649
NaN 37.163 35.779
NaN 25.876 21.978
13 12.786 14.141
36 28.889 27.281
19.9 22.199 18.451
24.2 23.995 24.885
12 14.247 13.982
38 33.797 33.528
13 12.225 11.127
Mdl
- Обобщенная аддитивная модельRegressionGAM
объект модели | CompactRegressionGAM
объект моделиОбобщенная аддитивная модель, заданная как RegressionGAM
или CompactRegressionGAM
объект модели.
X
- Данные предиктораДанные предиктора, заданные как числовая матрица или таблица.
Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Для числовой матрицы:
Переменные, составляющие столбцы X
должен иметь тот же порядок, что и переменные предиктора, которые обучали Mdl
.
Если вы тренировались Mdl
используя таблицу, затем X
может быть числовой матрицей, если таблица содержит все числовые переменные предиктора.
Для таблицы:
Если вы тренировались Mdl
использование таблицы (для примера, Tbl
), затем все переменные предиктора в X
должны иметь те же имена переменных и типы данных, что и в Tbl
. Однако порядок столбцов X
не должен соответствовать порядку столбцов Tbl
.
Если вы тренировались Mdl
используя числовую матрицу, затем имена предикторов в Mdl.PredictorNames
и соответствующие имена переменных предиктора в X
должно быть то же самое. Чтобы задать имена предикторов во время обучения, используйте 'PredictorNames'
аргумент имя-значение. Все переменные предиктора в X
должны быть числовыми векторами.
X
может содержать дополнительные переменные (переменные отклика, веса наблюдений и так далее), но predict
игнорирует их.
predict
не поддерживает многополюсные переменные или массивы ячеек, отличные от массивов ячеек векторов символов.
Типы данных: table
| double
| single
includeInteractions
- Флаг для включения условий взаимодействияtrue
| false
Флаг для включения условий взаимодействия модели, заданный как true
или false
.
Значение по умолчанию includeInteractions
значение true
если Mdl
содержит условия взаимодействия. Значение должно быть false
если модель не содержит членов взаимодействия.
Типы данных: logical
yFit
- Предсказанные откликиПредсказанные отклики, возвращенные как вектор длины n, где n - количество наблюдений в данных предиктора X
.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.