7

辞書を使用して特徴ベクトルを表すとします (なぜですか? 特徴がまばらであることはわかっているためですが、後で詳しく説明します)。

そのような 2 つの辞書 (A、B と表示) の内積をどのように実装すればよいですか?

私は単純なアプローチを試みました:

for k in A:
  if k in B:
    sum += A[k] * B[k]

しかし、それは遅いことがわかりました。

詳細:

  • 機能を表すために辞書を使用しています。

    1. 機能キーは文字列です
    2. ~20K の可能なキーがあります
    3. 各ベクトルはまばらです (たとえば、約 1000 個の非ゼロ要素)。
  • N=2000 の異なる辞書 (つまり、それらの線形カーネル) のペアごとの内積を計算することに本当に興味があります。

4

5 に答える 5

2

A が B よりもはるかに長い場合、これはおそらく役立つでしょうか?

if len(A) > len(B):
    A, B = B, A

for k in A:
    if k in B:
        the_sum += A[k] * B[k]
于 2013-08-16T08:31:34.233 に答える