طبقه بندی بدون نظارت (خوشه بندی)

بسته ee.Clusterer دسته بندی (یا خوشه بندی ) بدون نظارت را در Earth Engine انجام می دهد. این الگوریتم‌ها در حال حاضر بر اساس الگوریتم‌هایی با همین نام در Weka هستند. جزئیات بیشتر در مورد هر Clusterer در اسناد مرجع موجود است.

خوشه ها به همان روشی که طبقه بندی کننده ها در Earth Engine استفاده می شوند. گردش کار کلی برای خوشه بندی به صورت زیر است:

  1. ویژگی هایی را با ویژگی های عددی جمع آوری کنید تا در آنها خوشه ها را پیدا کنید.
  2. نمونه سازی یک خوشه. در صورت لزوم پارامترهای آن را تنظیم کنید.
  3. با استفاده از داده های آموزشی، خوشه را آموزش دهید.
  4. خوشه را روی یک تصویر یا مجموعه ویژگی اعمال کنید.
  5. خوشه ها را برچسب بزنید.

داده های آموزشی یک FeatureCollection با ویژگی هایی است که به کلاستر وارد می شود. برخلاف طبقه‌بندی‌کننده‌ها، هیچ مقدار کلاس ورودی برای Clusterer وجود ندارد. مانند طبقه‌بندی‌کننده‌ها، انتظار می‌رود داده‌های مربوط به قطار و مراحل اعمالی دارای مقادیر یکسانی باشند. هنگامی که یک خوشه آموزش دیده روی یک تصویر یا جدول اعمال می شود، یک شناسه خوشه عدد صحیح را به هر پیکسل یا ویژگی اختصاص می دهد.

در اینجا یک مثال ساده از ساختن و استفاده از ee.Clusterer آورده شده است:

ویرایشگر کد (جاوا اسکریپت)

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

راه اندازی پایتون

برای اطلاعات در مورد API پایتون و استفاده از geemap برای توسعه تعاملی به صفحه محیط پایتون مراجعه کنید.

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

لطفا توجه داشته باشید:

  • ورودی‌های یکسان باید همیشه خروجی‌های یکسانی تولید کنند، اما مرتب کردن مجدد ورودی‌ها می‌تواند نتایج را تغییر دهد.
  • تمرین با کمتر از 10 باند * 100 هزار امتیاز می تواند خطای Out Of Memory ایجاد کند.
  • تار عنکبوت ممکن است زمان زیادی طول بکشد تا به پایان برسد و تعداد زیادی خوشه تولید کند.
  • خوشه های خروجی و شناسه های آنها به الگوریتم و ورودی ها بستگی دارد.