के-निकटतम पड़ोसी एल्गोरिदम (के-एनएन), किसी ऑब्जेक्ट को उसके पड़ोसियों के बहुमत वोट के आधार पर क्लासिफ़ाई करने का एक तरीका है. इसमें ऑब्जेक्ट को उस क्लास में असाइन किया जाता है जो उसके k निकटतम पड़ोसियों में सबसे आम है. k एक पॉज़िटिव पूर्णांक है, जो आम तौर पर छोटा और विषम होता है.
| इस्तेमाल | रिटर्न |
|---|---|
ee.Classifier.smileKNN(k, searchMethod, metric) | क्लासिफ़ायर |
| आर्ग्यूमेंट | टाइप | विवरण |
|---|---|---|
k | पूर्णांक, डिफ़ॉल्ट: 1 | क्लासिफ़िकेशन के लिए आस-पास के डेटा पॉइंट की संख्या. |
searchMethod | स्ट्रिंग, डिफ़ॉल्ट: "AUTO" | खोज का तरीका. ये मान्य हैं [AUTO, LINEAR_SEARCH, KD_TREE, COVER_TREE]:
दूरी के आधार पर टाई होने वाले नतीजों और संभावना की वैल्यू के लिए, खोज के अलग-अलग तरीकों के हिसाब से नतीजे अलग-अलग हो सकते हैं. परफ़ॉर्मेंस और नतीजे अलग-अलग हो सकते हैं. इसलिए, SMILE के दस्तावेज़ और अन्य साहित्य देखें. |
metric | स्ट्रिंग, डिफ़ॉल्ट: "EUCLIDEAN" | दूरी की मेट्रिक का इस्तेमाल करना. ध्यान दें: KD_TREE (और कम डाइमेंशन के लिए AUTO) में, चुनी गई मेट्रिक का इस्तेमाल नहीं किया जाएगा. इसके विकल्प:
|
उदाहरण
कोड एडिटर (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']});
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