【问题标题】:DBSCAN noise pointsDBSCAN 噪声点
【发布时间】:2021-07-06 21:44:42
【问题描述】:

我正在研究一种基于地理距离匹配人的算法,为此,我正在使用 DBSCAN 算法。

这是我运行代码后得到的输出

db_e= dbscan::dbscan(eng2_scaled, eps= 0.5, minPts= 3)


DBSCAN clustering for 10 objects.
Parameters: eps = 0.5, minPts = 3
The clustering contains 1 cluster(s) and 7 noise points.

0 1 
7 3 

Available fields: cluster, eps, minPts

有没有一种方法可以将噪声点(在此算法中,居住在更远的个人)强制放入我的集群中,而无需依赖手动将它们放入集群中?

这是我正在使用的代码

               id       long         lat
 [1,] -1.08661792  0.6479382  0.29786292
 [2,] -0.92913706  0.6606378  0.27583940
 [3,] -0.77165620 -0.0262808  0.01227102
 [4,] -0.61417534  0.6804854  0.17569930
 [5,] -0.45669449  0.7748932 -1.45946459
 [6,] -0.14173277 -2.3581307  0.07462387
 [7,]  0.01574809 -0.5405659 -0.84936268
 [8,]  0.80315237  0.5367247 -1.25770012
 [9,]  1.43307580  0.4708911  0.80020084
[10,]  1.74803752 -0.8465929  1.93003003

【问题讨论】:

  • 您是否尝试过为eps 使用更大的值?
  • 嗨,是的,我有,但它没有处理噪声点,而是集群大小(尽管 minpts 为 3)增加了......
  • 在您显示的输出中,只有一个簇(三个点),其余所有点都是噪声点。如果没有一些噪声点进入集群,如何增加集群大小?
  • 嗯,所以如果我增加 eps,比如说从 0.5(上面的值)到 1(k=3 常数) - 仍然只有 1 个簇,有 4 个点(不是 3) 和 6 个噪声点。
  • 但我想要的是看看是否有办法增加集群的数量并将这些噪声点分布在这些集群中。

标签: r machine-learning data-science dbscan


【解决方案1】:

首先要做的是了解是否应该有更多的集群,所以让我们看一下数据的基本图。

plot(eng2_scaled[,2:3])

很容易看出为什么 3 个点(位于右中)会聚集在一起,但仅此而已。你可以想象右下角的两个点是连在一起的。为此,您必须将 minPts 降至 2。

library(dbscan)
db_e = dbscan(eng2_scaled[,2:3], eps= 0.5, minPts= 2)
plot(eng2_scaled[,2:3], pch=20, col=db_e$cluster+1)

除此之外,很难理解为什么这些点中的任何一个都应该在一个集群中。但是只有10分。为什么不手动将它们分组?

【讨论】:

  • 谢谢,这很有帮助!目前,手动是我正在做的事情,但是,我将在更大的参与者集(N = 1000)上运行这个算法~所以,有些情况下,离得更远的参与者将被归类为'噪音',所以我试图以这样的方式格式化我的代码......我减少了手动匹配的数量(只是为了方便起见)
猜你喜欢
  • 2017-08-27
  • 2021-11-05
  • 2015-07-01
  • 2015-11-01
  • 2018-10-23
  • 2017-12-31
  • 2018-08-28
  • 2020-06-06
  • 2011-09-20
相关资源
最近更新 更多