我有大約50個位置,我想在空間上聚簇它們,固定大小的簇。說下面幾個地點是。如何在R中給定經緯度給定的固定簇大小?
lat<-c(17.48693,17.49222,17.51965,17.49359,17.49284,17.47077)
long<-c(78.38945,78.39643,78.37835,78.40079,78.40686,78.35874)
說我要羣集他們的簇大小〜3
能否請你幫忙嗎?
我有大約50個位置,我想在空間上聚簇它們,固定大小的簇。說下面幾個地點是。如何在R中給定經緯度給定的固定簇大小?
lat<-c(17.48693,17.49222,17.51965,17.49359,17.49284,17.47077)
long<-c(78.38945,78.39643,78.37835,78.40079,78.40686,78.35874)
說我要羣集他們的簇大小〜3
能否請你幫忙嗎?
你可以嘗試使用kmeans
,這是baseR的一部分。下面是一個簡單的代碼,將針對3箇中心:
result <- kmeans(df, 3)
> result
K-means clustering with 3 clusters of sizes 4, 1, 1
Cluster means:
lat lng
1 17.49140 78.39838
2 17.47077 78.35874
3 17.51965 78.37835
Clustering vector:
[1] 1 1 3 1 1 2
請記住,也不能保證您的數據可能與k均值和3箇中心吻合。這種kmeans運行導致4個觀測結果在一個簇內,其他2個簇只有1個觀測結果。如果你對這個運行不滿意,你可以玩一會兒,直到你能夠收斂到適合的東西。
這是一個link to a tutorial這可能會有所幫助。
對於這樣微小的數據,
哪裏你必須定義什麼是「最佳」解決方案。
您可以從K-means或層次聚類等標準算法開始,然後添加一些後處理來調整聚類大小。 有關於[這裏]的一些討論(http://stats.stackexchange.com/questions/74495/use-hierarchical-clustering-in-r-to-cluster-items-into-fixed-size-clusters)和[這裏](http://stackoverflow.com/questions/5452576/k-means-algorithm-variation-with-equal-cluster-size)。 – Duf59
如果空間座標是唯一的功能,您不能手動定義羣集嗎? 50個位置/ 3個位置/羣集= 17個羣集或羣組。易於執行,比編碼要快得多,但卻是最簡單的程序。 – knb