2017-08-15 39 views
0

我使用包'lsa'中的cosine()计算余弦相似度。这里有三个测试向量:R中的错误:余弦相似度和MDS

d <- data.frame(c(-1,1,0,-1,1,1,-1,1,0),c(-1,1,1,1,-1,1,-1,0,1),c(0,0,1,0,-1,-1,0,1,-1)) 
colnames(d) <- c("vector1","vector2","vector3") 
d_dist <- cosine(as.matrix(d)) 

现在,我想要做的降维与cmdscale和情节后,作为散点图:

fit <- cmdscale(d_dist,k=2) 

x <- fit[,2] 
y <- fit[,1] 
plot(x,y) 

但我一直得到警告在cmdscale(d_dist, k = 2):前2个特征值中只有0个> 0 [从德语翻译]和一个空的拟合对象。

我在做什么错?非常感谢你的帮助!

回答

0

输入应该是距离矩阵。例如:

d_dist <- 1-d_dist 
fit <- cmdscale(d_dist,k=2) 

x <- fit[,2] 
y <- fit[,1] 
plot(x,y) 
+0

谢谢。有用。它是1-d_dist,因为cmdscale不适用于负值? –

+0

余弦在0和1之间,负值不适用于此。错误信息告诉你矩阵不能被分解(即,矩阵不可调整)。实际上,这是因为你输入了一个相似度矩阵,而不是一个距离/相异矩阵。 – thc