Предскажите ответы из выборки поддеревьев

Этот пример, как то, как предсказать ответы из выборки деревьев регрессии, и затем построить результаты.

Загрузите carsmall набор данных. Рассмотрите Weight как предиктор ответа MPG.

load carsmall
idxNaN = isnan(MPG + Weight);
X = Weight(~idxNaN);
Y = MPG(~idxNaN);
n = numel(X);

Разделите данные в обучение (50%) и валидацию (50%-е) наборы.

rng(1) % For reproducibility
idxTrn = false(n,1);
idxTrn(randsample(n,round(0.5*n))) = true; % Training set logical indices
idxVal = idxTrn == false;                  % Validation set logical indices

Вырастите дерево регрессии использование учебных наблюдений.

Mdl = fitrtree(X(idxTrn),Y(idxTrn));
view(Mdl,'Mode','graph')

Вычислите адаптированные значения наблюдений валидации для каждого из нескольких поддеревьев.

m = max(Mdl.PruneList);
pruneLevels = 0:2:m; % Pruning levels to consider
z = numel(pruneLevels);
Yfit = predict(Mdl,X(idxVal),'SubTrees',pruneLevels);

Yfit n- z матрица приспособленных значений, в которых строки соответствуют наблюдениям и столбцам, соответствует поддереву.

Постройте Yfit и Y против X.

figure;
sortDat = sortrows([X(idxVal) Y(idxVal) Yfit],1); % Sort all data with respect to X
plot(sortDat(:,1),sortDat(:,2),'*');
hold on;
plot(repmat(sortDat(:,1),1,size(Yfit,2)),sortDat(:,3:end));
lev = cellstr(num2str((pruneLevels)','Level %d MPG'));
legend(['Observed MPG'; lev])
title 'Out-of-Sample Predictions'
xlabel 'Weight (lbs)';
ylabel 'MPG';
h = findobj(gcf);
axis tight;
set(h(4:end),'LineWidth',3) % Widen all lines

Значения Yfit для более низкого сокращения уровни имеют тенденцию следовать за данными более тесно, чем более высокие уровни. Выше сокращающие уровни имеют тенденцию быть плоскими для большого X интервалы.

Смотрите также

|

Похожие темы