2017-08-15 11 views
0

パッケージ 'lsa'から余弦()を使ってコサインの類似度を計算します。ここでは3つのテストベクトルを有する:今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とし、そのプロットした後、次元削減をしたい:(d_dist

fit <- cmdscale(d_dist,k=2) 

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

をしかし、私はいつもcmdscaleで警告を取得し、 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

ありがとうございます。できます。 cmdscaleが負の値で動作しないため、1-d_distですか? –

+0

余弦は0と1の間にあり、負の値はここでは適用されません。エラーメッセージは、マトリックスが分解できないことを示しています(つまり、マトリックスは対角化できません)。実際に言えば、距離/非類似行列ではなく、類似行列を入力するからです。 – thc

関連する問題