# predict

Predict responses using regression tree model

## Syntax

``Yfit = predict(tree,X)``
``Yfit = predict(tree,X,Subtrees=subtrees)``
``````[Yfit,node] = predict(___)``````

## Description

example

````Yfit = predict(tree,X)` returns a vector of predicted responses for the predictor data in the table or matrix `X`, based on the trained regression tree `tree`.```
````Yfit = predict(tree,X,Subtrees=subtrees)` also prunes `tree` to the level specified by `subtrees`, before predicting responses.```
``````[Yfit,node] = predict(___)``` also returns a vector of predicted node numbers for the responses, using any of the input arguments in the previous syntaxes.```

## Examples

collapse all

Load the `carsmall` data set. Consider `Displacement`, `Horsepower`, and `Weight` as predictors of the response `MPG`.

```load carsmall X = [Displacement Horsepower Weight];```

Grow a regression tree using the entire data set.

`Mdl = fitrtree(X,MPG);`

Predict the MPG for a car with 200 cubic inch engine displacement, 150 horsepower, and that weighs 3000 lbs.

```X0 = [200 150 3000]; MPG0 = predict(Mdl,X0)```
```MPG0 = 21.9375 ```

The regression tree predicts the car's efficiency to be 21.94 mpg.

## Input Arguments

collapse all

Regression tree model, specified as a `RegressionTree` model object trained with `fitrtree`, or a `CompactRegressionTree` model object created with `compact`.

Predictor data used to predict responses, specified as a numeric matrix or a table.

Each row of `X` corresponds to one observation, and each column corresponds to one variable.

For a numeric matrix:

• The variables that make up the columns of `X` must have the same order as the predictor variables used to train `tree`.

• If you train `tree` using a table (for example, `Tbl`), `X` can be a numeric matrix if `Tbl` contains only numeric predictor variables. To treat numeric predictors in `Tbl` as categorical during training, specify categorical predictors using the `CategoricalPredictors` name-value argument of `fitrtree`. If `Tbl` contains heterogeneous predictor variables (for example, numeric and categorical data types) and `X` is a numeric matrix, `predict` issues an error.

For a table:

• `predict` does not support multicolumn variables or cell arrays other than cell arrays of character vectors.

• If you train `tree` using a table (for example, `Tbl`), all predictor variables in `X` must have the same variable names and data types as those used to train `tree` (stored in `tree.PredictorNames`). However, the column order of `X` does not need to correspond to the column order of `Tbl`. `Tbl` and `X` can contain additional variables, such as response variables and observation weights, but `predict` ignores them.

• If you train `tree` using a numeric matrix, the predictor names in `tree.PredictorNames` must be the same as the corresponding predictor variable names in `X`. To specify predictor names during training, use the `PredictorNames`name-value argument of `fitrtree`. All predictor variables in `X` must be numeric vectors. `X` can contain additional variables, such as response variables and observation weights, but `predict` ignores them.

Pruning level, specified as a vector of nonnegative integers in ascending order or `"all"`.

If you specify a vector, then all elements must be at least `0` and at most `max(tree.PruneList)`. `0` indicates the full, unpruned tree, and `max(tree.PruneList)` indicates the completely pruned tree (that is, just the root node).

If you specify `"all"`, then `predict` operates on all subtrees (that is, the entire pruning sequence). This specification is equivalent to using `0:max(tree.PruneList)`.

`predict` prunes `tree` to each level specified by `subtrees`, and then estimates the corresponding output arguments. The size of `subtrees` determines the size of some output arguments.

For the function to invoke `subtrees`, the properties `PruneList` and `PruneAlpha` of `tree` must be nonempty. In other words, grow `tree` by setting `Prune="on"` when you use `fitrtree`, or by pruning `tree` using `prune`.

Data Types: `single` | `double` | `char` | `string`

## Output Arguments

collapse all

Predicted response values, returned as a numeric column vector with the same number of rows as `X`. Each row of `Yfit` gives the predicted response to the corresponding row of `X`, based on the regression model `tree`.

Node numbers for the predictions, returned as a numeric vector. Each entry corresponds to the predicted leaf node in `tree` for the corresponding row of `X`.

## Alternative Functionality

To integrate the prediction of a regression tree model into Simulink®, you can use the RegressionTree Predict block in the Statistics and Machine Learning Toolbox™ library or a MATLAB® Function block with the `predict` function. For examples, see Predict Responses Using RegressionTree Predict Block and Predict Class Labels Using MATLAB Function Block.

When deciding which approach to use, consider the following:

• If you use the Statistics and Machine Learning Toolbox library block, you can use the Fixed-Point Tool (Fixed-Point Designer) to convert a floating-point model to fixed point.

• Support for variable-size arrays must be enabled for a MATLAB Function block with the `predict` function.

• If you use a MATLAB Function block, you can use MATLAB functions for preprocessing or post-processing before or after predictions in the same MATLAB Function block.

## Version History

Introduced in R2011a