使用ELKI的距离函数

时间:2014-05-14 15:50:26

标签: cluster-analysis data-mining geo dbscan elki

这是来自previous question的后续行动,我们评论说,使用带有lat,长坐标的欧几里德距离并不会产生正确的结果。 我在文档中读到ELKI enables geographic data,即它的距离函数,存在于各种聚类算法中。 在ELKI的用户界面中,我可以看到有一些选项可以用更合适的距离替换默认距离函数(欧几里得)。我也看到,在这种情况下,你需要提供一个有意义的数据,因为你必须告诉ELKI数据是如何投影的。 我在UI中的选项是使用" 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);

geo.model怎么样? (我对此毫无头绪)

1 个答案:

答案 0 :(得分:2)

默认地球模型是SphericalVincentyEarthModel,据说速度要快一些(但假设球形地球而不是球体);但除非你需要精确到仪表,否则这应该没什么区别:根据this answer,最大误差应该是距离的0.3%。

要设置地球模型参数,请使用EarthModel.MODEL_ID作为选项ID。 (由LngLatDistanceFunction的参数化器引用)。在尝试查找适当的选项ID时,请始终查看参数化器 - 我们正在慢慢将所有选项ID移动到参数化器中。