我计算了任意两对约 1200 人之间的相似度/不相似度,范围为 0-1。
我想在 XY 平面上可视化这些关系。是否有任何软件工具可以处理这些关系,并将具有高相似性的人彼此靠近而远离彼此具有高差异性的人?
我计算了任意两对约 1200 人之间的相似度/不相似度,范围为 0-1。
我想在 XY 平面上可视化这些关系。是否有任何软件工具可以处理这些关系,并将具有高相似性的人彼此靠近而远离彼此具有高差异性的人?
您需要使用多维缩放。目标是确定数据的转换,该转换将表达二维线性距离的相似性的相对差异。您将需要为此使用经典或基于度量的缩放。
以下是 R 的示例:
代码相当简单。魔术师全力以赴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)