var sample = sample.randomColumn(); var trainingSample = sample.filter('random <= 0.8'); var validationSample = sample.filter('random > 0.8'); // var bands = ['B2', 'B3', 'B4', 'B5', 'B6','B7']; // 从训练样本中训练SVM分类器(C-SVM分类、投票决策过程、线性核)。 var trainedClassifier = ee.Classifier.libsvm().train({ features: trainingSample, classProperty: label, inputProperties: bands });报错No valid training data were found.
时间: 2023-11-27 15:03:25 浏览: 33
这个报错通常表示在训练样本中没有有效的数据。可能是由于以下原因导致的:
1. `sample`变量中没有数据或者没有有效的数据。你可以检查`sample.size()`是否为0,或者使用`sample.first()`检查第一条记录是否为空。
2. 训练样本中没有符合要求的数据。你可以检查一下`trainingSample.size()`是否为0,或者使用`trainingSample.first()`检查第一条记录是否为空。
3. `label`参数指定的类别在训练样本中不存在。你可以使用`trainingSample.aggregate_array('landcover').distinct()`方法来查看训练样本中存在哪些类别,确保`label`参数指定的类别在其中。
如果以上三种情况都不是问题的原因,你可以尝试检查一下训练样本中的特征和属性是否正确。你可以使用`trainingSample.first().propertyNames()`方法来查看训练样本中包含哪些属性,使用`trainingSample.first().toDictionary().keys()`方法来查看第一条记录中包含哪些属性。
另外,你在注释中提到了代码中使用了投票决策过程,但是在训练分类器时并没有指定。如果你希望使用投票决策过程,可以在训练分类器时指定`ee.Classifier.smo()`作为决策过程,如下所示:
```
var trainedClassifier = ee.Classifier.libsvm({
kernelType: 'linear',
decisionProcedure: 'vote',
svmType: 'C_SVC',
probabilityEstimates: true
}).train({
features: trainingSample,
classProperty: label,
inputProperties: bands
});
```
如果你仍然遇到问题,请提供更多的代码和数据,以便我们更好的帮助你解决问题。