はじめに
これから、機械学習で使われる科学計算ライブラリを数記事に渡って説明していきます。
今回はNumpy編です。
全体ではなく機械学習で使われる機能を中心に紹介していきます。
また、Jupyter Notebookでコードを書いてくので、
コマンドプロンプトと動作が異なることには注意してください。
目次
- Version確認
- Numpy 基礎編
- 最後に
- 参考文献
Version確認
import numpy as np
np.__version__
#'1.16.4'
Numpy 基礎編
Numpyは多次元配列データを扱うライブラリです。
多重配列や行列を扱う際は、大変便利です。
行列の計算を理解していると、すんなり入ってきます。
(僕は行列が未熟だったので、数学の教科書も見ながら学んでました。時節、紙で計算したりしてます。)
import numpy as np
Numpyはよくnpというモジュール名に変換します。
(僕はそれ以外のモジュール名は見たことはありませんでした。)
a = np.array([1,2,3,4,5])
# []を忘れないで下さいね
>>>a
array([1, 2, 3, 4, 5])
>>>print(a)
[1 2 3 4 5]
>>>type(a) #型の確認
numpy.ndarray
>>>b = np.array([[1,2,3,4,5],[6,7,8,9,10]])
>>>b
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10]])
>>>print(b)
[[ 1 2 3 4 5]
[ 6 7 8 9 10]]
>>>a.shape
(5,)
>>>b.shape
(2,5)
>>>np.arange(1,10,2)
array([1, 3, 5, 7, 9])
>>>np.arange(2,11,2)
array([ 2, 4, 6, 8, 10])
>>>d = np.arange(1,11,1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>>d.shape #shapeで配列の形を表示
(10,)
>>>d.reshape(2,5) #2行×5列の行列
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10]])
>>>d.reshape(5,2) #5行×2列の行列
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10]])
>>>d.reshape(10,1) # 10行×1列の行列
array([[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10]])
>>>np.arange(1,10).reshape((3,3))
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
##算術計算
配列同士で計算もできます。
ただし、計算する配列は行と列の数を一致するようにしてください。
>>>x = np.array([1.0,2.0,3.0])
>>>y = np.array([4.0,5.0,6.0])
>>>x+y
array([5., 7., 9.])
>>>x*y
array([ 4., 10., 18.])
>>>x-y
array([-3., -3., -3.])
>>>x/y
array([0.25, 0.4 , 0.5 ])
##ブロードキャスト
配列の内部データに直接演算できます。
機械学習の中で内積は必ず出てきますので、仕組みを覚えときましょう。
内積A・Bでは、Aの列の数とBの行の数を合わせること
>>>z = np.array([1,2,3])
>>>z.shape
(3,)
>>>v =np.array([[2],[3],[4]])
>>>v.shape
(3, 1)
>>>np.dot(z,v)
array([20])
>>>e = np.array([[1,2,3],[4,5,6]])
>>>e
array([[1, 2, 3],
[4, 5, 6]])
>>>f =np.array([[3,3],[3,3],[3,3]])
>>>f
array([[3, 3],
[3, 3],
[3, 3]])
np.dot(e,f)
array([[18, 18],
[45, 45]])
#最後に
今回はNumpyの簡単な部分を書いていきました。
次は、行列を使ってニューラルネットワークの計算の仕組みを書いていきます。
#参考文献
- ゼロから作るDeep Learning
- Pythonで動かして学ぶ! あたらしい 機械学習の教科書
- Pythonによる あたらしいデータ分析の教科書