ml :: KNearest-> findNearest () противоречивый результат при изменении метки категории - PullRequest
1 голос
/ 20 февраля 2020

Я использую OpenCV 3.4.1. Я работаю над проектом по классификации видео и пытаюсь использовать KNearest для классификации между двумя категориями. У меня есть 8 областей интересов в каждом видеокадре. Чтобы принять решение по каждому кадру, каждый KNearest выполняется по значениям пикселей в каждой области. Большинство выигрывает (и поддерживает одну категорию, если она составляет ie). Итак, у меня есть 8 наборов обучающих данных (по одному для каждой интересующей области).

Проблема: Ответ, сгенерированный из модели knn, изменился, когда я по-разному обозначил категории.

Наборы обучающих данных организованы в виде строк:

[метка категории], data0, data1, data2 .... et c. (разные размеры для каждого обучающего набора)

, где dataX = пиксельные данные кадра (1 строка = 1 кадр). Затем я строю модель следующим образом:

Ptr<TrainData> tdata = TrainData::loadFromCSV(filename, 0, 0, -1, String("cat"));
Mat raw = tdata->getTrainSamples();
Mat res = tdata->getResponses();

PCA pca(raw, noArray(), PCA::DATA_AS_ROW, 0.99);

Mat knnIn = pca.project(raw);

Ptr<ml::KNearest> knn = ml::KNearest::create();
knn->train(knnIn, ml::ROW_SAMPLE, res);

После что тестовые данные передаются в pca и knn для получения ответа.

Чтобы протестировать его, я поместил 1 набор тестовых данных в модели 8 knn.

Если я использую 0 & 1 в качестве [метки категории] в наборах обучающих данных, 8 ответов от KNN будут 1,1,1,1,1,0,0,1.

Если вместо этого поменять метку на 2 & 1 (заменить все «0» на «2» в первом столбце обучающих данных), 8 ответов станут 1,1,1,1,1,1,1, 1, в то время как я ожидаю 1,1,1,1,1 2,2 , 1.

Некоторые наблюдения:

  • нет ошибок редактирования данных тренировки (при изменении меток категорий).
  • Модель KNN isClassifier () = true. DefaultK = 10. AlgorithmType = 1 (BRUTE_FORCE).
  • Результат соответствует одному и тому же набору данных обучения и набору данных тестирования.
  • Я не вижу никакой картины различий в ответах для двух наборов меток (после использования различных наборов обучающих данных и наборов данных тестирования).

Пожалуйста, пролите немного света. Большое спасибо!

...