在R中绘制dbscan的结果

时间:2011-07-26 06:50:20

标签: r visualization cluster-analysis data-visualization dbscan

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

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

我找到了一些集群,我需要只绘制重要的集群。问题是我有一个集群(第一个),其中有大约39,000个点。我需要绘制所有其他集群的图表,但是这个集合。

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

我可以使用基本的plot()调用来绘制dbscan类型。但是,就像我说的那样,这将描绘出无关紧要的39,000点。

TL; DR: 如何仅绘制dbscan数据类型的特定群集?

3 个答案:

答案 0 :(得分:5)

如果查看帮助页面(?dbscan),它会像所有其他页面一样组织成标记为“描述”,“用法”,“参数”,“详细信息”和“值”的部分。 “值”部分描述了函数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,])

答案 1 :(得分:0)

在不知道dbscan的细节的情况下,我建议您查看函数smoothScatter。它对于检查散点图中的主要模式非常有用,否则你会有太多的点来理解数据。

答案 2 :(得分:0)

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

这与密度连通对象的DBSCAN聚类模型密切相关,因此可以为您提供对该集合的有用解释。

由于我没有使用R,我不知道R的alpha形状功能。据说有一个名为alphahull的软件包,可以快速查看Google。