将两组点对齐到同一参考点,质心
Aligning two set of points into a same reference point, centroid
我有两组二维点(在 x,y 坐标中)。如何将这两组点对齐到同一参考点(质心)?
让我的两组是
一个
x y
1 3
4 2
7 8
3 5
B
x y
9 5
14 7
17 3
30 25
质心我的意思是:它是所有坐标方向上所有点的平均位置。
任何人都可以建议我如何使用 R 来做到这一点。
提前致谢。
稍后添加:
data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5))
data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25))
簇的质心是:
m1=c(mean(data1[,1]),mean(data1[,2]))
m2=c(mean(data2[,1]),mean(data2[,2]))
现在我想对齐(coinside)m1
和 m2
并获得关于共同点的所有聚类点
对齐的质心。怎么做。
提前致谢。
通常你会使用 kmeans 来做这样的事情。通常你会尝试确定最佳的集群数量,但在你的情况下,如果你假设只有一个全局平均值,因此只有一个集群,那么是这样的:
#Two datasets
data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5))
data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25))
#combine datasets into one data frame
comb.data<-rbind(data1,data2)
#find the center of the data by assuming there is only one
fit<-kmeans(comb.data, centers=1)
#print out coordinates of center:
fit$centers
你也可以用上面代码的集群包来绘制它,并添加:
library(cluster)
clusplot(comb.data, fit$cluster, color=T)
可以在此处找到更多信息http://www.statmethods.net/advstats/cluster.html,但是根据您的兴趣是生物学、化学计量学等,R 中有上千个关于聚类的参考资料
晚会有点晚了,但是:
对齐原点的技术术语是居中。
如果你的组在不同的变量中,你可以使用scale
:
data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5))
data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25))
scale (data1, center = TRUE, scale = FALSE)
scale (data2, center = TRUE, scale = FALSE)
如果组在同一数据框中,ave
可以提供帮助(另请参阅 aggregate
:
data1$group <- "A"
data2$group <- "B"
data <- rbind (data1, data2)
data$x <- data$x - ave (data$x, data$group)
data$y <- data$y - ave (data$y, data$group)
我有两组二维点(在 x,y 坐标中)。如何将这两组点对齐到同一参考点(质心)?
让我的两组是
一个
x y
1 3
4 2
7 8
3 5
B
x y
9 5
14 7
17 3
30 25
质心我的意思是:它是所有坐标方向上所有点的平均位置。
任何人都可以建议我如何使用 R 来做到这一点。
提前致谢。
稍后添加:
data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5))
data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25))
簇的质心是:
m1=c(mean(data1[,1]),mean(data1[,2]))
m2=c(mean(data2[,1]),mean(data2[,2]))
现在我想对齐(coinside)m1
和 m2
并获得关于共同点的所有聚类点
对齐的质心。怎么做。
提前致谢。
通常你会使用 kmeans 来做这样的事情。通常你会尝试确定最佳的集群数量,但在你的情况下,如果你假设只有一个全局平均值,因此只有一个集群,那么是这样的:
#Two datasets
data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5))
data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25))
#combine datasets into one data frame
comb.data<-rbind(data1,data2)
#find the center of the data by assuming there is only one
fit<-kmeans(comb.data, centers=1)
#print out coordinates of center:
fit$centers
你也可以用上面代码的集群包来绘制它,并添加:
library(cluster)
clusplot(comb.data, fit$cluster, color=T)
可以在此处找到更多信息http://www.statmethods.net/advstats/cluster.html,但是根据您的兴趣是生物学、化学计量学等,R 中有上千个关于聚类的参考资料
晚会有点晚了,但是:
对齐原点的技术术语是居中。
如果你的组在不同的变量中,你可以使用
scale
:data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5)) data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25)) scale (data1, center = TRUE, scale = FALSE) scale (data2, center = TRUE, scale = FALSE)
如果组在同一数据框中,
ave
可以提供帮助(另请参阅aggregate
:data1$group <- "A" data2$group <- "B" data <- rbind (data1, data2) data$x <- data$x - ave (data$x, data$group) data$y <- data$y - ave (data$y, data$group)