【发布时间】:2015-11-01 16:23:16
【问题描述】:
我正在使用 Elki LngLatDistanceFunction 对 Lon/lat 点进行聚类,但它只返回一个聚类(当我使用欧几里德距离时返回更多聚类)。我尝试了多个 Epsilon 值,但仍然得到一个集群。
int minPts=20;
double eps=10;
ListParameterization params = new ListParameterization();
params.addParameter(DBSCAN.DISTANCE_FUNCTION_ID, LngLatDistanceFunction.class);
params.addParameter(DBSCAN.Parameterizer.MINPTS_ID, minPts);
params.addParameter(DBSCAN.Parameterizer.EPSILON_ID, eps);
params.addParameter(AbstractDatabase.Parameterizer.DATABASE_CONNECTION_ID, dbcon);
params.addParameter(AbstractDatabase.Parameterizer.INDEX_ID, RStarTreeFactory.class);
params.addParameter(RStarTreeFactory.Parameterizer.BULK_SPLIT_ID, SortTileRecursiveBulkSplit.class);
params.addParameter(AbstractPageFileFactory.Parameterizer.PAGE_SIZE_ID, 600);
Database db = ClassGenericsUtil.parameterizeOrAbort(StaticArrayDatabase.class, params);
db.initialize();
GeneralizedDBSCAN dbscan = ClassGenericsUtil.parameterizeOrAbort(GeneralizedDBSCAN.class, params);
【问题讨论】:
-
您知道 LatLngDistanceFunction 返回的距离的比例吗?它们(必然)与欧几里得距离不同。随机尝试 epsilon 值不是一个好策略。
-
我认为根据stackoverflow.com/questions/23684070/… 计量。我知道与随机选择 epsilon 相比,有更好的策略,但我现在还不知道。你能给我一些关于如何实现这一目标的想法吗?
-
@Anony-Mousse 我确实将 epsilon 值修改为 2 英里 = 3218.69 米,但这并没有改善结果
-
您观察的平均距离是多少?是否找到了密集的集群,或者您得到了噪声集群?
-
所有点都在一个集群中。我使用了 KNNDistanceSampler,这是结果“MaxX: 760.0 MaxY: 1653.8102316360676 MinX: 1.0 MinY: 299.5734514358746”。我目前正在尝试根据下面的答案修改该参数,但还没有运气。
标签: cluster-analysis dbscan elki epsilon