Верхние n выбросов в ResultWriter

Я имею дело с многомерным и большим набором данных, поэтому мне нужно получить только первые N выбросов из вывода ResultWriter. Есть ли в elki возможность получить из этого вывода только первые N выбросов?


person Wesin Alves    schedule 03.03.2015    source источник


Ответы (1)


ResultWriter — один из самых старых кодов в ELKI, и его необходимо переписать. Он довольно общий - он пытается выяснить, как лучше всего сериализовать вывод в виде текста.

Если вам нужен какой-то определенный формат или конкретное подмножество, правильным способом будет написать свой собственный ResultHandler. Существует руководство по написанию ResultHandler.

Если вы хотите найти входные координаты в результате,

Database db = ResultUtil.findDatabase(baseResult);
Relation<NumberVector> rel = db.getRelation(TypeUtil.NUMBER_VECTOR_VARIABLE_LENGTH);

вернет первое отношение, содержащее числовые векторы.

Чтобы перебрать объекты, отсортированные по их выбросам, используйте:

OrderingResult order = outlierResult.getOrdering();
DBIDs ids = order.order(order.getDBIDs());
for (DBIDIter it = ids.iter(); it.valid(); it.advance()) {
  // Output as desired.
}
person Erich Schubert    schedule 05.03.2015
comment
Привет, Эрих, спасибо за ответ. Я реализовал, но в строке DBIDs ids = order.order(order.getDBIDs()); я получаю сообщение об ошибке. Итак, я изменился на DBIDs ids = order.getDBIDs(); Этот способ запуска, но он упорядочивается по идентификаторам, а не по баллам. Существует ли метод заказа по баллам? Я ищу в javadoc, но я не могу найти. - person Wesin Alves; 06.03.2015
comment
Я понял. я изменил на DBIDs ids = order.iter(order.getDBIDs());. Итак, результат упорядочивался по баллам. большое спасибо. - person Wesin Alves; 06.03.2015