お知らせ:
2025 年 4 月 15 日より前に Earth Engine の使用を登録したすべての非商用プロジェクトは、Earth Engine へのアクセスを維持するために
非商用目的での利用資格を確認する必要があります。
教師なし分類(クラスタリング)
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
ee.Clusterer
パッケージは、Earth Engine で教師なし分類(またはクラスタリング)を処理します。現在、これらのアルゴリズムは Weka の同じ名前のアルゴリズムに基づいています。各 Clusterer
の詳細については、リファレンス ドキュメントをご覧ください。
クラスタリングは、Earth Engine の分類子と同じ方法で使用されます。クラスタリングに関する一般的なワークフローは次のとおりです。
- クラスタを見つける数値プロパティを持つ特徴をアセンブルします。
- クラスタリング エンジンをインスタンス化します。必要に応じてパラメータを設定します。
- トレーニング データを使用してクラスタリング アルゴリズムをトレーニングします。
- クラスタリングを画像または特徴コレクションに適用します。
- クラスタにラベルを付けます。
トレーニング データは、クラスタリング ツールに入力されるプロパティを持つ FeatureCollection
です。分類システムとは異なり、Clusterer
には入力クラス値がありません。分類子と同様に、トレーニング ステップと適用ステップのデータの値の数は同じである必要があります。トレーニング済みのクラスタ化ツールを画像またはテーブルに適用すると、各ピクセルまたは特徴に整数のクラスタ ID が割り当てられます。
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 バンド * 10 万ポイント程度のトレーニングでも、メモリ不足エラーが発生する可能性があります。
- Cobweb の完了には時間がかかることがあります。また、大量のクラスタが生成される可能性があります。
- 出力クラスタとその ID は、アルゴリズムと入力によって異なります。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-07-25 UTC。
[null,null,["最終更新日 2025-07-25 UTC。"],[[["\u003cp\u003eThe \u003ccode\u003eee.Clusterer\u003c/code\u003e package in Earth Engine enables unsupervised classification (clustering) using algorithms from Weka.\u003c/p\u003e\n"],["\u003cp\u003eThe clustering workflow involves assembling features, instantiating and training a clusterer, applying it to data, and labeling the resulting clusters.\u003c/p\u003e\n"],["\u003cp\u003eTraining data for clustering is a \u003ccode\u003eFeatureCollection\u003c/code\u003e with numeric properties, and the output assigns integer cluster IDs to pixels or features.\u003c/p\u003e\n"],["\u003cp\u003eCluster results can vary based on input order and the specific algorithm used, and large datasets may lead to memory errors.\u003c/p\u003e\n"],["\u003cp\u003eEarth Engine provides various clustering algorithms, each with its own characteristics and potential limitations, such as Cobweb's runtime and cluster count.\u003c/p\u003e\n"]]],["`ee.Clusterer` in Earth Engine performs unsupervised classification. The process involves assembling features, instantiating a clusterer (like `wekaKMeans`), and training it with a `FeatureCollection`. The trained clusterer is then applied to an image or feature collection, assigning an integer cluster ID to each element. The provided example loads Landsat data, samples it for training, and applies a trained clusterer to visualize the resulting clusters. The number of features in the dataset can impact the performance and stability of the clusterer.\n"],null,["# Unsupervised Classification (clustering)\n\nThe `ee.Clusterer` package handles unsupervised classification (or\n*clustering* ) in Earth Engine. These algorithms are currently based on the\nalgorithms with the same name in [Weka](http://www.cs.waikato.ac.nz/ml/weka/).\nMore details about each `Clusterer` are available in the\n[reference docs](/earth-engine/apidocs).\n\nClusterers are used in the same manner as classifiers in Earth Engine. The general\nworkflow for clustering is:\n\n1. Assemble features with numeric properties in which to find clusters.\n2. Instantiate a clusterer. Set its parameters if necessary.\n3. Train the clusterer using the training data.\n4. Apply the clusterer to an image or feature collection.\n5. Label the clusters.\n\nThe training data is a `FeatureCollection` with properties that will be\ninput to the clusterer. Unlike classifiers, there is no input class value for an\n`Clusterer`. Like classifiers, the data for the train and apply steps are\nexpected to have the same number of values. When a trained clusterer is applied to an image\nor table, it assigns an integer cluster ID to each pixel or feature.\n\nHere is a simple example of building and using an `ee.Clusterer`:\n\n### Code Editor (JavaScript)\n\n```javascript\n// Define a region in which to generate a segmented map.\nvar region = ee.Geometry.Rectangle(29.7, 30, 32.5, 31.7);\n\n// Load a Landsat composite for input.\nvar input = ee.ImageCollection('LANDSAT/COMPOSITES/C02/T1_L2_32DAY')\n .filterDate('2001-05', '2001-06')\n .first()\n .clip(region);\n\n// Display the sample region.\nMap.setCenter(31.5, 31.0, 8);\nMap.addLayer(ee.Image().paint(region, 0, 2), {}, 'region');\n\n// Make the training dataset.\nvar training = input.sample({\n region: region,\n scale: 30,\n numPixels: 5000\n});\n\n// Instantiate the clusterer and train it.\nvar clusterer = ee.Clusterer.wekaKMeans(15).train(training);\n\n// Cluster the input using the trained clusterer.\nvar result = input.cluster(clusterer);\n\n// Display the clusters with random colors.\nMap.addLayer(result.randomVisualizer(), {}, 'clusters');\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\n# Define a region in which to generate a segmented map.\nregion = ee.Geometry.Rectangle(29.7, 30, 32.5, 31.7)\n\n# Load a Landsat composite for input.\ninput = (\n ee.ImageCollection('LANDSAT/COMPOSITES/C02/T1_L2_32DAY')\n .filterDate('2001-05', '2001-06')\n .first()\n .clip(region)\n)\n\n# Display the sample region.\nm = geemap.Map()\nm.set_center(31.5, 31.0, 8)\nm.add_layer(ee.Image().paint(region, 0, 2), {}, 'region')\n\n# Make the training dataset.\ntraining = input.sample(region=region, scale=30, numPixels=5000)\n\n# Instantiate the clusterer and train it.\nclusterer = ee.Clusterer.wekaKMeans(15).train(training)\n\n# Cluster the input using the trained clusterer.\nresult = input.cluster(clusterer)\n\n# Display the clusters with random colors.\nm.add_layer(result.randomVisualizer(), {}, 'clusters')\nm\n```\n\nPlease note:\n\n- The same inputs should always produce the same outputs, but reordering the inputs can change the results.\n- Training with as few as 10 bands \\* 100k points can produce an Out Of Memory error.\n- Cobweb can take a long time to finish and can produce a large number of clusters.\n- The output clusters and their IDs are dependent on the algorithm and inputs."]]