2017-08-15 44 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