Paket ee.Clusterer
menangani klasifikasi tanpa pengawasan (atau
pengelompokan) di Earth Engine. Algoritma ini saat ini didasarkan pada
algoritma dengan nama yang sama di Weka.
Detail selengkapnya tentang setiap Clusterer
tersedia di
dokumen referensi.
Pengelompokan digunakan dengan cara yang sama seperti pengklasifikasi di Earth Engine. Alur kerja umum untuk pengelompokan adalah:
- Menggabungkan fitur dengan properti numerik untuk menemukan cluster.
- Membuat instance pengelompokan. Tetapkan parameternya jika perlu.
- Latih clusterer menggunakan data pelatihan.
- Terapkan clusterer ke gambar atau koleksi fitur.
- Beri label pada cluster.
Data pelatihan adalah FeatureCollection
dengan properti yang akan menjadi input ke pengelompokan. Tidak seperti pengklasifikasi, tidak ada nilai class input untuk
Clusterer
. Seperti pengklasifikasi, data untuk langkah pelatihan dan penerapan
diharapkan memiliki jumlah nilai yang sama. Saat clusterer terlatih diterapkan ke gambar atau tabel, clusterer akan menetapkan ID cluster bilangan bulat ke setiap piksel atau fitur.
Berikut adalah contoh sederhana untuk mem-build dan menggunakan ee.Clusterer
:
Editor Kode (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
Perhatikan:
- Input yang sama harus selalu menghasilkan output yang sama, tetapi mengurutkan ulang input dapat mengubah hasilnya.
- Pelatihan dengan hanya 10 band * 100 ribu titik dapat menghasilkan error Out Of Memory.
- Cobweb dapat memerlukan waktu yang lama untuk selesai dan dapat menghasilkan cluster dalam jumlah besar.
- Cluster output dan ID-nya bergantung pada algoritma dan input.