私は1と0の行列を与えられます。私は行列に1つのspecific
行に向けた最高のコサインメトリックを持っている20行を見つける必要があります。
cosine(1row,5row),cosine(2row,5row),...,cosine(8row,5row),cosine(9row,5row)
scipyで "余弦"メトリックを計算する最速の方法
私は10行を持っている場合は、第5回はspecific
と呼ばれているが、私はこれらの間の最高値を選びたいです
まず、メトリクスをカウントしようとしました。 これは動作しませんでした:
A = ratings[:,100]
A = A.reshape(1,A.shape[0])
B = ratings.transpose()
similarity = -cosine(A,B)+1
A.shape = (1L, 71869L)
B.shape = (10000L, 71869L)
エラーがある:Input vector should be 1-D.
私はエラーなしで審美的にこれを実装する方法を、知りたい、しかし最も重要なのだろう - 最速される解決策?
私の意見では、最も速い方法はscipy
の助けを借りて実現されていません。 specific
行のすべてのものを取り、他のすべての行でこれらのインデックスを調べるだけです。最も一致度が高い行は、最も高い行列を持ちます。
もっと速い方法がありますか?
あなたはmatrix'に1つの特定の行への最高のコサインメトリックを持っている 'と言って何を意味するのですか?サンプルデータセットと希望のデータセットを投稿できますか? – MaxU
あなたが知っているように、scipyに[余弦距離](http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.spatial.distance.cosine.html)の機能があります。 –
@ juanpa.arrivillagaはい、それはすべての距離を(すべての要素〜O(n!)の間で数えます)これは非常に非合理です –