R k-means算法自定义中心

7
我有一个2D数据集导入到了R中,其中包括(x,y)坐标。我想对这个数据集进行k-means聚类,但是我希望能够设置具体的坐标作为初始中心点。例如,我想从5个中心点开始,它们的值分别为(5,10),(3,8),(46,22),(87,66),(39,41)。
我看到了kmeans函数中的centers参数,但我不知道如何将我的值设置为中心点。
kmeans(data, centers = ...) # what to set here?

1
可能是这样的:kmeans( data, centers=matrix(c(5, 10, 3, 8, 46, 22, 87, 66, 39, 41), ncol=2, byrow=TRUE)) - Mamoun Benghezal
谢谢您的提问。事实上,在R文档中,这个解释非常不清楚。 - Kryštof Chytrý
2个回答

5

centers参数接受整数k,在这种情况下,从data中选择k个随机点作为初始中心,或者是一个包含与data相同列数的初始中心矩阵。请尝试以下操作:

x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
                 matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
kmeans(x,centers=3)
kmeans(x,centers=x[1:3,])

2

只需传递一个matrix,以下是一个快速示例:

data = matrix(c(1.1,1,0.97,0.99,0.95,0.8,0.91,2.1,2,2.4,4.1,4.4,4.5,3.9,1.5,1.2,1.7,2.6,2.7,2.44), ncol=2)

现在让我们提到两个起点 C1 (x1=1,y1=3)C2 (x2=2,y2=4)(即使有三个组显然存在):

km = kmeans(data, centers=matrix(c(1,2,3,4),ncol=2))

应用算法后进行一些绘图: df = transform(as.data.frame(data), group=as.character(km$cluster)) library(ggplot2)

ggplot(df, aes(V1, V2, color=group)) + geom_point()

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接