новый пользователь 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);