ee.Classifier.libsvm

طبقه‌بندی‌کننده «ماشین بردار پشتیبان» خالی ایجاد می‌کند.

کاربردبازگشتی‌ها
ee.Classifier.libsvm(decisionProcedure, svmType, kernelType, shrinking, degree, gamma, coef0, cost, nu, terminationEpsilon, lossEpsilon, oneClass)طبقه‌بندی‌کننده
متغیر مستقلنوعجزئیات
decisionProcedureرشته، پیش‌فرض: «رأی‌گیری»رویه تصمیم‌گیری برای استفاده در طبقه‌بندی. «رأی‌گیری» یا «حاشیه». برای رگرسیون استفاده نمی‌شود.
svmTypeرشته، پیش‌فرض: «C_SVC»نوع SVM. یکی از `C_SVC`‏، `NU_SVC`‏، `ONE_CLASS`‏، `EPSILON_SVR`‏، یا `NU_SVR`.
kernelTypeرشته، پیش‌فرض: «خطی»نوع هسته. یکی از LINEAR (u′×v)،‏ POLY ((γ×u′×v + coef₀)ᵈᵉᵍʳᵉᵉ)،‏ RBF (exp(-γ×|u-v|²))، یا SIGMOID (tanh(γ×u′×v + coef₀)).
shrinkingبولی، پیش‌فرض: درستاینکه از اکتشافی‌های کوچک‌شونده استفاده شود یا نه.
degreeعدد صحیح، پیش‌فرض: تهیدرجه چندجمله‌ای. برای هسته‌های POLY معتبر است.
gammaشناور، پیش‌فرض: خالیمقدار گاما در تابع هسته. به‌طور پیش‌فرض، وارون تعداد ویژگی‌ها است. برای هسته‌های POLY،‏ RBF، و SIGMOID معتبر است.
coef0شناور، پیش‌فرض: خالیمقدار coef₀ در تابع هسته. پیش‌فرض ۰ است. برای هسته‌های POLY و SIGMOID معتبر است.
costشناور، پیش‌فرض: خالیپارامتر هزینه (C). پیش‌فرض ۱ است. فقط برای C-SVC،‏ epsilon-SVR، و nu-SVR معتبر است.
nuشناور، پیش‌فرض: خالیپارامتر nu. پیش‌فرض‌ها به ۰٫۵. فقط برای nu-SVC،‏ SVM تک‌کلاس، و nu-SVR معتبر است.
terminationEpsilonشناور، پیش‌فرض: خالیتلورانس معیار خاتمه (e). پیش‌فرض ۰٫۰۰۱ است. فقط برای epsilon-SVR معتبر است.
lossEpsilonشناور، پیش‌فرض: خالیاپسیلون در تابع زیان (p). پیش‌فرض‌ها به ۰٫۱. فقط برای epsilon-SVR معتبر است.
oneClassعدد صحیح، پیش‌فرض: تهیکلاس داده‌های آموزشی که در SVM تک‌کلاس آموزش داده می‌شود. پیش‌فرض ۰ است. فقط برای SVM تک‌کلاسی معتبر است. مقادیر ممکن ۰ و ۱ است. خروجی طبقه‌بندی‌کننده دودویی (۰/۱) است و با این مقدار کلاس برای داده‌هایی که تعیین شده است در کلاس باشند مطابقت خواهد داشت.

مثال‌ها

ویرایشگر کد (جاوا اسکریپت)

// A Sentinel-2 surface reflectance image, reflectance bands selected,
// serves as the source for training and prediction in this contrived example.
var img = ee.Image('COPERNICUS/S2_SR_HARMONIZED/20210109T185751_20210109T185931_T10SEG')
              .select('B.*');

// ESA WorldCover land cover map, used as label source in classifier training.
var lc = ee.Image('ESA/WorldCover/v100/2020');

// Remap the land cover class values to a 0-based sequential series.
var classValues = [10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 100];
var remapValues = ee.List.sequence(0, 10);
var label = 'lc';
lc = lc.remap(classValues, remapValues).rename(label).toByte();

// Add land cover as a band of the reflectance image and sample 100 pixels at
// 10 m scale from each land cover class within a region of interest.
var roi = ee.Geometry.Rectangle(-122.347, 37.743, -122.024, 37.838);
var sample = img.addBands(lc).stratifiedSample({
  numPoints: 100,
  classBand: label,
  region: roi,
  scale: 10,
  geometries: true
});

// Add a random value field to the sample and use it to approximately split 80%
// of the features into a training set and 20% into a validation set.
sample = sample.randomColumn();
var trainingSample = sample.filter('random <= 0.8');
var validationSample = sample.filter('random > 0.8');

// Train an SVM classifier (C-SVM classification, voting decision procedure,
// linear kernel) from the training sample.
var trainedClassifier = ee.Classifier.libsvm().train({
  features: trainingSample,
  classProperty: label,
  inputProperties: img.bandNames()
});

