機械学習の基本的な手法の実装を通じて,Python による科学技術計算プログラミングについて知ることができるように,このチュートリアルを執筆しました.
このチュートリアルでは,いろいろな機械学習の手法を Python で実装してゆくことで, NumPy や SciPy など科学技術計算に関連したモジュールの具体的な使い方を説明します. 機械学習の手法についてはごく簡単な説明に留めますので,詳細は他の本を参考にして下さい. また,クラスなどのプログラミングに関する基礎知識や,Python の基本的な文法については知っているものとして説明します.
プログラム言語やライブラリの解説の多くは,背景にある概念の説明,ソフトウェアのコア部分の仕様,そして,拡張部分の仕様といった順に,その機能の説明が中心となっています. ここでは,これらとは違うアプローチで Python を用いた数値計算プログラミングを説明します. まず,数値計算プログラミングの中でも,機械学習 (Machine Learning) のアルゴリズム [1] の実装について述べます. そして,これらのアルゴリズムを実装する過程を通じて,その中で使われてきた各種のライブラリの機能について順次説明します.
今までのように概念や機能を中心とした説明は,ソフトウェアの機能を体系的に知るには良い方法です. しかし,どう使うのかが分からないまま,多くの機能についての説明を読み続けるのは,やや忍耐を要します. さらに,さまざまな機能を,どういう場面でどのように使うのかを具体的に知ることは難しかったりもします. そこで,具体的にアルゴリズムの実装し,ソフトウェアを完成させてゆくことで,興味深く Python を使った科学技術計算プログラミングについて,具体的に知ることができるように工夫しました.
ただ一方で,このような方針では,網羅的にパッケージやソフトウェアの機能を説明することは難しくなります. NumPy や SciPy には,体系的なリファレンスマニュアルやサンプルが整備されています.また SciPy や EuroSciPy などの国際会議でも各種の優れたチュートリアルが公開されています. これらの他の情報で,このチュートリアルにはない情報を補うことで,Python を用いた数値計算プログラミングについて知ることができるようになればと思います.
.. only:: html and not epub なお,このチュートリアルには,このHTML版の他に, `PDF版 </archive/mlmpyja.pdf>`_ と `ePub版 </archive/mlmpyja.epub>`_ もあります.
注釈
[1] | 著者の専門が機械学習なので対象として選びました. NumPy や SciPy が特に機械学習に適しているというわけではなく,数値計算プログラミング全般について使いやすい機能を提供しています. |
本稿のソースコード関する情報と注意点を最初にまとめておきます.
実行可能なソースコードは次の URL より参照できます.
https://github.com/tkamishima/mlmpy/tree/release/source
本稿では,以下のソフトウェアを利用します.
- 言うまでもなく Python を利用します. Python3 ではなく,Python2系統の最終版とされるバージョン 2.7 を想定しています.
- ここで紹介する NumPy と SciPy も利用します. _NumPy は 1.6.0 以降, _SciPy は 0.10.0 以降のバージョンを想定しています.
.. index:: ! scikit-learn
- 機械学習のライブラリである scikit-learn の利用や連携についても紹介します. _scikit-learn はバージョンが 0.10 以降を想定しています.
.. index:: matplotlib
- Matplotlib はグラフ(チャート)を描くためのライブラリで,入力データや学習結果の表示に利用します. バージョンは 1.1.0 以降を想定しています.
これらのモジュールは以下のように :obj:`import` されていることを前提とします:
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
import sklearn
TYPO や記述の誤りを見つけられた場合は,ご連絡いただけると今後の改善に役立てることができます.
ご協力いただける場合は,このチュートリアルのソースファイル公開している GitHub
の pull request か issue トラッカーでお知らせ下さい.
https://github.com/tkamishima/mlmpy
できれば,issue トラッカーより, pull request をいただける方が助かります. なお,事情によりすぐには対処できない場合もありますので,あらかじめご承知おき下さい.