初めてのPython機械学習
新規作成:2017年04月02日
最終更新:2017年06月06日
ここでは、Pythonを使った統計解析・機械学習の基礎とその勉強方法について説明します。
Pythonには2つの顔があります。
一つはWebアプリなどを作ることができる、使いやすい汎用プログラミング言語という顔。
もう一つは、データ分析、機械学習を数行のコードで書くことができる「高機能電卓」という顔です。
機械学習は、もはや電卓のような気軽さで実行できるようになりました。
けれども、その電卓は大変に高機能ですので、使いこなすには練習が必要です。
この記事ではPythonというプログラミング言語の紹介をするとともに、ネットでPythonを学ぶことのできるWebサービスを紹介します。
※この記事は、動画でPythonデータ分析を学ぶことのできる「Udemy」というサービスについての宣伝記事も兼ねています。
目次
- Pythonとはどのようなプログラミング言語か
- Pythonデータ分析の始め方:環境構築
- 高機能電卓としてのJupyter Notebook
- 動画で学ぶPythonデータサイエンス(PR)
1.Pythonとはどのようなプログラミング言語か
Pythonには2つの顔があります。
一つはWebアプリなどを作ることができる、使いやすい汎用プログラミング言語という顔。
もう一つは、データ分析、機械学習を数行のコードで書くことができる「高機能電卓」という顔です。
Pythonを使うと、ネットショッピングなどができるWebサービスを作ることができます。
もちろんデスクトップ上で動くアプリを作ることもできるし、ゲームだって作れます。
これはPythonが汎用的なプログラミング言語だからです。
当サイトではR言語の紹介もよくしていますが、R言語は統計解析に特化した言語です。もちろん気合を入れればゲームやアプリも作れるでしょうが、どちらかというと専門外。
一方のPythonは、アプリもゲームもいろいろ作ることができる。何かアプリを作って、その中に機械学習を使ったサービスも組み込みたい、といった場合にPythonは貴重な選択肢になると思います。
またPythonはコードが書きやすいことでも有名です。覚えなくてはならない「決まり事」が比較的少ない言語だと言い換えてもいいでしょう。プログラミング初心者の方にもお勧めできる言語です。
Pythonは有名なGoogleさんが採用していることでも知られています。メジャーな言語なので、ネット上にも情報がたくさん落ちています。
扱いやすくて有名で機能も強力。もちろん無料で使えるプログラミング言語、それがPythonです。
2.Pythonデータ分析の始め方:環境構築
Pythonは汎用的なプログラミング言語であると説明しました。
しかし、Pythonを使うことで、複雑なデータ分析や機械学習をまるで電卓をたたくように計算ができます。
それはPythonに豊富なデータ分析用のライブラリが用意されているからです。
ライブラリとは、拡張機能のようなものだと思ってください。その拡張機能を使えば、機械学習を数行のコードを書くだけで計算できるようになります。
そのライブラリはなかなかたくさんの種類があって、覚えるだけでもたいへんなのですが、「必要なライブラリ一括インストールツール」のようなものがあるので普通はそれを使います。Anacondaという名前がついています。
そのため、PythonとAnacondaをセットでインストールします。
といってもAnacondaをインストールすればPythonは勝手に入ってくるようです。
ダウンロードページは↓です。途中で、PATHを通すという設定にチェックを入れるようにしてください。
https://www.continuum.io/downloads
これで完成。
普通のPythonも、データ分析用の拡張機能も、みんなインストールできます。
古いサイトを見ると、pipがどうとかいろいろ書いてあることもありますが、2017年現在、セットアップはこれだけで十分です。
※ 本当はAnacondaをインストールツールと呼ぶのは少し間違っているのですが、便宜上そのように扱います。
3.高機能電卓としてのJupyter Notebook
Anacondaをインストールすると、Jupyter Notebookというのが勝手にインストールされています。
こいつが強力な電卓でして、コードを書いて実行ボタン(Shift + Enter)を押すと、機械学習でもなんでも計算結果をすぐに表示しれくれます。もちろんグラフ描画もできます。
Jupyter Notebookを起動すると、Google Chromeなどのブラウザが立ち上がります。
右上にある「New」~「Python3」というボタンを順に押していくとコードを入力できる画面に移ります。
ここにコードを書いていけば、計算ができます。
例えば、サポートベクトルマシンを使って、花弁の大きさなどからiris(アヤメ)の種類の分類を行うのであれば、以下のコードを実行すれば計算ができます。
# 必要なライブラリのインポート import numpy as np from sklearn import datasets from sklearn.svm import SVC from sklearn.cross_validation import train_test_split from sklearn import metrics # データの読み込み irisデータ iris = datasets.load_iris() X = iris.data Y = iris.target # 学習用とテスト用にデータを分ける X_train, X_test, Y_train, Y_test = train_test_split(X, Y, random_state=3) # 学習用データを使ってSVMの学習をさせる model = SVC() model.fit(X_train,Y_train) # テスト用データを使って予測の評価 predicted = model.predict(X_test) expected = Y_test print(metrics.accuracy_score(expected,predicted))
結果は『0.973684210526』と出てきます。97%の正答率で、アヤメの種類を分類することができました。
なお、「電卓」という呼び方をしていますが、大変高機能なため、計算以外にもいろいろできます。
例えば、メモ書きなどを残しておき、計算結果を保存することもできます。
簡単な「解析チュートリアルズ」のようなものを結果として残しておくことも可能です。
4.動画で学ぶPythonデータサイエンス(PR)
PythonもJupyter Notebookも大変に便利なのですが、機能は膨大です。すべて理解するのはなかなか難しいです。
ありがたいことに、勉強用の資料はネット上にたくさん落ちていますが、「ゼロから始めて、順を追ってステップアップしていく」データ分析の学習サイトとなるとあまり多くありません。
また独学で学ぶ場合は、学習を続けることもなかなか難しいものがあると思います。
そこで、UdemyというWebサービスの紹介をします。
Udemyは動画で学べる勉強サイトです。先ほどのサポートベクトルマシンのコードも、Udemyで勉強した内容を基にして作りました。
日本ではベネッセさんがパートナーとなっているようでして、ベネッセさんのウェブサイトに行くと「こどもちゃれんじ」や「進研ゼミ」の横っちょにUdemyという緑の文字が見られます。大人向け進研ゼミみたいな感じかなと思いました。
Udemyを利用すると、Pythonやデータ分析を「基礎から順にステップアップする内容で、かつ動画で」学ぶことができます。
ネットで受ける通信教育、みたいな感じです。
私は以下の講座を受講しました。
実は管理人、R言語が大好きでして、Pythonは食わず嫌いしていたのですが、この講座を受講して、Pythonデータ分析の基礎を抑えることができました。
講座を受けて、良かったと感じたところ、悪いかなと感じたところを簡単にまとめます。
【よかったこと】
・動画なので、食事などの片手間に学べる
とりあえず朝ご飯と晩ご飯を食べるときに見ていました(昼食は外出しているので)。テレビ見ているような感じですね。読書しながら食事をとるという技能は私は持ち合わせていないですが、動画見ながら食事なら十分できました。
もちろん難しい部分が出たときは食事が一瞬中断されるのですが、15秒単位で巻き戻しできるので見逃しはしなくて済みます。
・説明の順番が誠実
最初の方はNumpyなどの「Pythonプログラミングの基本」みたいな内容です。その次にデータ分析の肝「データの可視化」があるのですが、以下のような目次になっています。
・Seabornのインストール
・ヒストグラム
・カーネル密度推定
・分布の可視化
・ボックスプロットとバイオリンプロット
・回帰とプロット
・ヒートマップとクラスタリング
バイオリンプロットは見栄えがいいので、何の説明もなくしれっと出てくることが多いのですが、カーネル密度推定を知らないで「かっこいいから」と使うのはあまりよくないなと思うこともありました。
この講座では20分かけてカーネル密度推定の仕組みを説明してから、次に進んでくれます。ヒストグラムの次にカーネル密度推定を学ぶのは大事だと思っています。個人的にはカーネル密度推定の解説動画が一番好きでした。動画の良さである「手順を流して説明できる」という長所がよく出ています。
Pythonのセットアップからコーディングの基本、そしてデータ分析のツールの説明~データ分析の実践例~機械学習へと進んでいく順番も、奇をてらわない誠実な内容だと思いました。
【悪いと思ったこと】
・説明が長い
10分の動画なら、10分間画面を見続ける必要があります(あたりまえですね)。解説が丁寧であることの裏返しでしょうが、口調がすごくゆっくりでした。
ただし、速度の調整はできるようです。私は1.25~1.5倍速に早送りしながら観ていました。2倍だとちょっと言葉が聞き取りにくかったです。
・機械学習の理論の解説が少ない
動画なので仕方ないかもしれませんが、数式はほとんど出てきません。
カーネル密度推定のように簡単な概略を説明してはくれますが、SVMの理論などはさらっと流す程度です。
その代り、データの前処理~実際の解析に至る流れを丁寧に解説しているような印象を受けました。
数式が嫌いな方は逆にありがたいと感じるかもしれません。理論よりも実践を学びたい方にお勧めします。
ちなみに、【実践 Python データサイエンス】以外にも講座はたくさんあるようです。
Python等でWebアプリを作ってみようという内容もありました。Pythonの2つの顔をともに学ぶことができそうです。
Pythonは大変に高機能でかつ扱いやすい言語です。
まずはインストールするところから始めてみてはどうでしょうか。
もちろん環境の構築方法やJupyter Notebookの使い方についても講座で解説を受けることができます。