求在GEE上提取果园面积并验证的码

求在GEE上用SVM,SAM,RF,CNN提取果园面积并验证的代码,任意一个方法都可,比较急,求,帮,帮,忙!

引用chatGPT作答,以下是在Google Earth Engine (GEE)上使用不同的算法提取果园面积并进行验证的代码示例:

1.支持向量机 (SVM):

// 定义 AOI (感兴趣区域)
var aoi = ee.Geometry.Rectangle([xmin, ymin, xmax, ymax]);

// 加载 Landsat 8 遥感影像
var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_TOA")
          .filterBounds(aoi)
          .filterDate('2018-01-01', '2018-12-31');

// 加载水果园地物分类样本点
var orchardSamples = ee.FeatureCollection('users/your_username/orchard_samples');

// 选择要素属性和分类标签
var bands = ['B2', 'B3', 'B4', 'B5', 'B6', 'B7'];
var label = 'class';

// 将样本数据集拆分为训练和测试数据集
var split = 0.7;
var training = orchardSamples.sample({
  region: aoi,
  scale: 30,
  numPixels: 500,
  seed: 0,
  geometries: true
}).filterMetadata('random', 'less_than', split);

var testing = orchardSamples.sample({
  region: aoi,
  scale: 30,
  numPixels: 500,
  seed: 1,
  geometries: true
}).filterMetadata('random', 'not_less_than', split);

// 训练分类器
var classifier = ee.Classifier.libsvm({
  kernelType: 'RBF',
  gamma: 0.5,
  cost: 10
}).train({
  features: training,
  classProperty: label,
  inputProperties: bands
});

// 对测试数据进行分类
var classified = l8.select(bands).classify(classifier);

// 将分类结果可视化
Map.addLayer(classified, {min: 0, max: 1, palette: ['green', 'red']}, 'SVM Classification');

// 计算混淆矩阵和精度
var testAccuracy = testing
  .classify(classifier)
  .errorMatrix(label, 'classification')
  .accuracy();
print('SVM Test Accuracy: ', testAccuracy);

// 提取果园面积
var orchardArea = classified.eq(1).multiply(ee.Image.pixelArea()).divide(1e4)
  .reduceRegion({
    reducer: ee.Reducer.sum(),
    geometry: aoi,
    scale: 30,
    maxPixels: 1e9
  });
print('Orchard Area (ha): ', orchardArea);

2.谱角匹配 (SAM):

// 定义 AOI (感兴趣区域)
var aoi = ee.Geometry.Rectangle([xmin, ymin, xmax, ymax]);

// 加载 Landsat 8 遥感影像
var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_TOA")
          .filterBounds(aoi)
          .filterDate('2018-01-01', '2018-12-31');

// 加载水果园地物分类样本点
var orchardSamples = ee.FeatureCollection('users/your_username/orchard_samples');

// 选择要素属性和分类标签
var bands = ['B2','B3', 'B4', 'B5', 'B6', 'B7'];
var label = 'class';

// 将样本数据集拆分为训练和测试数据集
var split = 0.7;
var training = orchardSamples.sample({
  region: aoi,
  scale: 30,
  numPixels: 500,
  seed: 0,
  geometries: true
}).filterMetadata('random', 'less_than', split);

var testing = orchardSamples.sample({
  region: aoi,
  scale: 30,
  numPixels: 500,
  seed: 1,
  geometries: true
}).filterMetadata('random', 'not_less_than', split);

// 训练分类器
var classifier = ee.Classifier.sam({
  kernelType: 'linear',
  nSamplings: 10,
  scale: 100
}).train({
  features: training,
  classProperty: label,
  inputProperties: bands
});

// 对测试数据进行分类
var classified = l8.select(bands).classify(classifier);

// 将分类结果可视化
Map.addLayer(classified, {min: 0, max: 1, palette: ['green', 'red']}, 'SAM Classification');

// 计算混淆矩阵和精度
var testAccuracy = testing
  .classify(classifier)
  .errorMatrix(label, 'classification')
  .accuracy();
print('SAM Test Accuracy: ', testAccuracy);

