我有大约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