我正在开发一种基于地理距离匹配人员的算法,为此,我使用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
发布于 2021-04-12 04:06:15
首先要做的是了解是否应该有更多的集群,所以让我们看一下数据的基本曲线图。
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分。为什么不直接手工分组呢?
https://stackoverflow.com/questions/67047740
复制相似问题