load carsmall
idxNaN = isnan(MPG + Weight);
X = Weight(~idxNaN);
Y = MPG(~idxNaN);
n = numel(X);
すべての観測値を使用して回帰木を成長させます。
Mdl = fitrtree(X,Y);
いくつかの枝刈りレベルで部分木の再代入の当てはめた値を計算します。
m = max(Mdl.PruneList);
pruneLevels = 1:4:m; % Pruning levels to consider
z = numel(pruneLevels);
Yfit = resubPredict(Mdl,Subtrees=pruneLevels);
Yfit は、当てはめた値が含まれている n 行 z 列の行列です。各行は観測値に、各列は部分木に対応しています。
Yfit と Y のいくつかの列を X に対してプロットします。
sortDat = sortrows([X Y Yfit],1); % Sort all data with respect to X
plot(repmat(sortDat(:,1),1,size(Yfit,2)+1),sortDat(:,2:end)) % Vectorize for efficiency
lev = num2str((pruneLevels)',"Level %d MPG");
legend(["Observed MPG"; lev])
title("In-Sample Fitted Responses")
xlabel("Weight (lbs)")
ylabel("MPG")
h = findobj(gcf);
set(h(4:end),LineWidth=3) % Widen all lines