Denetimsiz sınıflandırma (kümeleme)

ee.Clusterer paketi, Earth Engine'da gözetimsiz sınıflandırmayı (veya küme oluşturmayı) yönetir. Bu algoritmalar şu anda Weka'da aynı ada sahip algoritmaları temel alır. Her Clusterer hakkında daha fazla bilgiyi referans belgelerinde bulabilirsiniz.

Kümeleyiciler, Earth Engine'da sınıflandırıcılarla aynı şekilde kullanılır. Küme oluşturma işleminin genel iş akışı şu şekildedir:

  1. Kümelerin bulunacağı sayısal özelliklere sahip özellikleri bir araya getirin.
  2. Bir kümeleyici örneği oluşturun. Gerekirse parametrelerini ayarlayın.
  3. Eğitim verilerini kullanarak kümeleyiciyi eğitin.
  4. Kümeleyiciyi bir resme veya özellik koleksiyonuna uygulayın.
  5. Kümeleri etiketleyin.

Eğitim verileri, kümeleyiciye eklenecek özelliklere sahip bir FeatureCollection'tür. Sınıflandırıcıların aksine, Clusterer için giriş sınıf değeri yoktur. Sınıflandırıcılarda olduğu gibi, eğitme ve uygulama adımlarına ait verilerin aynı sayıda değere sahip olması beklenir. Eğitilmiş bir kümeleyici bir resme veya tabloya uygulandığında her piksele ya da özelliğe tam sayı bir küme kimliği atar.

ee.Clusterer oluşturma ve kullanmayla ilgili basit bir örneği aşağıda bulabilirsiniz:

// 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');

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

import ee
import geemap.core as geemap
# 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

Not:

  • Aynı girişler her zaman aynı çıkışları üretmelidir ancak girişlerin yeniden sıralanması sonuçları değiştirebilir.
  • 10 bant * 100.000 nokta kadar az sayıda veri kullanarak eğitim yaptığınızda bellek yetersizliği hatası oluşabilir.
  • Örümcek ağı algoritmasının tamamlanması uzun sürebilir ve çok sayıda küme oluşturabilir.
  • Çıkış kümeleri ve kimlikleri algoritmaya ve girişlere bağlıdır.