Phân loại không giám sát (phân cụm)

Gói ee.Clusterer xử lý việc phân loại không giám sát (hoặc nhóm) trong Earth Engine. Các thuật toán này hiện dựa trên các thuật toán cùng tên trong Weka. Bạn có thể xem thêm thông tin chi tiết về từng Clusterer trong tài liệu tham khảo.

Các thuật toán phân cụm được sử dụng giống như các thuật toán phân loại trong Earth Engine. Quy trình chung để phân cụm là:

  1. Tập hợp các đặc điểm có thuộc tính dạng số để tìm cụm.
  2. Tạo thực thể cho trình tạo cụm. Đặt các thông số của lớp này nếu cần.
  3. Huấn luyện thuật toán phân cụm bằng dữ liệu huấn luyện.
  4. Áp dụng thuật toán phân cụm cho một hình ảnh hoặc bộ sưu tập tính năng.
  5. Gắn nhãn cho các cụm.

Dữ liệu huấn luyện là một FeatureCollection có các thuộc tính sẽ được đưa vào trình tạo cụm. Không giống như các thuật toán phân loại, không có giá trị lớp đầu vào nào cho Clusterer. Giống như các thuật toán phân loại, dữ liệu cho các bước huấn luyện và áp dụng dự kiến sẽ có cùng số lượng giá trị. Khi một thuật toán phân cụm đã huấn luyện được áp dụng cho một hình ảnh hoặc bảng, thuật toán này sẽ gán một mã nhận dạng cụm số nguyên cho mỗi điểm ảnh hoặc đặc điểm.

Sau đây là ví dụ đơn giản về cách tạo và sử dụng ee.Clusterer:

Trình soạn thảo mã (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');

Thiết lập Python

Hãy xem trang Môi trường Python để biết thông tin về API Python và cách sử dụng geemap để phát triển tương tác.

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

Xin lưu ý:

  • Cùng một dữ liệu đầu vào phải luôn tạo ra cùng một dữ liệu đầu ra, nhưng việc sắp xếp lại dữ liệu đầu vào có thể thay đổi kết quả.
  • Việc huấn luyện với chỉ 10 dải * 100 nghìn điểm có thể gây ra lỗi Hết bộ nhớ.
  • Phương pháp mạng nhện có thể mất nhiều thời gian để hoàn tất và có thể tạo ra một số lượng lớn cụm.
  • Các cụm đầu ra và mã nhận dạng của các cụm này phụ thuộc vào thuật toán và dữ liệu đầu vào.