はじめに
重回帰分析をするにあたり必要な計算があるので整理する。
numpyはimportされているものとする
import numpy as np
ベクトルの定義
# ベクトルの定義
x = np.array([[1],[2],[3]])
print(x)
![](https://tsukada.sumito.jp/wp-content/uploads/2019/01/スクリーンショット-2019-01-27-1.48.11.png)
行列の定義
X = np.array([[1,2],[3,4]])
print(X)
![](https://tsukada.sumito.jp/wp-content/uploads/2019/01/スクリーンショット-2019-01-27-1.48.44.png)
転置
# 転置
Xt = X.T
print(Xt)
![](https://tsukada.sumito.jp/wp-content/uploads/2019/01/スクリーンショット-2019-01-27-1.50.28.png)
逆行列
linear algebra (リニア・アルジェブラ)線形代数の意味
Inverse (インバース) 逆行列の意味
X_inv = np.linalg.inv(X)
print(X_inv)
![](https://tsukada.sumito.jp/wp-content/uploads/2019/01/スクリーンショット-2019-01-27-1.51.44.png)
行列積
XX_inv = np.dot(X,X_inv)
print(XX_inv)
![](https://tsukada.sumito.jp/wp-content/uploads/2019/01/スクリーンショット-2019-01-27-1.52.27.png)
x掛けるxの逆行列で行列積が求まる。
よく使う計算
以下の様なnumpyの配列を作り、行、列の数を取得したり、forループで値を取得したりする
import numpy as np
x = np.array([[1,2,3]])
print (x)
print ('-----')
X = np.array([[1,2],[3,4]])
row, cal = X.shape
print(row)
print(cal)
print ('-----')
for x in X:
print ('-----')
print (x)
~
~
実行結果
$ python sample.py
[[1 2 3]]
-----
2
2
-----
-----
[1 2]
-----
[3 4]
演習
xとyを以下の通り定義する。xの1行目にはダミー値として1をセットする事。
![](https://tsukada.sumito.jp/wp-content/uploads/2019/01/スクリーンショット-2019-01-27-11.46.39-300x174.png)
# X definitions
print('# X definitions')
X = np.array([
[1,2,3],
[1,2,5],
[1,3,4],
[1,5,9]
])
print(X)
# Y definitions
print('# Y definitions')
y = np.array([
[1],
[5],
[6],
[8]
])
print(y)
実行結果
# X definitions
[[1 2 3]
[1 2 5]
[1 3 4]
[1 5 9]]
# Y definitions
[[1]
[5]
[6]
[8]]
また、wは以下の通りとし、stepを分けて計算する
![](https://tsukada.sumito.jp/wp-content/uploads/2019/01/スクリーンショット-2019-01-27-11.49.15-300x230.png)
# Step1
print('# Step1')
step1 = np.dot(X.T, X)
print(step1)
# Step2
print('# Step2')
step2 = np.linalg.inv(step1)
print(step2)
# Step3
print('# Step3')
step3 = np.dot(X.T,y)
print(step3)
# Step4
print('# Step4')
step3 = np.dot(X.T,y)
step4 = np.dot(step2,step3)
print (step4)
実行結果は以下の通り
# Step1
[[ 4 12 21]
[ 12 42 73]
[ 21 73 131]]
# Step2
[[ 1.76530612 -0.39795918 -0.06122449]
[-0.39795918 0.84693878 -0.40816327]
[-0.06122449 -0.40816327 0.24489796]]
# Step3
[[ 20]
[ 70]
[124]]
# Step4
[[-0.14285714]
[ 0.71428571]
[ 0.57142857]]