ee.Classifier.smileKNN

Boş bir k-NN sınıflandırıcı oluşturur.

K en yakın komşuya göre sınıflandırma algoritması (k-NN), nesneleri komşularının çoğunluk oylarıyla sınıflandırma yöntemidir. Nesne, en yakın k komşusu arasında en yaygın olan sınıfa atanır (k, genellikle küçük ve tek olan pozitif bir tam sayıdır).

Kullanımİadeler
ee.Classifier.smileKNN(k, searchMethod, metric)Sınıflandırıcı
Bağımsız DeğişkenTürAyrıntılar
kTamsayı, varsayılan: 1Sınıflandırma için komşu sayısı.
searchMethodDize, varsayılan: "AUTO"Arama yöntemi. Aşağıdakiler geçerlidir [AUTO, LINEAR_SEARCH, KD_TREE, COVER_TREE]:

  • `AUTO`: Boyut sayısına bağlı olarak KD_TREE ve COVER_TREE arasında seçim yapar. Özelliklerin boyutu 10'dan azsa KD_TREE kullanılır.
  • `LINEAR_SEARCH`: Daha yüksek boyutlu alanlarda, alan bölümleme yaklaşımlarından (ör. K-D ağaçları) daha iyi performans gösterir.
  • `KD_TREE`: K boyutlu bir alandaki noktaları düzenlemek için alanı bölümlendiren bir veri kümesi yapısı kullanan en yakın komşu arama yöntemi. KD-ağaçları, yüksek boyutlu uzaylarda en yakın komşuyu verimli bir şekilde bulmak için uygun değildir. Genel bir kural olarak, boyut D ise veri kümesindeki nokta sayısı N, N >> 2^D olmalıdır.
  • `COVER_TREE` Cover tree, özellikle küçük içsel boyuta sahip alanlarda verimli olan, genel en yakın komşu araması için kullanılan bir veri yapısıdır.

Mesafe eşitlikleri ve olasılık değerleri için farklı arama yöntemleri arasında sonuçlar değişebilir. Performans ve sonuçlar değişiklik gösterebileceğinden SMILE'ın dokümanlarına ve diğer kaynaklara bakın.

metricDize, varsayılan: "EUCLIDEAN"Kullanılacak mesafe metriği. NOT: KD_TREE (ve düşük boyutlar için AUTO), seçilen metriği kullanmaz. Seçenekler şunlardır:
  • "EUCLIDEAN": Öklid uzaklığı.
  • `MAHALANOBIS`: Mahalanobis uzaklığı.
  • `MANHATTAN`: Manhattan uzaklığı.
  • `BRAYCURTIS`: Bray-Curtis uzaklığı.

Örnekler

Kod Düzenleyici (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 kurulumu

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

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