Создание матрицы путаницы / оценки точности для коллекции секретных изображений в Google Earth Engine - PullRequest
0 голосов
/ 17 октября 2019

новый пользователь Google Earth Engine / JavaScript здесь.

Я пытаюсь провести оценку точности контролируемой классификации коллекции изображений (53 изображения) и не могу понять, как это сделать. На данный момент у меня есть 4 класса, которые я классифицирую (1000 очков за класс = 4000 очков). Эти тренировочные точки нанесены на несколько изображений для обучения со свойствами подложки, установленными для каждого класса (0,1,2,3).

ПРОБЛЕМА: Когда я печатаю матрицу путаницы для всей коллекции изображений, выводится [[0]], что заставляет меня думать, что код для создания матрицы ошибок из моего классифицированного изображенияколлекция неверна. У меня 4000 случайных точек, собранных с использованием стратифицированной выборки, из которых я использовал 70% для обучения классификатора, и я хотел бы использовать оставшиеся 30% точек для оценки точности по классифицированному результату.

ожидаемый результат: Я хотел бы провести оценку точности, используя случайные точки в коллекции классифицированных изображений. Есть ли способ применить функции проверки точности к результату сбора классифицированных изображений? Любая помощь / предложения будут наиболее цениться!

Вот пошаговый пример моего рабочего процесса: создайте переменную полос, которую мы будем использовать для классификации:

var bands = ['b3','b2','b1'];

Создано 4 коллекции объектов по 1000 точек на класс,Затем объединили наборы классов в 1000 пунктов вместе для данных обучения (всего 4000 пунктов):

var random_points = (LC_points_2).merge(Sand_points_2).merge(Glint_points_2).merge(Rock_points_2);

Создайте функцию для извлечения всей информации об отражении из всех точек обучения, нанесенных на несколькоimages:

var trainingImage_Collection = function(image)
{return image.select(bands).sampleRegions({
  collection: random_points,
  properties: ['Substrate'],
  scale: 0.0045
})};

Сопоставьте функцию с коллекцией изображений с точками обучения («Обучение») для получения данных тренировки. Это возвращает 4000 баллов класса со свойствами подложки и данными отражательной способности полосы:

var training = Training.map(trainingImage_Collection).flatten();

Добавьте столбец случайных форм в класс обучающих объектов и установите начальное число:

var withRandom = training.randomColumn({ seed: 1 });

Зарезервируйте данные для тестированияи проверка:

var split = 0.7;  // Roughly 70% training, 30% testing:
var trainingPartition = withRandom.filter(ee.Filter.lt('random', split));
var testingPartition = withRandom.filter(ee.Filter.gte('random', split));

Классификатор поезда с обучающим разделом:

var trainedClassifierCART_WC = ee.Classifier.cart().train({
  features: trainingPartition, 
  inputProperties: bands
});

Классифицируйте всю коллекцию изображений («Коллекция тестов») с помощью классификатора CART (возвращает классифицированную коллекцию изображений при сопоставлении):

var classifiedCollectionCART = testCollection.select(bands)
  .map(function(image) {
    return image.classify(trainedClassifierCART_WC);
  });

Создание матрицы путаницы и проверка точности выполнения:

var confusionMatrixCART_WC = classifiedCollectionCART.errorMatrix('Substrate', 'classification');
var testAccuracyCART_WC=  confusionMatrixCART_WC.accuracy();

print(confusionMatrixCART_WC);
...