ee.Clusterer
软件包在 Earth Engine 中处理无监督分类(或聚类)。这些算法目前基于 Weka 中同名的算法。如需详细了解每个 Clusterer
,请参阅参考文档。
在 Earth Engine 中,聚类器的使用方式与分类器相同。对数据进行分组的一般工作流程如下:
- 组合具有数值属性的特征,以便查找集群。
- 实例化分块器。根据需要设置其参数。
- 使用训练数据训练聚类器。
- 将聚类器应用于图像或地图项集合。
- 为集群添加标签。
训练数据是一个 FeatureCollection
,其中包含将输入到聚类器的属性。与分类器不同,Clusterer
没有输入类值。与分类器一样,训练和应用步骤的数据应具有相同数量的值。将训练好的聚类器应用于图片或表格时,它会为每个像素或地图项分配一个整数聚类 ID。
下面是一个构建和使用 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');
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 个频段 * 10 万个点进行训练时,可能会产生内存不足错误。
- Cobweb 可能需要很长时间才能完成,并且可能会生成大量集群。
- 输出集群及其 ID 取决于算法和输入。