はじめに

機械学習の基本的な手法の実装を通じて,Python による科学技術計算プログラミングについて知ることができるように,このチュートリアルを執筆しました.

本チュートリアルの方針

このチュートリアルでは,いろいろな機械学習の手法を Python で実装する過程をつうじて,NumPy や SciPy など科学技術計算に関連したモジュールの具体的な使い方を説明します. 機械学習の手法についてはごく簡単な説明に留めますので,詳細は他の本を参考にして下さい. また,クラスなどのプログラミングに関する基礎知識や,Python の基本的な文法については知っているものとして説明します.

プログラム言語やライブラリの解説の多くは,背景にある概念の説明,ソフトウェアのコア部分の仕様,そして,拡張部分の仕様といった順に,その機能の説明が中心となっています. ここでは,これらとは違うアプローチで Python を用いた数値計算プログラミングを説明します. まず,数値計算プログラミングの中でも,機械学習のアルゴリズム [1] の実装について述べます. そして,これらのアルゴリズムを実装する過程で用いた関数やクラスの機能について順次説明します.

今までのように,概念や機能を中心とした説明は,ソフトウェアの機能を体系的に知るには良い方法です. しかし,どう使うのかが分からないまま,多くの機能についての説明を読み続けるのは,やや忍耐を要します. さらに,さまざまな機能を,どういう場面でどのように使うのかを具体的に知ることはあまりできません. そこで,具体的にアルゴリズムの実装し,ソフトウェアを完成させてゆくことで,興味深く Python を使った科学技術計算プログラミングについて,具体的に知ることができるように工夫しました.

ただ一方で,このような方針では,網羅的にパッケージやソフトウェアの機能を説明することは難しくなります. NumPy や SciPy には,体系的なリファレンスマニュアルやサンプルも整備されています. また SciPy や EuroSciPy などの国際会議 でも各種の優れたチュートリアルが公開されています. これらの体系的な情報に,このチュートリアルの具体的な実装例を補うことで,Python を用いた数値計算プログラミングについてより深く知ることができるようになればと思います.

なお,このチュートリアルには,このHTML版の他に, PDF版ePub版 もありますので,必要に応じてご利用ください.

注釈

[1]著者の専門が機械学習なので対象として選びました. NumPy や SciPy は機械学習専用というわけではなく,数値計算プログラミング全般について使いやすい機能を提供しています.

ソースコード

本稿のソースコード関する情報と注意点を最初にまとめておきます.

実行可能なソースコードは次の URL より参照できます.

本稿では,以下のソフトウェアを利用します.

  • 言うまでもなく Python を利用します. Python3 ではなく,Python2系統の最終版とされるバージョン 2.7 を想定しています.
  • ここで紹介する NumPySciPy も利用します. NumPy は 1.6.0 以降, SciPy は 0.10.0 以降のバージョンを想定しています.
  • 機械学習のライブラリである scikit-learn の利用や連携についても紹介します. scikit-learn はバージョンが 0.10 以降を想定しています.
  • Matplotlib はグラフ(チャート)を描くためのライブラリで,入力データや学習結果の表示に利用します. バージョンは 1.1.0 以降を想定しています.

これらのモジュールは以下のように import されていることを前提とします:

import numpy as np
import scipy as sp
import sklearn

バグリポート

TYPO や記述の誤りを見つけられた場合は,ご連絡いただけると今後の改善に役立てることができます. ご協力いただける場合は,このチュートリアルのソースファイル公開している GitHub の pull request か issues の機能を使ってお知らせ下さい.

できれば,issues より, pull request をいただける方が助かります. なお,事情によりすぐには対処できない場合もありますことを,あらかじめご承知おき下さい.