Main Content


Class: ClassificationTree

Produce sequence of classification subtrees by pruning


tree1 = prune(tree)
tree1 = prune(tree,Name,Value)


tree1 = prune(tree) creates a copy of the classification tree tree with its optimal pruning sequence filled in.

tree1 = prune(tree,Name,Value) creates a pruned tree with additional options specified by one Name,Value pair argument. You can specify several name-value pair arguments in any order as Name1,Value1,…,NameN,ValueN.

Input Arguments


A classification tree created with fitctree.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.


A numeric scalar. prune prunes tree to the specified value of the pruning cost.


A numeric scalar from 0 (no pruning) to the largest pruning level of this tree max(tree.PruneList). prune returns the tree pruned to this level.


A numeric vector with elements from 1 to tree.NumNodes. Any tree branch nodes listed in nodes become leaf nodes in tree1, unless their parent nodes are also pruned.

Output Arguments


A classification tree.


expand all

Construct and display a full classification tree for Fisher's iris data.

load fisheriris;
varnames = {'SL','SW','PL','PW'};
t1 = fitctree(meas,species,'MinParentSize',5,'PredictorNames',varnames);

{"String":"Figure Classification tree viewer contains an axes object and other objects of type uimenu, uicontrol. The axes object contains 21 objects of type line, text.","Tex":[],"LaTex":[]}

Construct and display the next largest tree from the optimal pruning sequence.

t2 = prune(t1,'Level',1);

{"String":"Figure Classification tree viewer contains an axes object and other objects of type uimenu, uicontrol. The axes object contains 15 objects of type line, text.","Tex":[],"LaTex":[]}


  • tree1 = prune(tree) returns the decision tree tree1 that is the full, unpruned tree, but with optimal pruning information added. This is useful only if you created tree by pruning another tree, or by using the fitctree function with pruning set 'off'. If you plan to prune a tree multiple times along the optimal pruning sequence, it is more efficient to create the optimal pruning sequence first.

Extended Capabilities

See Also