機械学習のためのPython
2016年にGoogle DeepMindの「AlphaGo」が世界トップの囲碁棋士を破ったことで、機械学習 / Deep Learningが注目されるようになりました。また機械学習を学ぶ目的でPythonの人気も高まっています。なぜPythonなのかというと、次のような点が挙げられるかと思います。
- 機械学習に必要なライブラリが数多くある
- 処理速度の早いライブラリが揃っている
- 機械学習のためのサーバ群を簡単に操作できる
- インタプリタ言語であるためトライアンドエラーしやすい
- プログラミング言語初学者でも学びやすい
NumPyの処理速度
機械学習というと、大量のデータを扱うため高速な処理速度が求められます。ではPythonは処理速度が早いのでしょうか?上述したとおりPythonはインタプリタ言語です。C/C++のようなコンパイラ言語には及びません。実際にC/C++で機械学習を行っている研究者は多いです。それでもPythonが機械学習に用いられるのは処理速度の早いライブラリが揃っているからです。例えば、機械学習のためにPythonを学び始めると、一番最初に扱うライブラリが「NumPy」でしょう。
Python自体は変数に型を持ちませんが、NumPyは効率的に計算させることができるよう型付きの多次元配列をサポートしています。またベクトルや行列を操作するための関数ライブラリです。このNumPyの内部はC言語で実装されているため、Pythonで計算するより早いのはもちろんのこと、C言語と比較しても遜色のない処理速度を誇っています。
NumPyの利用
ライブラリというと身構えてしまう方もいますが、決して難しいものではありません。それでは少しだけNumPyに触れてみましょう。Pythonの環境が手元にない方は、Google Cloud Shellを利用するといいでしょう。
Google Cloud Shellの実態
Pythonのインタラクティブモードで実行してみましょう。ここではPython3を利用します。python3とタイプするとインタラクティブモードが開始します。
$ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170118] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
それでは次のソースコードを入力して下さい。
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6]], dtype=np.int32)
>>> a.shape
(2, 3)
>>> a[0,1]
2
1行目ではNumPyを利用する宣言を行っています。またソースコード上では np と表記できます。2行目で配列 a を生成しています。配列 a は次のような2次元配列です。
3行目は配列 a の形状およびサイズを表すものであり、その結果が「(2, 3)」と表示されています。各配列の値を取得するときは4行目のように次元順に添え字でアクセスします。a[0, 1] が 2 であることがわかります。
まとめ
いかがでしたでしょうか。NumPyの最も入り口の部分を見ていただきましたが、決して難しいものではないことが判って頂けたかと思います。もちろんNumPyには難しい計算を行うための関数が多数備わっています。NumPyの勉強の導入部になれば幸いです。一昔前は算術計算と言えばFortranやMATLABが利用されていましたが、今やPythonが一番人気となっています。時代に合わせて学ぶプログラミング言語を選ぶことは大切ですね。