我有一个点数据集;
lat |long | time
34.53 -126.34 1
34.52 -126.32 2
34.51 -126.31 3
34.54 -126.36 4
34.59 -126.28 5
34.63 -126.14 6
34.70 -126.05 7
...
(数据集更大,但这是一般结构。)
我想根据距离和时间对点进行聚类。 DBSCAN 似乎是一个不错的选择,因为我不知道有多少个集群。
我目前使用的是分钟/5500(我相信大约是 20 米,按比例缩放。)
library(fpc)
results<-dbscan(data,MinPts=3,eps=0.00045,method="raw",scale=FALSE,showplot=1)
由于我有原始数据,因此我在理解如何确定缩放/距离时遇到问题。我可以猜测缩放或未缩放时 eps 的值,但我不清楚缩放的作用,或者使用什么距离度量(也许是欧几里德距离?)是否有关于此的文档?
(这不是要找到一种自动选择方式(如 Choosing eps and minpts for DBSCAN (R)? ),而是要了解不同值的含义。说“您首先需要一个距离函数”并不能解释所使用的距离函数是什么,或者如何创建一个...)
最佳答案
首先计算数据的距离矩阵。然后,您可以使用 method='dist'
,而不是使用 method='row'
。这样,dbscan 会将您的数据视为距离矩阵,因此无需担心距离函数是如何实现的。请注意,这可能需要更多内存,因为您要预先计算距离矩阵并将其存储在内存中。
关于r - 如何确定 R 中 DBSCAN 的距离/eps?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993054/