ベクトル(vector)とは #
教科書 p.417(Quick Reference)ベクトルとは,向きと大きさを持った量を表す数学的な概念です.
Python では,ベクトルを表す直接的な型はありません.
ただし,Numpyの配列(array
)を用いることで,ベクトルを表現できます.
import numpy as np
a = np.array([ 3, 4, 5 ])
b = np.array([ 6, 7, 8 ])
a + b # ベクトルの和
# => array([ 9, 11, 13])
a - b # ベクトルの差
# => array([-3, -3, -3])
2 * a # ベクトルのスカラー倍
# => array([ 6, 8, 10])
len(a) # ベクトルの次元数
# => 3
a.dot(b) # ベクトルの内積
# => np.int64(86) (3 * 6 + 4 * 7 + 5 * 8)
np.inner(a, b) # これでも内積を計算できる.
# => np.int64(86) (3 * 6 + 4 * 7 + 5 * 8)
np.linalg.norm(a)
# => np.float64(7.0710678118654755) # ベクトルの長さ
例題 コサイン類似度 #
2つのベクトル \(v_1, v_2\) が与えられたとき,両ベクトルが成す角度のコサインの値(\(\theta\))を類似度として扱うことがあります. 適当に2つのベクトルを構築し,コサイン類似度を求めてみましょう.
\[ \cos \theta = \frac{v_1 \cdot v2}{|v_1| |v_2|} \]
# cos_similarity.py
import numpy as np
v1 = np.array([ 1, 3, 5, 7, 11 ])
v2 = np.array([ 2, 4, 6, 8, 10 ])
v1.dot(v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))