Ogłoszenie: wszystkie projekty niekomercyjne zarejestrowane do korzystania z Earth Engine przed
15 kwietnia 2025 r. muszą
potwierdzić spełnianie warunków użycia niekomercyjnego, aby zachować dostęp. Jeśli nie przejdziesz weryfikacji do 26 września 2025 r., Twój dostęp może zostać wstrzymany.
ee.Classifier.smileKNN
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Tworzy pusty klasyfikator k-NN.
Algorytm k-najbliższych sąsiadów (k-NN) to metoda klasyfikowania obiektów na podstawie głosowania większości sąsiadów. Obiekt jest przypisywany do klasy najczęściej występującej wśród jego k najbliższych sąsiadów (k to dodatnia liczba całkowita, zwykle mała i nieparzysta).
| Wykorzystanie | Zwroty |
|---|
ee.Classifier.smileKNN(k, searchMethod, metric) | Klasyfikator |
| Argument | Typ | Szczegóły |
|---|
k | Liczba całkowita, domyślnie: 1 | Liczba sąsiadów do klasyfikacji. |
searchMethod | Ciąg znaków, domyślnie: „AUTO” | Metoda wyszukiwania. Dozwolone wartości to [AUTO, LINEAR_SEARCH, KD_TREE, COVER_TREE].
W zależności od liczby wymiarów funkcja AUTO wybierze KD_TREE lub COVER_TREE. Wyniki mogą się różnić w zależności od metody wyszukiwania w przypadku remisów dotyczących odległości i wartości prawdopodobieństwa. Wydajność i wyniki mogą się różnić, dlatego zapoznaj się z dokumentacją SMILE i innymi materiałami. |
metric | Ciąg znaków, domyślnie: „EUCLIDEAN” | Wskaźnik odległości do użycia. UWAGA: KD_TREE (i AUTO w przypadku małej liczby wymiarów) nie używa wybranego rodzaju danych. Dostępne opcje:
'MAHALANOBIS' – odległość Mahalanobisa.
„MANHATTAN” – odległość w metryce Manhattan.
'BRAYCURTIS' – odległość Braya-Curtisa. |
Przykłady
Edytor kodu (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']});
Konfiguracja Pythona
Informacje o interfejsie Python API i używaniu geemap do interaktywnego programowania znajdziesz na stronie
Środowisko 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
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-26 UTC.
[null,null,["Ostatnia aktualizacja: 2025-07-26 UTC."],[],[]]