# Random Forest Classifier¶

A random forest is a meta estimator that fits a number of decision tree classifiers on various sub-samples of the dataset and use averaging to improve the predictive accuracy and control over-fitting. The sub-sample size is always the same as the original input sample size but the samples are drawn with replacement if bootstrap is True (default).

*Configuration*:

n_estimatorsThe number of trees in the forest.

Changed in version 0.20: The default value of

`n_estimators`

will change from 10 in version 0.20 to 100 in version 0.22.

criterionThe function to measure the quality of a split. Supported criteria are “gini” for the Gini impurity and “entropy” for the information gain. Note: this parameter is tree-specific.

bootstrapWhether bootstrap samples are used when building trees.

oob_scoreWhether to use out-of-bag samples to estimate the generalization accuracy.

n_jobsThe number of jobs to run in parallel for both fit and predict.

`None`

means 1 unless in a`joblib.parallel_backend`

context.`-1`

means using all processors. See n_jobs for more details.

max_featuresThe number of features to consider when looking for the best split:

- If int, then consider max_features features at each split.
- If float, then max_features is a fraction and int(max_features * n_features) features are considered at each split.
- If “auto”, then max_features=sqrt(n_features).
- If “sqrt”, then max_features=sqrt(n_features) (same as “auto”).
- If “log2”, then max_features=log2(n_features).
- If None, then max_features=n_features.
Note: the search for a split does not stop until at least one valid partition of the node samples is found, even if it requires to effectively inspect more than

`max_features`

features.

max_depthThe maximum depth of the tree. If None, then nodes are expanded until all leaves are pure or until all leaves contain less than min_samples_split samples.

min_samples_splitThe minimum number of samples required to split an internal node:

- If int, then consider min_samples_split as the minimum number.
- If float, then min_samples_split is a fraction and ceil(min_samples_split * n_samples) are the minimum number of samples for each split.
Changed in version 0.18: Added float values for fractions.

min_samples_leafThe minimum number of samples required to be at a leaf node. A split point at any depth will only be considered if it leaves at least

`min_samples_leaf`

training samples in each of the left and right branches. This may have the effect of smoothing the model, especially in regression.

- If int, then consider min_samples_leaf as the minimum number.
- If float, then min_samples_leaf is a fraction and ceil(min_samples_leaf * n_samples) are the minimum number of samples for each node.
Changed in version 0.18: Added float values for fractions.

min_samples_leafThe minimum number of samples required to be at a leaf node. A split point at any depth will only be considered if it leaves at least

`min_samples_leaf`

training samples in each of the left and right branches. This may have the effect of smoothing the model, especially in regression.

- If int, then consider min_samples_leaf as the minimum number.
- If float, then min_samples_leaf is a fraction and ceil(min_samples_leaf * n_samples) are the minimum number of samples for each node.
Changed in version 0.18: Added float values for fractions.

min_weight_fraction_leafThe minimum weighted fraction of the sum total of weights (of all the input samples) required to be at a leaf node. Samples have equal weight when sample_weight is not provided.

max_leaf_nodesGrow trees with

`max_leaf_nodes`

in best-first fashion. Best nodes are defined as relative reduction in impurity. If None then unlimited number of leaf nodes.

min_impurity_splitThreshold for early stopping in tree growth. A node will split if its impurity is above the threshold, otherwise it is a leaf.

Deprecated since version 0.19:

`min_impurity_split`

has been deprecated in favor of`min_impurity_decrease`

in 0.19. The default value of`min_impurity_split`

will change from 1e-7 to 0 in 0.23 and it will be removed in 0.25. Use`min_impurity_decrease`

instead.

min_impurity_decreaseA node will be split if this split induces a decrease of the impurity greater than or equal to this value.

The weighted impurity decrease equation is the following:

N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)where

`N`

is the total number of samples,`N_t`

is the number of samples at the current node,`N_t_L`

is the number of samples in the left child, and`N_t_R`

is the number of samples in the right child.

`N`

,`N_t`

,`N_t_R`

and`N_t_L`

all refer to the weighted sum, if`sample_weight`

is passed.New in version 0.19.

random_stateIf int, random_state is the seed used by the random number generator; If RandomState instance, random_state is the random number generator; If None, the random number generator is the RandomState instance used by np.random.

warm_startWhen set to

`True`

, reuse the solution of the previous call to fit and add more estimators to the ensemble, otherwise, just fit a whole new forest. See warm_start.

*Attributes*:

classes_The classes labels (single output problem), or a list of arrays of class labels (multi-output problem).

feature_importances_The feature importances (the higher, the more important the feature).

