4

非常感谢您的意见、建议或解决方案,谢谢。

我正在使用fpcR 中的包对一些非常密集的数据(范围 -3、6 之间的 3 组 40,000 个点)进行 dbscan 分析。

我发现了一些集群,我只需要绘制重要的集群。问题是我有一个集群(第一个),其中包含大约 39,000 个点。我需要绘制除此之外的所有其他集群。

dbscan()创建了一个特殊的数据类型来存储所有这些集群数据。它不像数据框那样被索引(但也许有一种方法来表示它?)。

我可以使用基本plot()调用绘制 dbscan 类型。但是,就像我说的,这将绘制不相关的 39,000 个点。

tl; dr:我如何仅绘制dbscan数据类型的特定集群?

4

3 回答 3

6

如果您查看帮助页面?dbscan(Value 部分描述了函数dbscan返回的内容。在这种情况下,它只是一个包含几个组件的列表(标准 R 数据类型)。

cluster组件只是一个整数向量,其长度等于数据中的行数,表示每个观测值属于哪个集群。因此,您可以使用此向量对数据进行子集化,以仅提取您想要的那些集群,然后仅绘制这些数据点。

例如,如果我们使用帮助页面中的第一个示例:

set.seed(665544)
n <- 600
x <- cbind(runif(10, 0, 10)+rnorm(n, sd=0.2), runif(10, 0, 10)+rnorm(n,
    sd=0.2))
ds <- dbscan(x, 0.2)

然后我们可以使用结果,ds仅绘制集群 1-3 中的点:

#Plot only clusters 1, 2 and 3
plot(x[ds$cluster %in% 1:3,])
于 2011-07-26T15:14:40.123 回答
1

在不了解具体情况的情况下dbscan,我可以建议你看一下函数smoothScatter。当您有太多点无法理解数据时,它对于检查散点图中的主要模式非常有用。

于 2011-07-26T09:44:42.340 回答
0

绘制结果的最明智的方法可能DBSCAN是使用 alpha 形状,并将半径设置为 epsilon 值。Alpha 形状与凸包密切相关,但它们不一定是凸包。alpha 半径控制允许的非凸面量。

这与密度连接对象的集群模型密切相关,DBSCAN因此将为您提供对集合的有用解释。

由于我没有使用R,我不知道R. 据说有一个名为 的包alphahull,来自谷歌的快速检查。

于 2012-03-01T19:24:46.963 回答