🐈
Act 11. numpyを使ってみる
はじめに
Act 01. AIで外国為替を自動売買するまでの道のりをベースに学習を進めて行く。
Act 10. 機械学習に触れる前に学んだ数学の内容では機械学習に必要な最低限の数学を学習した。
Act 06. Pythonでデータ処理を行うの時にnumpy
を触る予定だったが、数学の知識がなさ過ぎて断念したため、今回はAct10で学んだ内容をnumpy
でやってみようと思う。
微分
numpy
で微分を行う関数はないらしい。残念。
sympy
というモジュールならできるそうだけど、今回はいったん諦める。
線形代数
線形代数はどんとこい!って感じらしいので触ってみる。
行列の定義
まずは行列を定義する方法。
array
関数で定義可能。
配列の中に配列(行)を追加していく感じらしい。
Act11.py
import numpy as np
A = np.array([[1, 2]])
print("1x2行列")
print(A)
B = np.array([[1, 2], [3, 4], [5, 6]])
print("3x2行列")
print(B)
出力は以下の通り。
1x2行列
[[1 2]]
3x2行列
[[1 2]
[3 4]
[5 6]]
行列の積
二つの行列の積を求める場合はdot
関数を使用する。
Act11.py
import numpy as np
A = np.array([[1, 2]]) # 1x2行列
B = np.array([[1, 2], [3, 4]]) # 2x2行列
print(np.dot(A, B))
出力は以下の通り。
[[ 7 10]]
行列Bを3行2列にした場合、1行2列の行列と掛け算は出来ない。
Act11.py
import numpy as np
A = np.array([[1, 2]])
B = np.array([[1, 2], [3, 4], [10, 11]])
print(np.dot(A, B))
出力は以下の通り。
Traceback (most recent call last):
File "/home/onishi/python/Act11.py", line 6, in <module>
print(np.dot(A, B))
^^^^^^^^^^^^
ValueError: shapes (1,2) and (3,2) not aligned: 2 (dim 1) != 3 (dim 0)
転置行列
転置行列も可能。
Act11.py
import numpy as np
A = np.array([[1, 2]])
B = np.array([[1, 2], [3, 4]])
print(B.T)
出力は以下の通り。
[[1 3]
[2 4]]
統計
平均や中央値、分散、標準偏差を求めてみる。
平均
まずは平均から。
Act11.py
import numpy as np
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1000000000])
print(data.mean())
print(np.mean(data))
出力は以下の通り。
どちらでも同じ結果になる。
90909095.9090909
90909095.9090909
中央値
先ほどの平均値は一つの大きな値につられているため、中央値を求めてみる。
Act11.py
import numpy as np
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1000000000])
print(np.median(data))
出力は以下の通り。
6.0
分散
分散も求められる。
Act11.py
import numpy as np
data = np.array([25, 13, 86, 45, 77, 94, 43, 44, 24, 10, 32])
print(np.var(data))
出力は以下の通り。
760.8760330578511
標準偏差
先ほどの分散の内容を標準偏差にした場合
Act11.py
import numpy as np
data = np.array([25, 13, 86, 45, 77, 94, 43, 44, 24, 10, 32])
print(np.std(data))
出力は以下の通り。
どのくらいのばらつきがあるか求められた。
27.583981457683937
さいごに
実際に使ってみて思ったけど、なんか難しいね。
結局どれが重要なのか全くわからないし、どこで必要になるのか分からないとモチベが。。
これから学ぶ機械学習の内容で必要になったものをしっかり学ぼうと思う。
一旦こんなことが出来るんだな程度で次に進もうと思う。
ではまた
Discussion