こんにちは、侍エンジニアです。
機械学習を始めたいと思ってGoogle検索すると、いろんな記事でPythonを使っています。
しかし、
「なんで機械学習にはPythonがいいの??」
「Python学習にはまず何から始めればいいの?」
と思う方も多いですよね。
そこでこの記事では、Pythonの基礎知識からより実践的な知識までをまとめました。
機械学習に興味があり、これからPythonを学びたいとお考えの方はぜひ参考にしてください。
【こんな方に向けて書きました】
・Pythonを学習するにはどんな開発環境を使えば良いのか知りたい
・機械学習を学ぶためには何が必要か知りたい
・Pythonがなぜ機械学習に適しているか知りたい
なお、Pythonの記事については、こちらにまとめています。
「機械学習するならPython」はなぜ?
たくさんのプログラミング言語があるのに、なぜ機械学習をするならPythonが良いのでしょうか?
機械学習によく使われるプログラミング言語をまずはチェックしてみましょう。
「機械学習でよく使われるプログラミング言語一覧」
- C/C++
- Java
- Python
- R
- Julia
この中で、最も細部までコーディングするのに適しているのはC/C++です。
また、速度や実行環境によってはJavaも選択肢になります。
さて、パラメータチューニング、モデル設計などの、機械学習のより重要な作業などを行うときに、コーディングにばかり時間を取られると困る時があります。
できるならば既成の機械学習ライブラリで済むところは済ませてしまいたい。
それでも足りないところを自分でコーディングするんです。
このような使い方をする時、Pythonは非常に強力な選択肢になります。
Pythonには膨大な機械学習ライブラリと、機械学習プログラミングを行うのに適した開発環境があります。
この点において、Pythonは他の言語より優れているということになります。
同じような特性を持った言語にRがありますが、こちらはどちらかというと統計解析の分野に強いと言えます。
また近年急速に成長してきているJulia言語のように、この分野に最適化されたプログラミング言語もあります。
ですがまだエコシステムの面では、Pythonに勝てる存在はいないようです。
今、機械学習を勉強するなら、Pythonがオススメです。
Pythonディストリビューション
この章では機械学習にオススメのライブラリや周辺ツールを集めたPythonディストリビューションをご紹介します。
※普通にPythonだけをインストールしてもOKですが、これから紹介するPythonディストリビューションをインストールすることで「より簡単に」機械学習開発をスタートすることができますよ!
Anaconda
リンク: Anaconda
Anaconda Distributionは、Pythonユーザーがデータサイエンスや機械学習を行うための最もポピュラーなPython ディストリビューションです。
これ一つをインストールするだけで、
- Python自体
- Numpyを始めとした機械学習に必要なライブラリ
- Jupyter Notebookなどの開発環境
- これらを簡単に管理するcondaコマンド
などが手に入ります。
AnacondaをインストールするとAnaconda Navigatorというアプリケーションが使えます。
これを起動すると、上のスクリーンショットのようなアプリケーションが使えるようになっていることがわかりますね。
後は[Launch]というボタンを押せばそれぞれのアプリケーションが起動します。
機械学習やデータ解析に必要なライブラリがたくさん集められているので、インストーラのサイズが結構大きいのがネックです。
ですがこれ単体で、仮想環境の作成からノートブックの利用など何でもできます。
最初に何をインストールすれば良いのかわからないのならば、まずはAnacondaを選んでみましょう。
Miniconda
Minicondaは、Anacondaのミニサイズ版です。
Anacondaで使えたcondaコマンドが使えるので、condaコマンドを使ったパッケージ管理(インストール/アンインストールなど)が使えます。
素のPythonを使うとうまくインストールできないようなライブラリでも、Anacondaを介することで簡単にインストールすることができます。
機械学習のプログラミングに必要なライブラリが自分でわかる人、Anacondaのような巨大なディストリビューションを自分のパソコンにインストールできない人はこちらを使いましょう。
Pythonの開発環境
この章では、Pythonの開発環境について紹介します。
Jupyterlab
リンク: Jupyter.org
Jupyterlabはデータ解析・機械学習プログラミングに適したPythonの開発環境です。
Jupyter Notebookという、ドキュメントとプログラムを同じファイルにまとめることができるアプリケーションの進化系のような存在です。
Jupyterlabを起動すると、上のような画面が表示されます。
左側は作業環境のディレクトリが表示されます。
右側のLauncherは、以下の3つの機能が使えます。
- Notebook
- Jupyter Notebookが使えます。
- 自分がインストールしているカーネル(Jupyterで使えるプログラミング言語)が表示されています。
- Console
- 対話環境(REPL)が使えます。
- Notebookと同じく、自分がインストールしているカーネルが表示されています。
- Other
- Terminal(俗に言う”黒い画面”です)が使えます。
- Text Editor(メモ帳のようなアプリです)が使えます。
さて、NotebookのPython 3をクリックして、実際に試してみましょう。
メモとプログラムを一緒に残せるというのは、実験結果と考察を一緒にして共有するときに非常に便利です。
数式やグラフも残せるので、実務でも勉強のときでも非常に活躍します。
Visual Studio Code
リンク: Visual Studio Code
Visual Studio Code(通称VS Code)は、Microsoft製のテキストエディタです。
有名な統合開発環境であるVisual Studioの名前を受け継ぐモダンなエディタで、Atomと並びプログラマに愛されています。
VS Codeは様々なプログラミング言語を開発することができる拡張機能があります。
Pythonに適した設定にするには、Pythonに適した拡張機能をインストールする必要があります。
[適当なファイル名].py(例えばsample.py)を作ってVS Codeで開けば、その言語にオススメの拡張機能のインストールを勧めてくるので、それに従ってPython向けの環境を整えましょう。
ではVS Codeを使ってPythonを書き、実行までやってみます。
この記事では、Windows 10を使っていますが、LinuxやMacでも同様に使うことができます。
コーディングからスクリプトの実行まで、プログラミングに必要な一通りの作業がこの中でできます。
起動も早く、エディタ自体の開発速度もスピード感があります。
拡張機能も様々な人達によって公開されているので、自分の好みにあうカスタマイズをして使いましょう。
VS Codeは機械学習のモデルを自分で実装するときなど、長めのコードを書くときにオススメです。
機械学習向けPythonライブラリ
この章では機械学習向けのPythonライブラリを紹介します。
scikit-learn
リンク: scikit-learn.org
scikit-learn(通称sklearn)は、Python向けの機械学習ライブラリです。
Numpy、SciPyなどの行列計算ライブラリ、matplotlibなどのPythonで人気の可視化ライブラリなどを使って実装されています。
非常に広範囲の機械学習モデルと、データの前処理やユーティリティがまとめられたライブラリで、Deep Learning以前の古典的な機械学習モデルを収めています。
ところで、もしも自分でこれらの機械学習モデルを実装する事になったら、その作業は非常に大変だと思います。
ですがそんなに頑張ってモデルを実装しても、その後のパラメータのチューニングやデータの前処理の方が更に時間がかかるものです!
それならば、sklearnという巨人の肩の上に立ってみましょう。
例えばSVM(サポートベクトルマシン)というモデルを使い、何かのデータを分類するコード書くとします。
最も本質的な部分(モデルの作成、教師データと教師ラベルによるモデルの学習、テストデータによる分類性能のテスト)は下にある非常に短いスニペットで実行できてしまうんです。
from sklearn import svm clf = svm.SVC() clf.fit(data_train, label_train) pred_label = clf.predict(data_test)
データ解析が目的ならば、sklearnを使うことでより本質的な作業に時間を割くことができます。
sklearnはPythonで機械学習をしている人なら誰しもが知っているライブラリなので、困ったことがあったらインターネットでほしい情報を見つけるのも簡単です。
まとめ
この記事では、Pythonで機械学習を扱うための開発ツールや、実際に様々な機械学習モデルが収められたライブラリを紹介しました。
scikit-learnを使った機械学習プログラムを書くまでに必要なツール周りの情報をまとめたので、この記事を参考にして、是非Pythonと機械学習の勉強を始めてみてくださいね。