2

我计算了任意两对约 1200 人之间的相似度/不相似度,范围为 0-1。

我想在 XY 平面上可视化这些关系。是否有任何软件工具可以处理这些关系,并将具有高相似性的人彼此靠近而远离彼此具有高差异性的人?

4

1 回答 1

2

您需要使用多维缩放。目标是确定数据的转换,该转换将表达二维线性距离的相似性的相对差异。您将需要为此使用经典或基于度量的缩放。

以下是 R 的示例:

MDS 图

代码相当简单。魔术师全力以赴cmdscale并使用vegdist来创建 的距离矩阵cmdscale。然后,您可以使用 R 或将数据导出到其他地方进行可视化。

## load libraries
library(ggplot2) # for charting
library(vegan) # for jaccard

## simulate some data - 1200 rows, 5 features/cols/fields
features <- matrix(abs(rnorm(1200*5)),ncol=5)
rownames(features) <- paste("P", seq(1:1200), sep="")

## calculate jaccard distances
d <- vegdist(features, method = "jaccard")

## Multidimensional Scaling
fit <- cmdscale(d,eig=TRUE, k=2)

# prepare the data for plotting
mds <- data.frame(
  x    = fit$points[,1],
  y    = fit$points[,2],
  name = rownames(features))

# plot
ggplot(mds, aes(x=x,y=y,label=color=name)) + geom_text(size=1)

## bonus visualization! - a dendrogram
fit <- hclust(d, method="ward")
plot(fit)
于 2013-09-21T06:18:25.867 回答