Pakiet ee.Clusterer
obsługuje klasyfikację bez nadzoru (czyli zagnieżdżanie) w Earth Engine. Obecnie te algorytmy są oparte na algorytmach o tej samej nazwie w Weka.
Więcej informacji o każdym Clusterer
znajdziesz w dokumentacji referencyjnej.
Używa się ich w taki sam sposób jak klasyfikatorów w Earth Engine. Ogólny proces grupowania:
- Zbierz cechy z właściwościami liczbowymi, w których chcesz znaleźć klastry.
- Tworzenie instancji klasyfikatora. W razie potrzeby ustaw jego parametry.
- Wytrenuj klasyfikator za pomocą danych treningowych.
- Zastosuj klasyfikator do obrazu lub zbioru cech.
- Oznacz klastry.
Dane szkoleniowe to FeatureCollection
z właściwościami, które zostaną podane do użycia w klasterze. W przeciwieństwie do klasyfikatorów w przypadku elementu Clusterer
nie ma wartości klasy wejściowej. Podobnie jak w przypadku klasyfikatorów, dane na potrzeby kroków trenowania i stosowania powinny mieć taką samą liczbę wartości. Gdy wytrenowany klasyfikator zostanie zastosowany do obrazu lub tabeli, przypisze on identyfikator liczbowy klastra do każdego piksela lub elementu.
Oto prosty przykład tworzenia i używania elementu ee.Clusterer
:
Edytor kodu (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');
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
Uwaga:
- Te same dane wejściowe powinny zawsze dawać te same wyniki, ale ich zmiana może zmienić wyniki.
- Trenowanie z zastosowaniem zaledwie 10 pasm * 100 tys. punktów może spowodować błąd braku pamięci.
- Wykonywanie analizy metodą Cobweb może zająć dużo czasu i wygenerować dużą liczbę klastrów.
- Wyjściowe klastry i ich identyfikatory zależą od algorytmu i danych wejściowych.