Matrix, Vector

2385 ワード

Matrix


1年生で勉強し、先代から数学の知識が削除された.後味としてnumpy記号と記録.

Annotation


scalar calculation


numpy中+,-可能

scalar product


Hardmard Product:シルバーベクトルの間に成分を乗じる
X · Y
X * Y

Norm



原点からベクトルまでの距離.
L 1ノルム=変化量の絶対値の和
L 2ノルム=ユークリッド距離

ベクトル間の角度



2番目の余弦法則を用いて,2つのベクトル間の角度を計算できた.
def angle(x, y):
    v = np.inner(x, y) / (l2_norm(x) * l2_norm(y))
    theta = np.arccos(v)
    return theta

multiplication


XY
X @ Y
行列乗はまた、行列をベクトル空間の演算子として理解することもできる.これは、ベクトルがマトリクス積によって別の次元のベクトルに送信されるからである.
すなわち、モード抽出およびデータ圧縮に用いることができる.

inner product




inner in numpy


np.内積はベクトル間の内積です.行列にベクトル間の内積を表す場合は、通常Transposeを使用して数式化されます.
np.inner(X, Y)

Inverse matrix

np.linalg.inv(X)

ぎぎゃくぎょうれつ

  • 逆行列とは異なり、行と列の数は一定ではない.
  • は、それでも逆行列と同様の役割を果たす.

    n=行、m=列
  • np.linalg.pinv(X)

    連立方程式を解く



    せんけいかいきかいせき



    データの分布を考慮すると,連立方程式のように線形回帰解析を行うことは不可能である.
    従って,通常はyのL 2ノルムを最小化する方向に解を探す.
    # using sklearn for linear regression
    from sklearn.linear_model import LinearRegression
    model = LinearRegression()
    model.fit(X, y)
    y_test = model.predict(x_test)
    
    # Moore-Penrose inverse matrix
    X_ = np.array([np.append(x, [1]) for x in X]) # y절편(intercept) 추가
    beta = np.linalg.pinv(X_) @ y
    y_test = np.append(x_test) @ beta
    sklearnは線形回帰時にyスライスを自動的に推定して計算する.
    Moore‐Penrose逆行列による線形回帰では,yスライスを直接添加してXを構築する必要がある.