// 提取果园面积
var orchardArea = classified.eq(1).multiply(ee.Image.pixelArea()).divide(1e4)
  .reduceRegion({
    reducer: ee.Reducer.sum(),
    geometry: aoi,
    scale: 30,
    maxPixels: 1e9
  });
print('Orchard Area (ha): ', orchardArea);

3.随机森林 (RF):

// 定义 AOI (感兴趣区域)
var aoi = ee.Geometry.Rectangle([xmin, ymin, xmax, ymax]);

// 加载 Landsat 8 遥感影像
var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_TOA")
          .filterBounds(aoi)
          .filterDate('2018-01-01', '2018-12-31');

// 加载水果园地物分类样本点
var orchardSamples = ee.FeatureCollection('users/your_username/orchard_samples');

// 选择要素属性和分类标签
var bands = ['B2', 'B3', 'B4', 'B5', 'B6', 'B7'];
var label = 'class';

// 将样本数据集拆分为训练和测试数据集
var split = 0.7;
var training = orchardSamples.sample({
  region: aoi,
  scale: 30,
  numPixels: 500,
  seed: 0,
  geometries: true
}).filterMetadata('random', 'less_than', split);

var testing = orchardSamples.sample({
  region: aoi,
  scale: 30,
  numPixels: 500,
  seed: 1,
  geometries: true
}).filterMetadata('random', 'not_less_than', split);

