बिना निगरानी वाला क्लासिफ़िकेशन (क्लस्टरिंग)

ee.Clusterer पैकेज, Earth Engine में बिना निगरानी वाली कैटगरी तय करने (या क्लस्टर करने) की सुविधा देता है. फ़िलहाल, ये एल्गोरिदम Weka में मौजूद, एक ही नाम वाले एल्गोरिदम पर आधारित हैं. हर Clusterer के बारे में ज़्यादा जानकारी, रेफ़रंस दस्तावेज़ों में उपलब्ध है.

क्लस्टर करने वाले एल्गोरिदम का इस्तेमाल, Earth Engine में कैटगरी तय करने वाले एल्गोरिदम की तरह ही किया जाता है. क्लस्टर करने का सामान्य वर्कफ़्लो यह है:

  1. संख्या वाली प्रॉपर्टी के साथ सुविधाओं को इकट्ठा करें, ताकि क्लस्टर ढूंढे जा सकें.
  2. क्लस्टर बनाने वाले टूल को इंस्टैंशिएट करें. अगर ज़रूरी हो, तो इसके पैरामीटर सेट करें.
  3. ट्रेनिंग डेटा का इस्तेमाल करके, क्लस्टर बनाने वाले मॉडल को ट्रेन करें.
  4. क्लस्टर करने वाले टूल को किसी इमेज या सुविधा के कलेक्शन पर लागू करें.
  5. क्लस्टर को लेबल करें.

ट्रेनिंग डेटा, ऐसी प्रॉपर्टी वाला FeatureCollection होता है जिन्हें क्लस्टर करने वाले टूल में डाला जाएगा. क्लासिफ़ायर के उलट, किसी Clusterer के लिए इनपुट क्लास की कोई वैल्यू नहीं होती. क्लासिफ़ायर की तरह, ट्रेन और लागू करने के चरणों के डेटा में वैल्यू की संख्या एक जैसी होनी चाहिए. जब किसी इमेज या टेबल पर ट्रेन किया गया क्लस्टर करने वाला टूल लागू किया जाता है, तो वह हर पिक्सल या सुविधा को एक पूर्णांक क्लस्टर आईडी असाइन करता है.

यहां ee.Clusterer बनाने और उसका इस्तेमाल करने का एक आसान उदाहरण दिया गया है:

कोड एडिटर (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');

Python सेटअप

Python API के बारे में जानकारी पाने और इंटरैक्टिव डेवलपमेंट के लिए geemap का इस्तेमाल करने के लिए, Python एनवायरमेंट पेज देखें.

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

कृपया ध्यान दें:

  • एक जैसे इनपुट से हमेशा एक जैसे आउटपुट मिलने चाहिए. हालांकि, इनपुट का क्रम बदलने से नतीजे बदल सकते हैं.
  • 10 बैंड * 1 लाख पॉइंट के साथ ट्रेनिंग करने पर, 'मेमोरी खत्म हो गई' गड़बड़ी का मैसेज दिख सकता है.
  • कोबवेब को पूरा होने में काफ़ी समय लग सकता है. साथ ही, इससे बड़ी संख्या में क्लस्टर बन सकते हैं.
  • आउटपुट क्लस्टर और उनके आईडी, एल्गोरिदम और इनपुट पर निर्भर करते हैं.