Classification non supervisée (clustering)
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Le package ee.Clusterer
gère la classification non supervisée (ou clustering) dans Earth Engine. Ces algorithmes sont actuellement basés sur les algorithmes du même nom dans Weka.
Des informations plus détaillées sur chaque Clusterer
sont disponibles dans la documentation de référence.
Les algorithmes de clustering sont utilisés de la même manière que les classificateurs dans Earth Engine. Le workflow général pour le clustering est le suivant:
- Rassemblez des éléments géographiques avec des propriétés numériques pour trouver des clusters.
- Instancier un regroupeur. Définissez ses paramètres si nécessaire.
- Entraînez le clustereur à l'aide des données d'entraînement.
- Appliquez le clustereur à une image ou à une collection d'éléments géographiques.
- Attribuez un libellé aux clusters.
Les données d'entraînement sont un FeatureCollection
avec des propriétés qui seront transmises au clustereur. Contrairement aux classificateurs, il n'existe aucune valeur de classe d'entrée pour un Clusterer
. Comme pour les classificateurs, les données des étapes d'entraînement et d'application doivent avoir le même nombre de valeurs. Lorsqu'un outil de clustering entraîné est appliqué à une image ou à un tableau, il attribue un ID de cluster entier à chaque pixel ou caractéristique.
Voici un exemple simple de création et d'utilisation d'un ee.Clusterer
:
Éditeur de code (JavaScript)
// Define a region in which to generate a segmented map.
var region = ee.Geometry.Rectangle(29.7, 30, 32.5, 31.7);
// Load a Landsat composite for input.
var input = ee.ImageCollection('LANDSAT/COMPOSITES/C02/T1_L2_32DAY')
.filterDate('2001-05', '2001-06')
.first()
.clip(region);
// Display the sample region.
Map.setCenter(31.5, 31.0, 8);
Map.addLayer(ee.Image().paint(region, 0, 2), {}, 'region');
// Make the training dataset.
var training = input.sample({
region: region,
scale: 30,
numPixels: 5000
});
// Instantiate the clusterer and train it.
var clusterer = ee.Clusterer.wekaKMeans(15).train(training);
// Cluster the input using the trained clusterer.
var result = input.cluster(clusterer);
// Display the clusters with random colors.
Map.addLayer(result.randomVisualizer(), {}, 'clusters');
Configuration de Python
Consultez la page
Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap
pour le développement interactif.
import ee
import geemap.core as geemap
Colab (Python)
# Define a region in which to generate a segmented map.
region = ee.Geometry.Rectangle(29.7, 30, 32.5, 31.7)
# Load a Landsat composite for input.
input = (
ee.ImageCollection('LANDSAT/COMPOSITES/C02/T1_L2_32DAY')
.filterDate('2001-05', '2001-06')
.first()
.clip(region)
)
# Display the sample region.
m = geemap.Map()
m.set_center(31.5, 31.0, 8)
m.add_layer(ee.Image().paint(region, 0, 2), {}, 'region')
# Make the training dataset.
training = input.sample(region=region, scale=30, numPixels=5000)
# Instantiate the clusterer and train it.
clusterer = ee.Clusterer.wekaKMeans(15).train(training)
# Cluster the input using the trained clusterer.
result = input.cluster(clusterer)
# Display the clusters with random colors.
m.add_layer(result.randomVisualizer(), {}, 'clusters')
m
Remarque :
- Les mêmes entrées doivent toujours produire les mêmes sorties, mais le réordonnancement des entrées peut modifier les résultats.
- L'entraînement avec seulement 10 bandes * 100 000 points peut générer une erreur de mémoire insuffisante.
- L'algorithme Cobweb peut prendre beaucoup de temps et générer un grand nombre de clusters.
- Les clusters de sortie et leurs ID dépendent de l'algorithme et des entrées.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/25 (UTC).
[null,null,["Dernière mise à jour le 2025/07/25 (UTC)."],[[["\u003cp\u003eThe \u003ccode\u003eee.Clusterer\u003c/code\u003e package in Earth Engine enables unsupervised classification (clustering) using algorithms from Weka.\u003c/p\u003e\n"],["\u003cp\u003eThe clustering workflow involves assembling features, instantiating and training a clusterer, applying it to data, and labeling the resulting clusters.\u003c/p\u003e\n"],["\u003cp\u003eTraining data for clustering is a \u003ccode\u003eFeatureCollection\u003c/code\u003e with numeric properties, and the output assigns integer cluster IDs to pixels or features.\u003c/p\u003e\n"],["\u003cp\u003eCluster results can vary based on input order and the specific algorithm used, and large datasets may lead to memory errors.\u003c/p\u003e\n"],["\u003cp\u003eEarth Engine provides various clustering algorithms, each with its own characteristics and potential limitations, such as Cobweb's runtime and cluster count.\u003c/p\u003e\n"]]],["`ee.Clusterer` in Earth Engine performs unsupervised classification. The process involves assembling features, instantiating a clusterer (like `wekaKMeans`), and training it with a `FeatureCollection`. The trained clusterer is then applied to an image or feature collection, assigning an integer cluster ID to each element. The provided example loads Landsat data, samples it for training, and applies a trained clusterer to visualize the resulting clusters. The number of features in the dataset can impact the performance and stability of the clusterer.\n"],null,["# Unsupervised Classification (clustering)\n\nThe `ee.Clusterer` package handles unsupervised classification (or\n*clustering* ) in Earth Engine. These algorithms are currently based on the\nalgorithms with the same name in [Weka](http://www.cs.waikato.ac.nz/ml/weka/).\nMore details about each `Clusterer` are available in the\n[reference docs](/earth-engine/apidocs).\n\nClusterers are used in the same manner as classifiers in Earth Engine. The general\nworkflow for clustering is:\n\n1. Assemble features with numeric properties in which to find clusters.\n2. Instantiate a clusterer. Set its parameters if necessary.\n3. Train the clusterer using the training data.\n4. Apply the clusterer to an image or feature collection.\n5. Label the clusters.\n\nThe training data is a `FeatureCollection` with properties that will be\ninput to the clusterer. Unlike classifiers, there is no input class value for an\n`Clusterer`. Like classifiers, the data for the train and apply steps are\nexpected to have the same number of values. When a trained clusterer is applied to an image\nor table, it assigns an integer cluster ID to each pixel or feature.\n\nHere is a simple example of building and using an `ee.Clusterer`:\n\n### Code Editor (JavaScript)\n\n```javascript\n// Define a region in which to generate a segmented map.\nvar region = ee.Geometry.Rectangle(29.7, 30, 32.5, 31.7);\n\n// Load a Landsat composite for input.\nvar input = ee.ImageCollection('LANDSAT/COMPOSITES/C02/T1_L2_32DAY')\n .filterDate('2001-05', '2001-06')\n .first()\n .clip(region);\n\n// Display the sample region.\nMap.setCenter(31.5, 31.0, 8);\nMap.addLayer(ee.Image().paint(region, 0, 2), {}, 'region');\n\n// Make the training dataset.\nvar training = input.sample({\n region: region,\n scale: 30,\n numPixels: 5000\n});\n\n// Instantiate the clusterer and train it.\nvar clusterer = ee.Clusterer.wekaKMeans(15).train(training);\n\n// Cluster the input using the trained clusterer.\nvar result = input.cluster(clusterer);\n\n// Display the clusters with random colors.\nMap.addLayer(result.randomVisualizer(), {}, 'clusters');\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\n# Define a region in which to generate a segmented map.\nregion = ee.Geometry.Rectangle(29.7, 30, 32.5, 31.7)\n\n# Load a Landsat composite for input.\ninput = (\n ee.ImageCollection('LANDSAT/COMPOSITES/C02/T1_L2_32DAY')\n .filterDate('2001-05', '2001-06')\n .first()\n .clip(region)\n)\n\n# Display the sample region.\nm = geemap.Map()\nm.set_center(31.5, 31.0, 8)\nm.add_layer(ee.Image().paint(region, 0, 2), {}, 'region')\n\n# Make the training dataset.\ntraining = input.sample(region=region, scale=30, numPixels=5000)\n\n# Instantiate the clusterer and train it.\nclusterer = ee.Clusterer.wekaKMeans(15).train(training)\n\n# Cluster the input using the trained clusterer.\nresult = input.cluster(clusterer)\n\n# Display the clusters with random colors.\nm.add_layer(result.randomVisualizer(), {}, 'clusters')\nm\n```\n\nPlease note:\n\n- The same inputs should always produce the same outputs, but reordering the inputs can change the results.\n- Training with as few as 10 bands \\* 100k points can produce an Out Of Memory error.\n- Cobweb can take a long time to finish and can produce a large number of clusters.\n- The output clusters and their IDs are dependent on the algorithm and inputs."]]