.. _intro: はじめに ======== 機械学習の基本的な手法の実装を通じて,Python による科学技術計算プログラミングについて知ることができるように,このチュートリアルを執筆しました. .. _intro-intro: 本チュートリアルの方針 ---------------------- このチュートリアルでは,いろいろな機械学習の手法を Python で実装する過程をつうじて,NumPy や SciPy など科学技術計算に関連したモジュールの具体的な使い方を説明します. 機械学習の手法についてはごく簡単な説明に留めますので,詳細は他の本を参考にして下さい. また,クラスなどのプログラミングに関する基礎知識や,Python の基本的な文法については知っているものとして説明します. プログラム言語やライブラリの解説の多くは,背景にある概念の説明,ソフトウェアのコア部分の仕様,そして,拡張部分の仕様といった順に,その機能の説明が中心となっています. ここでは,これらとは違うアプローチで Python を用いた数値計算プログラミングを説明します. まず,数値計算プログラミングの中でも,機械学習のアルゴリズム [#]_ の実装について述べます. そして,これらのアルゴリズムを実装する過程で用いた関数やクラスの機能について順次説明します. 今までのように,概念や機能を中心とした説明は,ソフトウェアの機能を体系的に知るには良い方法です. しかし,どう使うのかが分からないまま,多くの機能についての説明を読み続けるのは,やや忍耐を要します. さらに,さまざまな機能を,どういう場面でどのように使うのかを具体的に知ることはあまりできません. そこで,具体的にアルゴリズムの実装し,ソフトウェアを完成させてゆくことで,興味深く Python を使った科学技術計算プログラミングについて,具体的に知ることができるように工夫しました. ただ一方で,このような方針では,網羅的にパッケージやソフトウェアの機能を説明することは難しくなります. NumPy や SciPy には,体系的なリファレンスマニュアルやサンプルも整備されています. また `SciPy や EuroSciPy などの国際会議 `_ でも各種の優れたチュートリアルが公開されています. これらの体系的な情報に,このチュートリアルの具体的な実装例を補うことで,Python を用いた数値計算プログラミングについてより深く知ることができるようになればと思います. .. only:: html and not epub なお,このチュートリアルには,このHTML版の他に, `PDF版 `_ と `ePub版 `_ もありますので,必要に応じてご利用ください. .. only:: not latex .. rubric:: 注釈 .. [#] 著者の専門が機械学習なので対象として選びました. NumPy や SciPy は機械学習専用というわけではなく,数値計算プログラミング全般について使いやすい機能を提供しています. .. _intro-note: ソースコード ------------ 本稿のソースコード関する情報と注意点を最初にまとめておきます. 実行可能なソースコードは次の URL より参照できます. https://github.com/tkamishima/mlmpy/tree/master/source 本稿では,以下のソフトウェアを利用します. * まず `Python `_ を利用します. このチュートリアルでは,Python3系統を対象とします. バージョン 3.5 で動作検証を行いましたので,これ以降のバージョンが望ましいです. Python2 との相違点については脚注などで補足しますが,これから新しく Python を学ばれるのであれば,Python3 を対象とされることを強くお薦めします. * ここで紹介する `NumPy `_ と `SciPy `_ も利用します. .. index:: scikit-learn * 機械学習のライブラリ `scikit-learn `_ のAPI仕様に従ってクラスを設計します. ただし,scikit-learn 自体の利用法については紹介しません. これらのモジュールは以下のように :obj:`import` されていることを前提とします: .. code-block:: python import numpy as np import scipy as sp バグリポート ------------ TYPO や記述の誤りを見つけられた場合は,ご連絡いただけると今後の改善に役立てることができます. ご協力いただける場合は,このチュートリアルのソースファイル公開している ``GitHub`` の pull request か issues の機能を使ってお知らせ下さい. https://github.com/tkamishima/mlmpy できれば,issues より, pull request をいただける方が助かります. なお,事情によりすぐには対処できない場合もありますことを,あらかじめご承知おき下さい.