סיווג ללא הדרכה (אשכולות)

החבילה ee.Clusterer מטפלת בסיווג ללא הדרכה (או קיבוץ) ב-Earth Engine. האלגוריתמים האלה מבוססים כרגע על האלגוריתמים בעלי אותו שם ב-Weka. פרטים נוספים על כל Clusterer זמינים במסמכי העזרה.

נעשה שימוש באשכולנים באותו אופן שבו נעשה שימוש במסווגים ב-Earth Engine. תהליך העבודה הכללי ליצירת אשכולות הוא:

  1. איסוף תכונות עם מאפיינים מספריים שבהם אפשר למצוא אשכולות.
  2. יוצרים מכשיר לקיבוץ. מגדירים את הפרמטרים שלו לפי הצורך.
  3. אימון הכלי ליצירת אשכולות באמצעות נתוני האימון.
  4. מחילים את הכלי ליצירת אשכולות על תמונה או על אוסף תכונות.
  5. מוסיפים תוויות לאשכולות.

נתוני האימון הם FeatureCollection עם מאפיינים שייכנסו כקלט למקבץ. בניגוד למסווגים, ל-Clusterer אין ערך של סיווג קלט. כמו בסוגי הסיווג, מספר הערכים בנתונים של השלבים 'אימון' ו'החלה' אמור להיות זהה. כשמחילים אשכול מאומן על תמונה או טבלה, הוא מקצה מזהה אשכול שלם לכל פיקסל או מאפיין.

דוגמה פשוטה ליצירה של ee.Clusterer ולהשתמש בו:

Code Editor‏ (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 מפורט מידע על Python API ועל השימוש ב-geemap לפיתוח אינטראקטיבי.

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 קבוצות * 100,000 נקודות יכול לגרום לשגיאה מסוג 'אין מספיק זיכרון'.
  • תהליך היצירה של Cobweb יכול להימשך זמן רב, והוא יכול ליצור מספר גדול של אשכולות.
  • אשכולות הפלט והמזהים שלהם תלויים באלגוריתם ובקלטים.