Skip To Content

Train Random Trees Classifier

Available with Spatial Analyst license.

Available with Image Analyst license.


Generate an Esri classifier definition (.ecd) file using the Random Trees classification method.

The random trees classifier is a powerful technique for image classification that is resistant to overfitting and can work with segmented images and other ancillary raster datasets. For standard image inputs, the tool accepts multiple-band imagery with any bit depth, and it will perform the Random Trees classification on a pixel basis or segment, based on the input training feature file.


  • Random Trees is a collection of individual decision trees where each tree is generated from different samples and subsets of the training data. The idea behind calling these decision trees is that for every pixel that is classified, a number of decisions are made in rank order of importance. When you graph these out for a pixel, it looks like a branch. When you classify the entire dataset, the branches form a tree. This method is called random trees because you are actually classifying the dataset a number of times based on a random subselection of training pixels, thus resulting in many decision trees. To make a final decision, each tree has a vote. This process works to mitigate overfitting. Random Trees is a supervised machine-learning classifier based on constructing a multitude of decision trees, choosing random subsets of variables for each tree, and using the most frequent tree output as the overall classification. Random Trees corrects for the decision trees' propensity for overfitting to their training sample data. In this method, a number of trees are grown—by an analogy, a forest—and variation among the trees is introduced by projecting the training data into a randomly chosen subspace before fitting each tree. The decision at each node is optimized by a randomized procedure.

  • For segmented rasters that have their key property set to Segmented, the tool computes the index image and associated segment attributes from the RGB segmented raster. The attributes are computed to generate the classifier definition file to be used in a separate classification tool. The attributes for each segment can be computed from any Esri-supported image.

  • Any Esri-supported raster is accepted as input, including raster products, segmented rasters, mosaics, image services, or generic raster datasets. Segmented rasters must be 8-bit rasters with 3 bands.

  • To create the training sample file, use the Training Samples Manager from the Classification Tools.

  • The Segment Attributes parameter is enabled only if one of the raster layer inputs is a segmented image.


TrainRandomTreesClassifier (in_raster, in_training_features, out_classifier_definition, {in_additional_raster}, {max_num_trees}, {max_tree_depth}, {max_samples_per_class}, {used_attributes})
ParameterExplanationData Type

Select the raster dataset you want to classify.

You can use any Esri-supported raster dataset. Options include a 3-band, 8-bit segmented raster dataset, where all the pixels in the same segment have the same color. The input can also be a 1-band, 8-bit, grayscale segmented raster.

Raster Layer; Mosaic Layer; Image Service; String

Select the training sample file or layer that delineates your training sites.

These can be either shapefiles or feature classes, which contain your training samples.

Feature Layer

A JSON file that contains attribute information, statistics, or other information needed for the classifier. A file with an .ecd extension is created.


Optionally incorporate ancillary raster datasets, such as a multispectral image or a DEM, to generate attributes and other required information for classification.

Raster Layer; Mosaic Layer; Image Service; String

The maximum number of trees in the forest. Increasing the number of trees will lead to higher accuracy rates, although this improvement will level off eventually. The number of trees increases the processing time linearly.


The maximum depth of each tree in the forest. Depth is another way of saying the number of rules each tree is allowed to create to come to a decision. Trees will not grow any deeper than this setting.


The maximum number of samples to use for defining each class.

The default value of 1000 is recommended when the inputs are nonsegmented rasters. A value that is less than or equal to 0 means that the system will use all the samples from the training sites to train the classifier.


Specify the attributes to be included in the attribute table associated with the output raster.

  • COLORThe RGB color values are derived from the input raster, on a per-segment basis.
  • MEANThe average digital number (DN), derived from the optional pixel image, on a per-segment basis.
  • STDThe standard deviation, derived from the optional pixel image, on a per-segment basis.
  • COUNTThe number of pixels comprising the segment, on a per-segment basis.
  • COMPACTNESSThe degree to which a segment is compact or circular, on a per-segment basis. The values range from 0 to 1, where 1 is a circle.
  • RECTANGULARITYThe degree to which the segment is rectangular, on a per-segment basis. The values range from 0 to 1, where 1 is a rectangle.

This parameter is only enabled if the Segmented key property is set to true on the input raster. If the only input into the tool is a segmented image, the default attributes are COLOR, COUNT, COMPACTNESS, and RECTANGULARITY. If an in_additional_raster is also included as an input along with a segmented image, then MEAN and STD are available as options.


Code sample

TrainRandomTreesClassifier example 1 (Python window)

This is a Python sample for the TrainRandomTreesClassifier tool.

import arcpy
from import *

                           "c:/test/moncton.tif", "50", "30", "1000",
TrainRandomTreesClassifier example 2 (stand-alone script)

This is a Python script sample for the TrainRandomTreesClassifier tool.

# Import system modules
import arcpy
from import *

# Set local variables
inSegRaster = "c:/test/cities_seg.tif"
train_features = "c:/test/train.gdb/train_features"
out_definition = "c:/output/cities_sig.ecd"
in_additional_raster = "c:/cities.tif"
maxNumTrees = "50"
maxTreeDepth = "30"
maxSampleClass = "1000"

# Check out the ArcGIS Spatial Analyst extension license

# Execute
TrainRandomTreesClassifier(inSegRaster, train_features,
                           out_definition, in_additional_raster, maxNumTrees,
                           maxTreeDepth, maxSampleClass, attributes)

Licensing information

  • ArcGIS Desktop Basic: Requires Spatial Analyst or Image Analyst
  • ArcGIS Desktop Standard: Requires Spatial Analyst or Image Analyst
  • ArcGIS Desktop Advanced: Requires Spatial Analyst or Image Analyst

Related topics