n_classes_The number of classes (single output problem), or a list containing the number of classes for each output (multi-output problem).

n_features_The number of features when

`fit`

is performed.

n_outputs_The number of outputs when

`fit`

is performed.

oob_score_Score of the training dataset obtained using an out-of-bag estimate.

oob_decision_function_Decision function computed with out-of-bag estimate on the training set. If n_estimators is small it might be possible that a data point was never left out during the bootstrap. In this case, oob_decision_function_ might contain NaN.

*Input ports*:

*Output ports*:**model**: model- Model

**n_estimators**(n_estimators)The number of trees in the forest.

Changed in version 0.20: The default value of

`n_estimators`

will change from 10 in version 0.20 to 100 in version 0.22.**criterion**(criterion)- The function to measure the quality of a split. Supported criteria are “gini” for the Gini impurity and “entropy” for the information gain. Note: this parameter is tree-specific.
**bootstrap**(bootstrap)- Whether bootstrap samples are used when building trees.
**oob_score**(oob_score)- Whether to use out-of-bag samples to estimate the generalization accuracy.
**n_jobs**(n_jobs)- The number of jobs to run in parallel for both fit and predict.
`None`

means 1 unless in a`joblib.parallel_backend`

context.`-1`

means using all processors. See n_jobs for more details. **max_features**(max_features)The number of features to consider when looking for the best split:

- If int, then consider max_features features at each split.
- If float, then max_features is a fraction and int(max_features * n_features) features are considered at each split.
- If “auto”, then max_features=sqrt(n_features).
- If “sqrt”, then max_features=sqrt(n_features) (same as “auto”).
- If “log2”, then max_features=log2(n_features).
- If None, then max_features=n_features.

Note: the search for a split does not stop until at least one valid partition of the node samples is found, even if it requires to effectively inspect more than

`max_features`

features.**max_depth**(max_depth)- The maximum depth of the tree. If None, then nodes are expanded until all leaves are pure or until all leaves contain less than min_samples_split samples.
**min_samples_split**(min_samples_split)The minimum number of samples required to split an internal node:

- If int, then consider min_samples_split as the minimum number.
- If float, then min_samples_split is a fraction and ceil(min_samples_split * n_samples) are the minimum number of samples for each split.

Changed in version 0.18: Added float values for fractions.

**min_samples_leaf**(min_samples_leaf)The minimum number of samples required to be at a leaf node. A split point at any depth will only be considered if it leaves at least

`min_samples_leaf`

training samples in each of the left and right branches. This may have the effect of smoothing the model, especially in regression.- If int, then consider min_samples_leaf as the minimum number.
- If float, then min_samples_leaf is a fraction and ceil(min_samples_leaf * n_samples) are the minimum number of samples for each node.

Changed in version 0.18: Added float values for fractions.

**min_weight_fraction_leaf**(min_weight_fraction_leaf)- The minimum weighted fraction of the sum total of weights (of all the input samples) required to be at a leaf node. Samples have equal weight when sample_weight is not provided.
**max_leaf_nodes**(max_leaf_nodes)- Grow trees with
`max_leaf_nodes`

in best-first fashion. Best nodes are defined as relative reduction in impurity. If None then unlimited number of leaf nodes. **min_impurity_split**(min_impurity_split)Threshold for early stopping in tree growth. A node will split if its impurity is above the threshold, otherwise it is a leaf.

Deprecated since version 0.19:

`min_impurity_split`

has been deprecated in favor of`min_impurity_decrease`

in 0.19. The default value of`min_impurity_split`

will change from 1e-7 to 0 in 0.23 and it will be removed in 0.25. Use`min_impurity_decrease`

instead.**min_impurity_decrease**(min_impurity_decrease)A node will be split if this split induces a decrease of the impurity greater than or equal to this value.

The weighted impurity decrease equation is the following:

N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)

where

`N`

is the total number of samples,`N_t`

is the number of samples at the current node,`N_t_L`

is the number of samples in the left child, and`N_t_R`

is the number of samples in the right child.`N`

,`N_t`

,`N_t_R`

and`N_t_L`

all refer to the weighted sum, if`sample_weight`

is passed.New in version 0.19.

**random_state**(random_state)- If int, random_state is the seed used by the random number generator; If RandomState instance, random_state is the random number generator; If None, the random number generator is the RandomState instance used by np.random.
**warm_start**(warm_start)- When set to
`True`

, reuse the solution of the previous call to fit and add more estimators to the ensemble, otherwise, just fit a whole new forest. See warm_start.

Some of the docstrings for this module have been automatically extracted from the scikit-learn library and are covered by their respective licenses.