Announcement: All noncommercial projects registered to use Earth Engine beforeApril 15, 2025 mustverify noncommercial eligibility to maintain access. If you have not verified by September 26, 2025, your access may be on hold.

ee.Classifier.smileCart

  • Theee.Classifier.smileCart function creates an empty CART classifier.

  • ThesmileCart classifier can be configured with parameters for maximum leaf nodes (maxNodes) and minimum leaf node population (minLeafPopulation).

  • An example demonstrates training a CART classifier on a Sentinel-2 image using ESA WorldCover data as labels and evaluating its accuracy.

  • The provided code includes examples for both JavaScript and Python environments.

Creates an empty CART classifier. See:

  "Classification and Regression Trees,"

  L. Breiman, J. Friedman, R. Olshen, C. Stone

  Chapman and Hall, 1984.

UsageReturns
ee.Classifier.smileCart(maxNodes,minLeafPopulation)Classifier
ArgumentTypeDetails
maxNodesInteger, default: nullThe maximum number of leaf nodes in each tree. If unspecified, defaults to no limit.
minLeafPopulationInteger, default: 1Only create nodes whose training set contains at least this many points.

Examples

Code Editor (JavaScript)

// A Sentinel-2 surface reflectance image, reflectance bands selected,// serves as the source for training and prediction in this contrived example.varimg=ee.Image('COPERNICUS/S2_SR/20210109T185751_20210109T185931_T10SEG').select('B.*');// ESA WorldCover land cover map, used as label source in classifier training.varlc=ee.Image('ESA/WorldCover/v100/2020');// Remap the land cover class values to a 0-based sequential series.varclassValues=[10,20,30,40,50,60,70,80,90,95,100];varremapValues=ee.List.sequence(0,10);varlabel='lc';lc=lc.remap(classValues,remapValues).rename(label).toByte();// Add land cover as a band of the reflectance image and sample 100 pixels at// 10 m scale from each land cover class within a region of interest.varroi=ee.Geometry.Rectangle(-122.347,37.743,-122.024,37.838);varsample=img.addBands(lc).stratifiedSample({numPoints:100,classBand:label,region:roi,scale:10,geometries:true});// Add a random value field to the sample and use it to approximately split 80%// of the features into a training set and 20% into a validation set.sample=sample.randomColumn();vartrainingSample=sample.filter('random <= 0.8');varvalidationSample=sample.filter('random > 0.8');// Train a CART classifier (up to 10 leaf nodes in each tree) from the// training sample.vartrainedClassifier=ee.Classifier.smileCart(10).train({features:trainingSample,classProperty:label,inputProperties:img.bandNames()});// Get information about the trained classifier.print('Results of trained classifier',trainedClassifier.explain());// Get a confusion matrix and overall accuracy for the training sample.vartrainAccuracy=trainedClassifier.confusionMatrix();print('Training error matrix',trainAccuracy);print('Training overall accuracy',trainAccuracy.accuracy());// Get a confusion matrix and overall accuracy for the validation sample.validationSample=validationSample.classify(trainedClassifier);varvalidationAccuracy=validationSample.errorMatrix(label,'classification');print('Validation error matrix',validationAccuracy);print('Validation accuracy',validationAccuracy.accuracy());// Classify the reflectance image from the trained classifier.varimgClassified=img.classify(trainedClassifier);// Add the layers to the map.varclassVis={min:0,max:10,palette:['006400','ffbb22','ffff4c','f096ff','fa0000','b4b4b4','f0f0f0','0064c8','0096a0','00cf75','fae6a0']};Map.setCenter(-122.184,37.796,12);Map.addLayer(img,{bands:['B11','B8','B3'],min:100,max:3500},'img');Map.addLayer(lc,classVis,'lc');Map.addLayer(imgClassified,classVis,'Classified');Map.addLayer(roi,{color:'white'},'ROI',false,0.5);Map.addLayer(trainingSample,{color:'black'},'Training sample',false);Map.addLayer(validationSample,{color:'white'},'Validation sample',false);

Python setup

See the Python Environment page for information on the Python API and usinggeemap for interactive development.

importeeimportgeemap.coreasgeemap

Colab (Python)

# A Sentinel-2 surface reflectance image, reflectance bands selected,# serves as the source for training and prediction in this contrived example.img=ee.Image('COPERNICUS/S2_SR/20210109T185751_20210109T185931_T10SEG').select('B.*')# ESA WorldCover land cover map, used as label source in classifier training.lc=ee.Image('ESA/WorldCover/v100/2020')# Remap the land cover class values to a 0-based sequential series.class_values=[10,20,30,40,50,60,70,80,90,95,100]remap_values=ee.List.sequence(0,10)label='lc'lc=lc.remap(class_values,remap_values).rename(label).toByte()# Add land cover as a band of the reflectance image and sample 100 pixels at# 10 m scale from each land cover class within a region of interest.roi=ee.Geometry.Rectangle(-122.347,37.743,-122.024,37.838)sample=img.addBands(lc).stratifiedSample(numPoints=100,classBand=label,region=roi,scale=10,geometries=True)# Add a random value field to the sample and use it to approximately split 80%# of the features into a training set and 20% into a validation set.sample=sample.randomColumn()training_sample=sample.filter('random <= 0.8')validation_sample=sample.filter('random > 0.8')# Train a CART classifier (up to 10 leaf nodes in each tree) from the# training sample.trained_classifier=ee.Classifier.smileCart(10).train(features=training_sample,classProperty=label,inputProperties=img.bandNames(),)# Get information about the trained classifier.display('Results of trained classifier',trained_classifier.explain())# Get a confusion matrix and overall accuracy for the training sample.train_accuracy=trained_classifier.confusionMatrix()display('Training error matrix',train_accuracy)display('Training overall accuracy',train_accuracy.accuracy())# Get a confusion matrix and overall accuracy for the validation sample.validation_sample=validation_sample.classify(trained_classifier)validation_accuracy=validation_sample.errorMatrix(label,'classification')display('Validation error matrix',validation_accuracy)display('Validation accuracy',validation_accuracy.accuracy())# Classify the reflectance image from the trained classifier.img_classified=img.classify(trained_classifier)# Add the layers to the map.class_vis={'min':0,'max':10,'palette':['006400','ffbb22','ffff4c','f096ff','fa0000','b4b4b4','f0f0f0','0064c8','0096a0','00cf75','fae6a0',],}m=geemap.Map()m.set_center(-122.184,37.796,12)m.add_layer(img,{'bands':['B11','B8','B3'],'min':100,'max':3500},'img')m.add_layer(lc,class_vis,'lc')m.add_layer(img_classified,class_vis,'Classified')m.add_layer(roi,{'color':'white'},'ROI',False,0.5)m.add_layer(training_sample,{'color':'black'},'Training sample',False)m.add_layer(validation_sample,{'color':'white'},'Validation sample',False)m

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2023-10-06 UTC.