有没有一个将距离矩阵转换为一组坐标的软件包?我看了下面的问题。我希望有一个这样的软件包。
我考虑过使用Sammons投影,但据我所知,它是一个优化器,并为您提供最佳解决方案。我认为应该有一种算法来获取此问题的唯一解。
有没有一个将距离矩阵转换为一组坐标的软件包?我看了下面的问题。我希望有一个这样的软件包。
我考虑过使用Sammons投影,但据我所知,它是一个优化器,并为您提供最佳解决方案。我认为应该有一种算法来获取此问题的唯一解。
# Multidimensional scaling
library(MASS)
set.seed(1)
labels <- as.factor(sample(LETTERS[1:5], 100, replace=TRUE))
dat <- mvrnorm(n=100, mu = c(1:4), Sigma=matrix(1:16, ncol=4)) + as.numeric(labels)^2
#> dim(dat)
#[1] 100 4
# Euclidean distance matrix (100x100)
d <- dist(dat)
# Classical MDS for distance matrix d
# http://en.wikipedia.org/wiki/Multidimensional_scaling
mds <- cmdscale(d, k = 2)
x <- mds[,1]
y <- mds[,2]
plot(x,y, col=rainbow(5)[as.numeric(labels)], pch=16, main="MDS for object 'dat'")
legend("topright", legend=unique(labels), col=rainbow(5)[unique(as.numeric(labels))], pch=16)
查找一个名为多维缩放(Multi-Dimensional Scaling,MDS)的算法。在R中实现该算法的函数是stats
包中的cmdscale
函数:
多维缩放将一组不相似性转换为一组点,使得这些点之间的距离大致等于不相似性。
文档还提供了一个示例,其中将距离矩阵转换为x
和y
坐标的两个向量,然后进行绘制。