// 训练分类器
var classifier = ee.Classifier.randomForest({
  numberOfTrees: 100,
  variablesPerSplit: 6,
  minLeafPopulation
var classified = l8.select(bands).classify(classifier);

// 将分类结果可视化
Map.addLayer(classified, {min: 0, max: 1, palette: ['green', 'red']}, 'RF Classification');

// 计算混淆矩阵和精度
var testAccuracy = testing
.classify(classifier)
.errorMatrix(label, 'classification')
.accuracy();
print('RF Test Accuracy: ', testAccuracy);

// 提取果园面积
var orchardArea = classified.eq(1).multiply(ee.Image.pixelArea()).divide(1e4)
.reduceRegion({
reducer: ee.Reducer.sum(),
geometry: aoi,
scale: 30,
maxPixels: 1e9
});
print('Orchard Area (ha): ', orchardArea);
  1. 卷积神经网络 (CNN):
// 定义 AOI (感兴趣区域)
var aoi = ee.Geometry.Rectangle([xmin, ymin, xmax, ymax]);

// 加载 Landsat 8 遥感影像
var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_TOA")
          .filterBounds(aoi)
          .filterDate('2018-01-01', '2018-12-31');

// 加载水果园地物分类样本点
var orchardSamples = ee.FeatureCollection('users/your_username/orchard_samples');

// 选择要素属性和分类标签
var bands = ['B2', 'B3', 'B4', 'B5', 'B6', 'B7'];
var label = 'class';

// 将样本数据集拆分为训练和测试数据集
var split = 0.7;
var training = orchardSamples.sample({
  region: aoi,
  scale: 30,
  numPixels: 500,
  seed: 0,
  geometries: true
}).filterMetadata('random', 'less_than', split);

var testing = orchardSamples.sample({
  region: aoi,
  scale: 30,
  numPixels: 500,
  seed: 1,
  geometries: true
}).filterMetadata('random', 'not_less_than', split);

// 定义卷积神经网络模型
var model = ee.Model.fromSavedModel({
  modelUrl: 'users/your_username/cnn_model',
  inputNames: ['B2', 'B3', 'B4', 'B5', 'B6', 'B7'],
  outputNames: ['class'],
  })
  .setOutputType('class');

// 训练分类器
var classifier = ee.Classifier.constant({
  'class': model
}).train({
  features: training,
  classProperty: label,
  inputProperties: bands
});

// 对测试数据进行分类
var classified = l8.select(bands).classify(classifier);

// 将分类结果可视化
Map.addLayer(classified, {min: 0, max: 1, palette: ['green', 'red']}, 'CNN Classification');

// 计算混淆矩阵和精度
var testAccuracy = testing
  .classify(classifier)
  .errorMatrix(label, 'classification')
  .accuracy();
print('CNN Test Accuracy: ', testAccuracy);

// 提取果园面积
var orchardArea = classified.eq(1).multiply(ee.Image.pixelArea()).divide(1e4)
.reduceRegion({
reducer: ee.Reducer.sum(),
geometry: aoi,
scale: 30,
maxPixels: 1e9
});
print('Orchard Area (ha): ', orchardArea);

注意:在上述代码中,需要将 your_username 替换为您的用户名,并确保您已经将分类器和模型保存在您的 Google Drive 中,并将其添加到 GEE 中。

此外,需要注意的是,每种分类算法的超参数设置和模型架构都可能有所不同,需要根据实际情况进行调整和优化。这些代码只是给出了一个基本的示例,希望能够帮助您入门。

这是我基于GEE平台提取果园面积的代码,使用的方法是SVM:

var imageCollection = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
  .filterDate('2019-01-01', '2019-12-31')
  .filterBounds(geometry)
  .map(function(image) {
    return image.clip(geometry);
  });
// 获取图像集的NDVI值和类别属性
var withNDVI = imageCollection.map(function(image) {
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
  return image.addBands(ndvi);
});
// 筛选出NDVI值大于0.5的像元作为果园
var binary = withNDVI.map(function(image) {
  var mask = image.select('NDVI').gt(0.5).rename('mask');
  return image.addBands(mask);
});
// 在样本点集中抽取数据
var training = binary.sample({
  region: geometry,
  scale: 30,
  numPixels: 5000
});
// 定义分类算法
var classifier = ee.Classifier.svm({
  kernelType: 'RBF',
  gamma: 0.5,
  cost: 10
});
// 训练分类器
var trained = classifier.train(training, 'mask');
// 使用分类器进行分类,并获取分类结果
var classified = binary.classify(trained);
// 计算并输出分类结果的面积
var areaImage = classified.multiply(ee.Image.pixelArea());
var statistics = areaImage.reduceRegion({
  reducer: ee.Reducer.sum(),
  geometry: geometry,
  scale: 30,
  maxPixels: 1e13
});
var area = statistics.get('mask').divide(10000);
print('Area of orchard:', area, 'hectares');

首先,我选择了2019年全年的高级合成数据集,并筛选出包含目标区域的图像。
再利用每幅图像的B4和B5波段计算NDVI值,筛选出NDVI大于0.5的像元作为果园,生成二值图像。
接下来,从二值图像中获取样本点集,并使用SVM算法训练分类器。
最后,预测全部像元的类别并计算果园面积。
其中,SVM算法的参数根据实际情况可以进行调整。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
果园面积提取涉及到遥感图像分类和分割问题,需要特征选择,模型训练和验证等多个步骤。下面介绍一种基于机器学习的方法,使用支持向量机(SVM)模型来提取果园面积并验证。

  1. 数据准备

首先需要从GEE上获取需要处理的遥感图像数据。以Landsat TM/ETM+图像为例,可以使用以下代码获取某一时期的数据。

// Set the center of your study area
var location = ee.Geometry.Point(116.4074, 39.9042);

// Load the Landsat TM Band collection and filter by date and location
var collection = ee.ImageCollection('LANDSAT/LT05/C01/T2_TOA')
  .filterBounds(location)
  .filterDate('2005-01-01', '2005-12-31');

// Select the bands of interest
var image = collection.select(['B1', 'B2', 'B3', 'B4', 'B5', 'B7']);

// Clip the image to your study area
var studyArea = ee.FeatureCollection(
  ee.Geometry.Polygon(
    [[[115.9327568359375, 40.10453240835241],
      [116.76025390625, 40.1045324083524],
      [116.76025390625, 39.72526105664104],
      [115.9327568359375, 39.72526105664104]]]))
var clippedImage = image.clip(studyArea);

其中,我们选择了Landsat影像的B1-B5和B7波段作为特征。接下来,需要准备用于分类的训练数据。可以从高清航拍影像中提取人工标注的果园区域作为训练样本。数据集应包含每种土地类型的示例图像,其中包括林地、草地、水域等等。

// Load the training data
var trainData = ee.FeatureCollection('users/your_username/training_data');
  1. 特征选择

在准备训练数据之后,需要对图像进行特征提取。我们使用NDVI和NDBI作为特征,同时对特征进行标准化处理。

// Define the functions for feature extraction and standardization
var ndvi = clippedImage.normalizedDifference(['B4', 'B3']);
var ndbi = clippedImage.normalizedDifference(['B5', 'B4']);
var features = ndvi.addBands(ndbi).select(['ndvi', 'ndbi']);
var meanStd = features.reduceRegion({
  reducer: ee.Reducer.mean().combine({
    reducer2: ee.Reducer.stdDev(),
    sharedInputs: true
  }),
  geometry: studyArea.geometry(),
  scale: 30,
  maxPixels: 1e9
});
var normalized = features.subtract(meanStd.get('ndvi_mean')).divide(meanStd.get('ndvi_stdDev'))
  .addBands(features.subtract(meanStd.get('ndbi_mean')).divide(meanStd.get('ndbi_stdDev')))
  .clip(studyArea);
  1. 训练模型

为了训练模型,需要将训练数据转换为分类器可以处理的形式。这里使用了随机采样的方法生成了训练点。

// Generate random points within each training region
trainData = trainData.randomColumn('random', 1);
var trainRegions = ee.Image().toByte().paint(trainData, 'random')
  .eq(1).multiply(2).int().addBands(ee.Image().byte().paint(trainData, 'class')).rename(['random', 'class']);
var classifierInput = normalized.addBands(trainRegions.select(['class'])).sample({
  region: studyArea.geometry(),
  numPixels: 5000,
  seed: 0,
  scale: 30,
  tileScale: 16
});

在产生的训练样本数据集上使用支持向量机(SVM)训练分类器。这里我们使用了一些默认参数来训练SVM分类器。

// Train a support vector machine classifier
var classifier = ee.Classifier.svm({
  kernelType: 'RBF',
  gamma: 0.5,
  cost: 10
}).train(classifierInput, 'class');
  1. 模型验证

通过对测试数据进行验证,可以评估分类器的性能。对于这个问题,我们将使用交叉验证来进行模型验证。将数据集拆分为训练和测试子集,然后在训练子集上训练模型,然后在测试子集上进行分类并计算模型的精度,最后计算模型的Kappa系数和OA(Overall Accuracy)。

// Perform cross validation on the classifier
var withRandom = classifierInput.randomColumn('random')
var split = 0.7; // The fraction of input to use for training.
var trainedClassifier = classifier.train(withRandom.filter(ee.Filter.lt('random', split)), 'class', featuresList);
var test = withRandom.filter(ee.Filter.gte('random', split));
var confusionMatrix = test
    .classify(trainedClassifier)
    .errorMatrix('class', 'classification');
var accuracy = confusionMatrix.accuracy();
var kappa = confusionMatrix.kappa();
  1. 应用模型

通过训练好的模型,我们可以对图像进行分类并获取果园面积的估计值。对于得到的分类结果,我们可以根据要求对节点进行过滤和邻域平滑等后处理。

// Apply the classifier to the image to get the land cover classification
var classified = normalized.classify(classifier);
var result = ee.Image().byte()
  .paint(ee.FeatureCollection(trainData), 'class')
  .rename('reference')
  .addBands(classified.rename('classified'))
  .addBands(clippedImage.select(['B2', 'B3', 'B4']))
  .clip(studyArea);
var area = ee.Image.pixelArea().divide(10000);
var forestArea = result.eq(1).multiply(area).rename('forest_area');

以上是通过支持向量机(SVM)模型在GEE上提取果园面积并验证的流程和代码。同样的流程和代码,也适用于其他机器学习模型,例如分类与回归树(CART)、神经网络(NN)等等。 对于其他算法,您可以参考以下示例代码进行修改。

  • 单极向量机(SVM):
var trainedClassifier = ee.Classifier.svm({
  kernelType: 'RBF',
  gamma: 1,
  cost: 10
}).train(classifierInput, 'class');
  • 随机森林(RF):
var trainedClassifier = ee.Classifier.randomForest({
  numberOfTrees: 100,
  variablesPerSplit: 2,
  minLeafPopulation: 1,
  bagFraction: 0.5,
}).train(classifierInput, 'class');
  • 卷积神经网络(CNN):
var architecture = [
  {inputShape: [1, 100, 100], kernelSize: 3, outputMaps: 32, activation: 'relu'},
  {inputShape: [32, 98, 98], kernelSize: 3, outputMaps: 64, activation: 'relu'},
  {inputShape: [64, 96, 96], kernelSize: 3, stride: 2, activation: 'relu'},
  {inputShape: [64, 47, 47], kernelSize: 3, outputMaps: 128, activation: 'relu'},
  {inputShape: [128, 45, 45], kernelSize: 3, outputMaps: 256, activation: 'relu'},
  {inputShape: [256, 43, 43], kernelSize: 3, stride: 2, activation: 'relu'},
  {inputShape: [256, 21, 21], kernelSize: 2, outputMaps: 512, activation: 'relu'},
  {inputShape: [512, 20, 20], kernelSize: 1, outputMaps: 4, activation: 'softmax'}
];
var trainedClassifier = ee.Classifier.cnn({
  "architecture": architecture,
  "inputShape": [1, 100, 100],
  "epochs": 10,
  "kernelSize": 3,
  "outputMaps": 32,
  "batchSize": 256,
  "learningRate": 0.05,
  "dropout": 0.25,
  "validationSetSize": 0.2,
  "earlyStopping": {
    "patience": 10,
    "delta": 0.1
  }
}).train(classifierInput, 'class');

如果我的回答解决了您的问题,请采纳!

  • 请看👉 :基于卷积神经网络(cnn)与支持向量机(svm)结合的猫狗识别
  • 除此之外, 这篇博客: 【大数据部落】基于随机森林、svm、CNN机器学习的风控欺诈识别模型中的  视频:从决策树到随机森林:R语言信用卡违约分析信贷数据实例 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • d9bc528061fcec6a3b7bd2d06bf81d40.png

    从决策树到随机森林:R语言信用卡违约分析信贷数据实例

    ,时长10:11

    挑战

    信贷风险和欺诈风险是消费金融业务发展中最重要的两种风险,信息不对称是导致这些风险的主要原因。

    “ 数据防欺诈”是数据风控武器之一。这种武器的力量的重要保证是数据和信息收集的完整性和准确性。通过这些有价值的数据,找到欺诈者留下的线索,以防止发生欺诈。

    实施过程

     用户立体化呈现——多维数据采集

    深入分析用户的基本属性、社会属性、消费者行为、兴趣偏好、社会偏好、资产特征、信用特征等数据,通过数据挖掘,使用户更加立体化地实时呈现。

     挖掘潜在的团伙欺诈——社区发现算法 

    一方面,基于机构的存量数据,运营商等数据构建复杂的网络。同时,采用社区挖掘算法实现风险分组。 在此基础上,我们训练机器学习模型。

    【大数据部落】基于随机森林、svm、CNN机器学习的风控欺诈识别模型

     建模的原材料 —— 特征工程

    建模的第一步是特征工程,众所周知,特征是机器学习建模的原材料,对最终模型的影响至关重要。数据和特征比模型更重要,数据和特征决定了机器学习的上限,而模型和算法逼近这个上限。特征加工和衍生工作越完备,那么构建的机器学习模型效果越好。但是,面对不同数据,不同业务场景,特征加工衍生往往是最耗时间与资源的工作。

    尤其在弱数据方面,充斥着大量文本、时序类数据,人工特征定义的方法天然存在较大局限性。

    引入基于机器学习的特征提取框架(如 random forest,SVM,CNN)来适应不同的数据类型,自动从大量复杂的非结构化数据中产生高质量的特征,完成模型训练后可以输出特征的重要性,结合多种方法进行特征选择和解释。

    【大数据部落】基于随机森林、svm、CNN机器学习的风控欺诈识别模型

     和而不同——集成模型

    具体的模型,我们知道在弱势数据的基础上加工和衍生的特点,机构往往面临很多特征维度,从数千到数万以上,非常稀疏。超出了传统风控的基于评分卡系统的建模能力。

    引入集成模型(ensemble models)来解决这个问题。集成模型从“投票”的思想简单的理解,也就是我们对不同类型的数据使用最合适的子模型(Logistic回归,GBDT,CNN,xgboost), 然后每个子模式投票作出决策

    能够使整体模型的准确度和防止过拟合的能力达到协调,从而达到在总体上的最佳准确度。

    【大数据部落】基于随机森林、svm、CNN机器学习的风控欺诈识别模型

    复杂的集成模式框架除了当前场景和业务建模具有很好的表现,其另一个重要价值在于可以快速应用于新业务应用,对“冷启动“阶段有非常重要的作用。

    【大数据部落】基于随机森林、svm、CNN机器学习的风控欺诈识别模型

    【大数据部落】基于随机森林、svm、CNN机器学习的风控欺诈识别模型

    结果/效果总结

    最后,在线上信用贷场景实践下来,经过多批次多个跨时间段的验证,可以看到,效果上还是有非常直接的提升,模型性能相比传统模型提升了大约30%。

     【大数据部落】基于随机森林、svm、CNN机器学习的风控欺诈识别模型 

     

基于new Bing的回答:
以下是在Google Earth Engine上使用随机森林(Random Forest)算法进行果园面积提取和验证的代码示例:


// 设置ROI(感兴趣区域)
var roi = ee.Geometry.Rectangle([114.26, 39.83, 114.29, 39.86]);

// 加载Landsat 8表面反照率影像
var l8sr = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
              .filterDate('2018-04-01', '2018-10-31')
              .filterBounds(roi)
              .map(function(image) {
                var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');
                var mask = cloud.lt(10);
                return image.updateMask(mask);
              });

// 添加NDVI指数
var addNDVI = function(image) {
  return image.addBands(image.normalizedDifference(['B5', 'B4']).rename('NDVI'));
};

var l8sr_ndvi = l8sr.map(addNDVI);

// 加载地面真实果园形状数据(用于验证分类结果)
var orchard = ee.FeatureCollection('users/用户名/果园形状数据');

// 将地面真实果园形状数据中的属性“class”改名为“landcover”
orchard = orchard.map(function(feature){
  return feature.set('landcover', feature.get('class'));
});

// 将地面真实果园形状数据投影到与Landsat 8表面反照率影像相同的投影系下
orchard = orchard.filterBounds(roi).map(function(feature){
  return feature.transform(l8sr.first().projection());
});

// 将地面真实果园形状数据融合到Landsat 8表面反照率影像的NDVI图像上
var orchardImage = ee.Image().byte().paint({
  featureCollection: orchard, 
  color: 'landcover', 
}).rename('landcover');

var l8sr_ndvi_orchard = l8sr_ndvi.addBands(orchardImage);

// 提取训练样本(将果园和非果园分别打上标签0和1)
var training = l8sr_ndvi_orchard.sample({
  region: roi,
  scale: 30,
  numPixels: 5000
}).stratifiedSample({
  classBand: 'landcover',
  numPoints: 30,
  scale: 30
});

// 构建随机森林分类器
var classifier = ee.Classifier.randomForest(10)
                  .train({
                    features: training,
                    classProperty: 'landcover',
                    inputProperties: l8sr_ndvi.bandNames()
                  });

// 对Landsat 8表面反照率影像进行分类(得到果园和非果园的像素)
var classified = l8sr_ndvi.select(l8sr_ndvi.bandNames().add('landcover')).classify(classifier);

// 输出分类结果图像
Map.addLayer(classified, {min: 0, max: 1, palette: ['red', 'green']}, 'classification result');

// 计算果园面积
var area = classified.multiply(ee.Image.pixelArea()).reduceRegion({
  reducer: ee.Reducer.sum(),
  geometry: roi,
  scale: 30,
  maxPixels: 1e13
}).get('classification_result');

// 输出果园面积(单位:平方米)
print('Orchard area:', area);

// 计算分类结果与地面真实果园形状数据的精度指标(OA,AA,KA)
var accuracy = classified.errorMatrix('landcover', 'classification_result');
print(accuracy);


在该代码中,我们使用了 Landsat 8 表面反射率影像进行果园面积提取,采用了随机森林(Random Forest)算法进行分类,采用了地面真实果园形状数据进行分类结果验证。在分类器训练时采样了训练样本,并分别对果园和非果园打上标签0和1,然后构建了随机森林分类器对影像进行分类,得到了果园和非果园的像素,并通过统计果园像素总数来计算果园面积。最后,我们计算了分类结果与地面真实果园形状数据的精度指标(OA,AA,KA)。