การจัดประเภทแบบไม่ควบคุมดูแล (การจัดกลุ่ม)

แพ็กเกจ 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 ย่าน * 100,000 จุดอาจทำให้เกิดข้อผิดพลาด "หน่วยความจำไม่เพียงพอ"
  • เว็บแมงมุมอาจใช้เวลานานและสร้างคลัสเตอร์จํานวนมาก
  • คลัสเตอร์เอาต์พุตและรหัสของคลัสเตอร์จะขึ้นอยู่กับอัลกอริทึมและอินพุต