Это ответ на предыдущий вопрос, отметил, что использование евклидовых расстояний с координатами широты и долготы не дает правильных результатов. Я читал в документации, что ELKI позволяет использовать географические данные, а именно: функция расстояния, присутствующая в различных алгоритмах кластеризации. В пользовательском интерфейсе ELKI я вижу, что есть варианты замены функции расстояния по умолчанию (евклидиан) на более подходящую. Я также вижу, что в этом случае вам нужно предоставить датум, что имеет смысл, поскольку вы должны сообщить ELKI, как проецируются данные. Мои варианты в пользовательском интерфейсе — использовать «geo.LngLatDistanceFunction», поскольку я использую координаты (x, y), и использовать «WGS84SpheroidEarthModel», поскольку данные находятся в формате epsg:4326. Я пытаюсь соответствующим образом параметризовать свой алгоритм на Java, но я не уверен, как это сделать: если я инициализирую свои параметры следующим образом:
ListParameterization params2 = new ListParameterization();
params2.addParameter(de.lmu.ifi.dbs.elki.algorithm.clustering.DBSCAN.Parameterizer.MINPTS_ID, minPoints);
params2.addParameter(de.lmu.ifi.dbs.elki.algorithm.clustering.DBSCAN.Parameterizer.EPSILON_ID, epsilon);
Могу ли я установить функцию расстояния таким образом?
params2.addParameter(de.lmu.ifi.dbs.elki.algorithm.DistanceBasedAlgorithm.DISTANCE_FUNCTION_ID,
de.lmu.ifi.dbs.elki.distance.distancefunction.geo.LngLatDistanceFunction.class);
Как насчет гео.модели? (Я понятия не имею об этом)