ee.Classifier.libsvm

تنشئ هذه الدالة مصنّفًا فارغًا لآلة متجه الدعم.

الاستخدامالمرتجعات
ee.Classifier.libsvm(decisionProcedure, svmType, kernelType, shrinking, degree, gamma, coef0, cost, nu, terminationEpsilon, lossEpsilon, oneClass)المصنِّف
الوسيطةالنوعالتفاصيل
decisionProcedureسلسلة، القيمة التلقائية: "التصويت"إجراء اتّخاذ القرار الذي سيتم استخدامه للتصنيف. يجب أن تكون القيمة إما "التصويت" أو "هامش". لا يتم استخدامها للانحدار.
svmTypeسلسلة، القيمة التلقائية: "C_SVC"نوع آلة متجه الدعم. إحدى القيم `C_SVC` أو `NU_SVC` أو `ONE_CLASS` أو `EPSILON_SVR` أو `NU_SVR`.
kernelTypeString, default: "LINEAR"تمثّل هذه السمة نوع النواة. إحدى القيم التالية: LINEAR (u′×v) أو POLY ((γ×u′×v + coef₀)ᵈᵉᵍʳᵉᵉ) أو RBF (exp(-γ×|u-v|²)) أو SIGMOID (tanh(γ×u′×v + coef₀)).
shrinkingقيمة منطقية، القيمة التلقائية: trueما إذا كان يجب استخدام طرق الاستدلال المتقلّصة.
degreeعدد صحيح، القيمة التلقائية: nullتمثّل هذه السمة درجة الدالة المتعددة الحدود. صالحة لنواة POLY.
gammaالعدد العائم، القيمة التلقائية: nullقيمة غاما في دالة النواة. القيمة التلقائية هي مقلوب عدد الميزات. صالحة لنواة POLY وRBF وSIGMOID.
coef0العدد العائم، القيمة التلقائية: nullقيمة coef₀ في دالة kernel. القيمة التلقائية هي 0. صالحة لنواة POLY وSIGMOID.
costالعدد العائم، القيمة التلقائية: nullالمَعلمة "التكلفة" (C) القيمة التلقائية هي 1. لا يمكن استخدامها إلا مع C-SVC وepsilon-SVR وnu-SVR.
nuالعدد العائم، القيمة التلقائية: nullالمَعلمة nu القيمة التلقائية هي 0.5. لا يكون صالحًا إلا مع nu-SVC وone-class SVM وnu-SVR.
terminationEpsilonالعدد العائم، القيمة التلقائية: nullحدّ التفاوت لمعيار الإنهاء (هـ) القيمة التلقائية هي 0.001. لا يسري إلا على epsilon-SVR.
lossEpsilonالعدد العائم، القيمة التلقائية: nullقيمة إبسيلون في دالة الخسارة (p). القيمة التلقائية هي 0.1. لا يسري إلا على epsilon-SVR.
oneClassعدد صحيح، القيمة التلقائية: nullفئة البيانات التدريبية التي سيتم التدريب عليها في آلة متجه الدعم ذات الفئة الواحدة القيمة التلقائية هي 0. لا يمكن استخدامها إلا مع آلة المتجهات الداعمة ذات الفئة الواحدة. القيم المحتملة هي 0 و1. يكون ناتج المصنّف ثنائيًا (0/1) وسيتطابق مع قيمة هذه الفئة للبيانات التي تم تحديدها على أنّها ضمن الفئة.

أمثلة

محرّر الرموز البرمجية (JavaScript)

// 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/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 للحصول على معلومات حول واجهة برمجة التطبيقات Python واستخدام geemap للتطوير التفاعلي.

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/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