包含周期边界条件的带R的DBSCAN

包含周期边界条件的带R的DBSCAN,r,dbscan,R,Dbscan,在我的3D数据分析中,我使用R编程语言中的以下语句进行基于密度的聚类- clusterstry <- dbscan(styrenexyz, 0.20, MinPts =20, method = "hybrid", showplot = 1, countmode = 1:10,100,1000) clusterstry您可以创建自己的距离函数,而不是使用欧几里德距离 然后,您可以轻松实现周期边界条件。如果您使用Python进行搜索,有一些例子可能会对您有所帮助 或者,可以添加额外的标注以强

在我的3D数据分析中,我使用R编程语言中的以下语句进行基于密度的聚类-

clusterstry <- dbscan(styrenexyz, 0.20, MinPts =20, method = "hybrid", showplot = 1, countmode = 1:10,100,1000)

clusterstry您可以创建自己的距离函数,而不是使用欧几里德距离

然后,您可以轻松实现周期边界条件。如果您使用Python进行搜索,有一些例子可能会对您有所帮助

或者,可以添加额外的标注以强制执行周期性边界条件

我建议使用自定义距离函数,而不是额外的维度,以避免任何失真。通过编写自己的函数,然后将结果提供给
dbscan()
optics()
,可以在R中创建自定义距离函数


您会注意到它接受数据矩阵或距离矩阵。您可以使用函数
as.dist()
让R知道您的对象是一个距离矩阵。这是从
stats
软件包中获得的。

这是我在网上找到的-“你可以添加一个额外的维度来强制执行周期性边界条件。假设我想使用DBSCAN以极坐标系中的角度(θ)提取点。如果我在[θ]上运行DBSCAN,点1度和359度不会聚集在一起。但是,如果我在[sin(θ),cos(θ)]上运行DBSCAN,这就解决了问题。”我尝试了角度,但在R编程中出错。你介意再详细说明一下你所说的距离函数或使用额外维度是什么意思吗?我的意思是,我怎么能把欧几里得距离转换成计数PBC@Tuhin当然首先,我建议在额外维度上执行自定义距离函数,以避免任何失真。通过编写自己的函数,然后将结果提供给
dbscan()
optics()
,可以在R中创建自定义距离函数。您会注意到它接受数据矩阵或距离矩阵。您可以使用函数
as.dist()
让R知道您的对象是一个距离矩阵。这来自
stats
包。