【问题标题】:Using ELKI's Distance Function使用 ELKI 的距离函数
【发布时间】:2014-07-02 19:00:33
【问题描述】:

这是previous question 的后续内容,我们在其中评论说,使用欧几里得距离和经纬度坐标不会产生正确的结果。 我在文档中读到ELKI enables geographic data,即它的距离函数,存在于各种聚类算法中。 在 ELKI 的用户界面中,我可以看到有一些选项可以将默认距离函数 (euclidian) 替换为更合适的函数。我还看到,在这种情况下,您需要提供一个数据,这是有道理的,因为您必须告诉 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 呢? (我不知道这个)

【问题讨论】:

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


    【解决方案1】:

    默认地球模型是SphericalVincentyEarthModel,据说速度更快(但假设是球形地球,而不是椭球体);但这应该不会有太大区别,除非您需要精确到仪表:根据this answer,最大误差应该是距离的 0.3%。

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

    【讨论】:

    • 从你告诉我的情况来看,将地球作为一个球体是可以的。我更关心将距离函数更改为地理所提供的结果。如果我上面显示的片段是正确的,关于设置 LngLatDistanceFunction,结果有点令人惊讶。当我运行 DBSCAN 时,the clusters returned are sets of a repeated pointThese 是通过选择非地理算法 (ManhattanDistanceFunction) 返回的集群。任何想法为什么会发生这种情况?
    • 我补充说我的输入数据是数字向量 (lon,lat) 的关系,根据ELKI's documentation 假设是 geo Relation> vectors = db .getRelation(TypeUtil.NUMBER_VECTOR_FIELD);
    • 我决定将我的 cmets 转换为另一个 question
    猜你喜欢
    • 2014-07-04
    • 2013-07-14
    • 1970-01-01
    • 2014-10-22
    • 2016-04-09
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    相关资源
    最近更新 更多