// Get information about the trained classifier.
print('Results of trained classifier', trainedClassifier.explain());

// Get a confusion matrix and overall accuracy for the training sample.
var trainAccuracy = trainedClassifier.confusionMatrix();
print('Training error matrix', trainAccuracy);
print('Training overall accuracy', trainAccuracy.accuracy());

// Get a confusion matrix and overall accuracy for the validation sample.
validationSample = validationSample.classify(trainedClassifier);
var validationAccuracy = validationSample.errorMatrix(label, 'classification');
print('Validation error matrix', validationAccuracy);
print('Validation accuracy', validationAccuracy.accuracy());

// Classify the reflectance image from the trained classifier.
var imgClassified = img.classify(trainedClassifier);

// Add the layers to the map.
var classVis = {
  min: 0,
  max: 10,
  palette: ['006400' ,'ffbb22', 'ffff4c', 'f096ff', 'fa0000', 'b4b4b4',
            'f0f0f0', '0064c8', '0096a0', '00cf75', 'fae6a0']
};
Map.setCenter(-122.184, 37.796, 12);
Map.addLayer(img, {bands: ['B11', 'B8', 'B3'], min: 100, max: 3500}, 'img');
Map.addLayer(lc, classVis, 'lc');
Map.addLayer(imgClassified, classVis, 'Classified');
Map.addLayer(roi, {color: 'white'}, 'ROI', false, 0.5);
Map.addLayer(trainingSample, {color: 'black'}, 'Training sample', false);
Map.addLayer(validationSample, {color: 'white'}, 'Validation sample', false);

راه‌اندازی Python

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط Python مراجعه کنید.

import ee
import geemap.core as geemap

Colab (Python)

# A Sentinel-2 surface reflectance image, reflectance bands selected,
# serves as the source for training and prediction in this contrived example.
img = ee.Image(
    'COPERNICUS/S2_SR_HARMONIZED/20210109T185751_20210109T185931_T10SEG'
).select('B.*')

# ESA WorldCover land cover map, used as label source in classifier training.
lc = ee.Image('ESA/WorldCover/v100/2020')

# Remap the land cover class values to a 0-based sequential series.
class_values = [10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 100]
remap_values = ee.List.sequence(0, 10)
label = 'lc'
lc = lc.remap(class_values, remap_values).rename(label).toByte()

# Add land cover as a band of the reflectance image and sample 100 pixels at
# 10 m scale from each land cover class within a region of interest.
roi = ee.Geometry.Rectangle(-122.347, 37.743, -122.024, 37.838)
sample = img.addBands(lc).stratifiedSample(
    numPoints=100, classBand=label, region=roi, scale=10, geometries=True
)

# Add a random value field to the sample and use it to approximately split 80%
# of the features into a training set and 20% into a validation set.
sample = sample.randomColumn()
training_sample = sample.filter('random <= 0.8')
validation_sample = sample.filter('random > 0.8')

# Train an SVM classifier (C-SVM classification, voting decision procedure,
# linear kernel) from the training sample.
trained_classifier = ee.Classifier.libsvm().train(
    features=training_sample,
    classProperty=label,
    inputProperties=img.bandNames(),
)

# Get information about the trained classifier.
display('Results of trained classifier', trained_classifier.explain())

# Get a confusion matrix and overall accuracy for the training sample.
train_accuracy = trained_classifier.confusionMatrix()
display('Training error matrix', train_accuracy)
display('Training overall accuracy', train_accuracy.accuracy())

# Get a confusion matrix and overall accuracy for the validation sample.
validation_sample = validation_sample.classify(trained_classifier)
validation_accuracy = validation_sample.errorMatrix(label, 'classification')
display('Validation error matrix', validation_accuracy)
display('Validation accuracy', validation_accuracy.accuracy())

# Classify the reflectance image from the trained classifier.
img_classified = img.classify(trained_classifier)

# Add the layers to the map.
class_vis = {
    'min': 0,
    'max': 10,
    'palette': [
        '006400',
        'ffbb22',
        'ffff4c',
        'f096ff',
        'fa0000',
        'b4b4b4',
        'f0f0f0',
        '0064c8',
        '0096a0',
        '00cf75',
        'fae6a0',
    ],
}
m = geemap.Map()
m.set_center(-122.184, 37.796, 12)
m.add_layer(
    img, {'bands': ['B11', 'B8', 'B3'], 'min': 100, 'max': 3500}, 'img'
)
m.add_layer(lc, class_vis, 'lc')
m.add_layer(img_classified, class_vis, 'Classified')
m.add_layer(roi, {'color': 'white'}, 'ROI', False, 0.5)
m.add_layer(training_sample, {'color': 'black'}, 'Training sample', False)
m.add_layer(
    validation_sample, {'color': 'white'}, 'Validation sample', False
)
m