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

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

Загрузите 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')

Figure Regression tree viewer contains an axes and other objects of type uimenu, uicontrol. The axes contains 30 objects of type line, text.

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

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

Figure contains an axes. The axes with title Out-of-Sample Predictions contains 6 objects of type line. These objects represent Observed MPG, Level 0 MPG, Level 2 MPG, Level 4 MPG, Level 6 MPG, Level 8 MPG.

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

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

|

Похожие темы