お知らせ:
2025 年 4 月 15 日より前に Earth Engine の使用を登録したすべての非商用プロジェクトは、Earth Engine へのアクセスを維持するために
非商用目的での利用資格を確認する必要があります。
ee.Classifier.smileKNN
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
空の k-NN 分類子を作成します。
k 近傍法(k-NN)は、近傍の多数決によってオブジェクトを分類する方法です。オブジェクトは、k 近傍(k は正の整数で、通常は小さく、通常は奇数)の中で最も一般的なクラスに割り当てられます。
用途 | 戻り値 |
---|
ee.Classifier.smileKNN(k, searchMethod, metric) | 分類器 |
引数 | タイプ | 詳細 |
---|
k | 整数。デフォルト: 1 | 分類の近傍数。 |
searchMethod | 文字列、デフォルト: "AUTO" | 検索方法。有効な値は [AUTO、LINEAR_SEARCH、KD_TREE、COVER_TREE] です。AUTO は、ディメンションの数に応じて KD_TREE と COVER_TREE のいずれかを選択します。距離の同点と確率値の検索方法によって、結果が異なる場合があります。パフォーマンスと結果は異なる可能性があるため、SMILE のドキュメントやその他の文献を参照してください。 |
metric | 文字列、デフォルト: 「EUCLIDEAN」 | 使用する距離指標。注: KD_TREE(および低次元の AUTO)では、選択した指標は使用されません。オプションは次のとおりです。
'EUCLIDEAN' - ユークリッド距離。 'MAHALANOBIS' - マハラノビス距離。 'MANHATTAN' - マンハッタン距離。 'BRAYCURTIS' - Bray-Curtis 距離。 |
例
コードエディタ(JavaScript)
// Cloud masking for Landsat 8.
function maskL8sr(image) {
var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0);
var saturationMask = image.select('QA_RADSAT').eq(0);
// Apply the scaling factors to the appropriate bands.
var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
// Replace the original bands with the scaled ones and apply the masks.
return image.addBands(opticalBands, null, true)
.addBands(thermalBands, null, true)
.updateMask(qaMask)
.updateMask(saturationMask);
}
// Map the function over one year of data.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterDate('2020-01-01', '2021-01-01')
.map(maskL8sr);
// Make a median composite.
var composite = collection.median();
// Demonstration labels.
var labels = ee.FeatureCollection('projects/google/demo_landcover_labels')
// Use these bands for classification.
var bands = ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7'];
// The name of the property on the points storing the class label.
var classProperty = 'landcover';
// Sample the composite to generate training data. Note that the
// class label is stored in the 'landcover' property.
var training = composite.select(bands).sampleRegions(
{collection: labels, properties: [classProperty], scale: 30});
// Train a kNN classifier.
var classifier = ee.Classifier.smileKNN(5).train({
features: training,
classProperty: classProperty,
});
// Classify the composite.
var classified = composite.classify(classifier);
Map.setCenter(-122.184, 37.796, 12);
Map.addLayer(classified, {min: 0, max: 2, palette: ['red', 'green', 'blue']});
Python の設定
Python API とインタラクティブな開発での geemap
の使用については、
Python 環境のページをご覧ください。
import ee
import geemap.core as geemap
Colab(Python)
# Cloud masking for Landsat 8.
def mask_l8_sr(image):
qa_mask = image.select('QA_PIXEL').bitwiseAnd(int('11111', 2)).eq(0)
saturation_mask = image.select('QA_RADSAT').eq(0)
# Apply the scaling factors to the appropriate bands.
optical_bands = image.select('SR_B.').multiply(0.0000275).add(-0.2)
thermal_bands = image.select('ST_B.*').multiply(0.00341802).add(149.0)
# Replace the original bands with the scaled ones and apply the masks.
return (
image.addBands(optical_bands, None, True)
.addBands(thermal_bands, None, True)
.updateMask(qa_mask)
.updateMask(saturation_mask)
)
# Map the function over one year of data.
collection = (
ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterDate('2020-01-01', '2021-01-01')
.map(mask_l8_sr)
)
# Make a median composite.
composite = collection.median()
# Demonstration labels.
labels = ee.FeatureCollection('projects/google/demo_landcover_labels')
# Use these bands for classification.
bands = ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7']
# The name of the property on the points storing the class label.
class_property = 'landcover'
# Sample the composite to generate training data. Note that the
# class label is stored in the 'landcover' property.
training = composite.select(bands).sampleRegions(
collection=labels, properties=[class_property], scale=30
)
# Train a kNN classifier.
classifier = ee.Classifier.smileKNN(5).train(
features=training, classProperty=class_property
)
# Classify the composite.
classified = composite.classify(classifier)
m = geemap.Map()
m.set_center(-122.184, 37.796, 12)
m.add_layer(
classified, {'min': 0, 'max': 2, 'palette': ['red', 'green', 'blue']}
)
m
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-07-26 UTC。
[null,null,["最終更新日 2025-07-26 UTC。"],[[["\u003cp\u003eCreates a k-Nearest Neighbors (k-NN) classifier using the SMILE machine learning library within Google Earth Engine.\u003c/p\u003e\n"],["\u003cp\u003eThe classifier is trained using labeled data and can be applied to classify images based on the proximity of pixel values to known classes.\u003c/p\u003e\n"],["\u003cp\u003eUsers can customize the number of neighbors (k), search method, and distance metric for the k-NN algorithm.\u003c/p\u003e\n"],["\u003cp\u003eIncludes JavaScript and Python examples demonstrating classifier training and image classification using Landsat 8 data.\u003c/p\u003e\n"]]],[],null,["# ee.Classifier.smileKNN\n\nCreates an empty k-NN classifier.\n\n\u003cbr /\u003e\n\nThe k-nearest neighbor algorithm (k-NN) is a method for classifying objects by a majority vote of its neighbors, with the object being assigned to the class most common amongst its k nearest neighbors (k is a positive integer, typically small, typically odd).\n\n| Usage | Returns |\n|-----------------------------------------------------------------|------------|\n| `ee.Classifier.smileKNN(`*k* `, `*searchMethod* `, `*metric*`)` | Classifier |\n\n| Argument | Type | Details |\n|----------------|------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `k` | Integer, default: 1 | The number of neighbors for classification. |\n| `searchMethod` | String, default: \"AUTO\" | Search method. The following are valid \\[AUTO, LINEAR_SEARCH, KD_TREE, COVER_TREE\\]. AUTO will choose between KD_TREE and COVER_TREE depending on the dimension count. Results may vary between the different search methods for distance ties and probability values. Since performance and results may vary consult with SMILE's documentation and other literature. |\n| `metric` | String, default: \"EUCLIDEAN\" | The distance metric to use. NOTE: KD_TREE (and AUTO for low dimensions) will not use the metric selected. Options are: 'EUCLIDEAN' - Euclidean distance. 'MAHALANOBIS' - Mahalanobis distance. 'MANHATTAN' - Manhattan distance. 'BRAYCURTIS' - Bray-Curtis distance. |\n\nExamples\n--------\n\n### Code Editor (JavaScript)\n\n```javascript\n// Cloud masking for Landsat 8.\nfunction maskL8sr(image) {\n var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0);\n var saturationMask = image.select('QA_RADSAT').eq(0);\n\n // Apply the scaling factors to the appropriate bands.\n var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);\n var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);\n\n // Replace the original bands with the scaled ones and apply the masks.\n return image.addBands(opticalBands, null, true)\n .addBands(thermalBands, null, true)\n .updateMask(qaMask)\n .updateMask(saturationMask);\n}\n\n// Map the function over one year of data.\nvar collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')\n .filterDate('2020-01-01', '2021-01-01')\n .map(maskL8sr);\n\n// Make a median composite.\nvar composite = collection.median();\n\n// Demonstration labels.\nvar labels = ee.FeatureCollection('projects/google/demo_landcover_labels')\n\n// Use these bands for classification.\nvar bands = ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7'];\n// The name of the property on the points storing the class label.\nvar classProperty = 'landcover';\n\n// Sample the composite to generate training data. Note that the\n// class label is stored in the 'landcover' property.\nvar training = composite.select(bands).sampleRegions(\n {collection: labels, properties: [classProperty], scale: 30});\n\n// Train a kNN classifier.\nvar classifier = ee.Classifier.smileKNN(5).train({\n features: training,\n classProperty: classProperty,\n});\n\n// Classify the composite.\nvar classified = composite.classify(classifier);\nMap.setCenter(-122.184, 37.796, 12);\nMap.addLayer(classified, {min: 0, max: 2, palette: ['red', 'green', 'blue']});\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# Cloud masking for Landsat 8.\ndef mask_l8_sr(image):\n qa_mask = image.select('QA_PIXEL').bitwiseAnd(int('11111', 2)).eq(0)\n saturation_mask = image.select('QA_RADSAT').eq(0)\n\n # Apply the scaling factors to the appropriate bands.\n optical_bands = image.select('SR_B.').multiply(0.0000275).add(-0.2)\n thermal_bands = image.select('ST_B.*').multiply(0.00341802).add(149.0)\n\n # Replace the original bands with the scaled ones and apply the masks.\n return (\n image.addBands(optical_bands, None, True)\n .addBands(thermal_bands, None, True)\n .updateMask(qa_mask)\n .updateMask(saturation_mask)\n )\n\n\n# Map the function over one year of data.\ncollection = (\n ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')\n .filterDate('2020-01-01', '2021-01-01')\n .map(mask_l8_sr)\n)\n\n# Make a median composite.\ncomposite = collection.median()\n\n# Demonstration labels.\nlabels = ee.FeatureCollection('projects/google/demo_landcover_labels')\n\n# Use these bands for classification.\nbands = ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7']\n# The name of the property on the points storing the class label.\nclass_property = 'landcover'\n\n# Sample the composite to generate training data. Note that the\n# class label is stored in the 'landcover' property.\ntraining = composite.select(bands).sampleRegions(\n collection=labels, properties=[class_property], scale=30\n)\n\n# Train a kNN classifier.\nclassifier = ee.Classifier.smileKNN(5).train(\n features=training, classProperty=class_property\n)\n\n# Classify the composite.\nclassified = composite.classify(classifier)\n\nm = geemap.Map()\nm.set_center(-122.184, 37.796, 12)\nm.add_layer(\n classified, {'min': 0, 'max': 2, 'palette': ['red', 'green', 'blue']}\n)\nm\n```"]]