Klasifikasi Tidak Diawasi (pengelompokan)

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:

  1. Menggabungkan fitur dengan properti numerik untuk menemukan cluster.
  2. Membuat instance pengelompokan. Tetapkan parameternya jika perlu.
  3. Latih clusterer menggunakan data pelatihan.
  4. Terapkan clusterer ke gambar atau koleksi fitur.
  5. 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');

Penyiapan Python

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

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.