2016-07-07 119 views
-2

我在地圖上有很多點(long/Lat),並且我想將它們聚類到組, 類似於k-means。映射的聚類算法

有什麼方法可以插入點(長/緯)和組的數量,並獲得她是屬於哪個組的每個點?

+0

請閱讀[如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)以及如何給出[可重現性示例](http://stackoverflow.com/questions/5963269)。這會讓其他人更容易幫助你。 – zx8754

+0

這可能有幫助。 http://stackoverflow.com/questions/28672399/spatial-clustering-in-r-simple-example –

回答

0
library(ggplot2) 

# Construct Data 
set.seed(23) 
lat <- c(seq(from = 16.3478, to = 14.1329876, length.out = 500), 
seq(from = 18.5478, to = 19.567, length.out = 500)) 
lat <- sample(x = lat, size = 100) 

lon <- seq(from = 45.987, to = 46.98237, length.out = 1000) 
lon <- sample(x = lon, size = 100) 

# Place inside data.frame 
df_latlon <- data.frame(lat, lon) 

cluster_latlon <- kmeans(x = df_latlon, centers = 2, nstart = 20) 
df_latlon <- cbind(df_latlon, cluster_latlon$cluster) 

# Output ggplot with colored values 
ggplot(df_latlon) + 
geom_point(aes(lat, lon, color = as.factor(cluster_latlon$cluster))) 

cluster_latlon$centers 
cluster_latlon$cluster 
0

你的問題本質上是「我該怎麼做羣集」。

它不能簡潔地回答,但你應該閱讀關於聚類的教科書。

k-means不適用於經緯度,因爲它是最小二乘法,但1度緯度不等於1度經度(通常)。使用PAM,層次聚類,DBSCAN等