【发布时间】:2016-05-01 17:24:56
【问题描述】:
我正在使用 dbscan::dbscan 方法按位置和密度对数据进行聚类。
我的数据如下所示:
str(data)
'data.frame': 4872 obs. of 3 variables:
$ price : num ...
$ lat : num ...
$ lng : num ...
现在我正在使用以下代码:
EPS = 7
cluster.dbscan <- dbscan(data, eps = EPS, minPts = 30, borderPoints = T,
search = "kdtree")
plot(lat ~ lng, data = data, col = cluster.dbscan$cluster + 1L, pch = 20)
但结果一点也不令人满意,点并没有真正聚集。
我还尝试使用效果更好的决策树分类器tree:tree,但我无法判断它是否真的是一个好的分类。
文件:
http://www.file-upload.net/download-11246655/file.csv.html
问题:
- 有没有可能实现我想要的?
- 我是否使用了正确的方法?
- 我应该更多地使用参数吗?如果是,与哪个?
【问题讨论】:
-
如果可能,您应该提供数据集,或者玩具数据集。
-
@lukeA 我刚刚添加了数据集。
-
我不认为文件中的数据代表你的数据集。请看一看。
-
@lukeA:是的,你是对的。我错误地添加了两次
lng列。我更新了文件。我不知道为什么会出现额外的列X。 -
谢谢。没有使用价格属性?好吧,如果您想按位置和密度进行集群,dbscan 将是一个不错的选择。它将密集的部分组合在一起,例如
plot(lat ~ lng, data = data, col = dbscan(data[, c("lat", "lng")], eps = 0.004, minPts = 3)$cluster + 1L, pch = 20)。但是,您的椭圆表明您希望将密集和非密集部分聚集在一起。我不明白这是怎么回事。决策树适用于监督分类任务,但您的数据没有标记。也许有人有一个想法。否则我也会在stats.stackexchange.com 上试试运气。
标签: r machine-learning cluster-analysis data-mining dbscan