带 R 的 DBSCAN 包括周期性边界条件
DBSCAN with R including periodic boundary condition
我在 R 编程语言中使用以下语句在我的 3D 数据分析中进行基于密度的聚类-
clusterstry <- dbscan(styrenexyz, 0.20, MinPts =20, method = "hybrid", showplot = 1, countmode = 1:10,100,1000)
但是,这个epsilon (=20)
不能算周期性边界条件的情况。
有人可以建议我如何计算周期性边界条件吗?
您可以创建自己的距离函数,而不是使用欧氏距离。
然后你就可以很容易地实现你的周期性边界条件了。如果您进行搜索,可以找到 Python 的示例,这可能会对您有所帮助。
或者,您可以添加一个额外的维度来强制实施周期性边界条件。
我建议使用自定义距离函数而不是额外维度以避免任何失真。您可以在 R 中创建自定义距离函数,方法是编写您自己的函数,然后将结果提供给 dbscan()
或 optics()
。
您会注意到它接受数据矩阵或距离矩阵。你可以让R知道你的对象是一个函数为as.dist()
的距离矩阵。这是来自 stats
包。
我在 R 编程语言中使用以下语句在我的 3D 数据分析中进行基于密度的聚类-
clusterstry <- dbscan(styrenexyz, 0.20, MinPts =20, method = "hybrid", showplot = 1, countmode = 1:10,100,1000)
但是,这个epsilon (=20)
不能算周期性边界条件的情况。
有人可以建议我如何计算周期性边界条件吗?
您可以创建自己的距离函数,而不是使用欧氏距离。
然后你就可以很容易地实现你的周期性边界条件了。如果您进行搜索,可以找到 Python 的示例,这可能会对您有所帮助。
或者,您可以添加一个额外的维度来强制实施周期性边界条件。
我建议使用自定义距离函数而不是额外维度以避免任何失真。您可以在 R 中创建自定义距离函数,方法是编写您自己的函数,然后将结果提供给 dbscan()
或 optics()
。
您会注意到它接受数据矩阵或距离矩阵。你可以让R知道你的对象是一个函数为as.dist()
的距离矩阵。这是来自 stats
包。