pythonとrによるデータ分析環境の構築と機械学習によるデータ認識 第3版...

Post on 18-Jun-2015

1.072 Views

Category:

Data & Analytics

12 Downloads

Preview:

Click to see full reader

DESCRIPTION

Python利用人口を増やすべく作成したスライド第3版です。PythonとRを使ったデータ分析を行うための環境整備方法などについて解説しました。 第1版との差分は、もう少し初心者にやさしい情報を加えたことと、演習っぽいスライドを追加したところです。

TRANSCRIPT

1

Python と R によるデータ分析環境の構築と機械学習によるデータ認

識第 3 版

2014-09-03熊本高専八代キャンパス 高専カフェ

Katushiro MORISHITA

2

まずは質問• ノート PC を持ってきた方• Mac 環境の人 VS Windows 環境の人• Python を聞いたことあるという方• Python を使っているという方• R を聞いたことあるという方• R を使っているという方• ランダムフォレスト自体に興味がある方

3

演者紹介• 高専:ロボコン・全身反応測定器・温度場測定器• 大学院: GPS を使った動物追跡システム• 野鳥の鳴き声による識別(趣味)• Twitter 感情分析・ニュース記事推薦システム(仕事)• 自信のある言語

oC/C++, C#, Python• そうでもない言語

o R, PHP, Ruby, java, VB, VB.NET• 勉強したい言語

o Scala, javascript

4

本スライドの目的・背景目的• Python と R の全学的普及

対象• 熊本高専の教員・学生• Python や R に触れたことがない方• Python or R or データ分析に興味がある方

5

目標• Python に魅了される• R の便利さが垣間見える

• Python スクリプトをo作れるo実行できる

• R で相関行列を作れる

6

Index• データ分析上の役割分担• Python の薦め• Python 環境の作り方• R 環境の作り方• データ分析例• まとめ• 蛇足

7

データ分析処理の流れ収集

データ読み込み・整形

可視化

分析処理

検討 データベース / テキスト

8

役割分担(森下の場合)可視化 散布図行列  etc.

分析 数値的要約 主成分・因子分析 相関行列 数量化 x 類  n 群の比較  etc.

テキスト処理データベース操作機械学習 ニューラルネットワーク サポートベクタマシン ランダムフォレスト  Deep Learning 

* データが数 GByte までならこれで十分

9

Python の薦め

10

基本構文など@ Python 3

フィーリング!

Python の” Hello World”

11

Python のコメント• 2 種類ある

12

演算子• 代入: =• 加算: +• 減算: -• 乗算: *• 除算: /• 累乗: **, 例 a = 20 ** 2 # 400• 剰余(割り算の余り): %

13

14

数値型• int (整数)型は無限桁を扱える

15

文字列型• 文字列の結合、検索、文字コードに

よらない文字数カウントなどが便利

16

リスト型• リストを知ると C の配列なんて使えない

17

タプル型• 複数の値をパッキング• どんなオブジェクトでも OK• 関数の返り値に便利

18

辞書型• データ同士のヒモ付• C# のハッシュテーブル、 PHP の連想配列に近い

19

集合型• 数学の集合と同一• ↓タイムスタンプの比較処理から抜粋

20

Python の if

21

Python の for• 10回ループ

解釈• 全要素を順に処理≠ただの繰り返し

22

Python の関数

23

Python のクラス

↑学生による相互評価データを処理するスクリプトより抜粋

24

Python の名前空間• フォルダが名前空間となる

GPS名前空間内にある、モジュール

ephemeris

gps.ephemeris

文字列を数値に変換

25

数値を文字列に変換

26

ライブラリの利用

27

• モジュールの利用と言い換えても OK

スコープ• 変数は宣言した後の行で使える• インデントが続く範囲がスコープ• 同じ変数名でも他のモジュールとは干渉せず

28

29

Python スクリプト例

上図 テキストファイルの行数をカウントする例

どんな動作か想像して下さい

30

よく使うモジュール• os• sys• datetime• re

31

いろいろ便利• リフレクション• イテレータ• シリアライズ• ラムダ式o将来性に陰り

32

Python の哲学• シンプル• 少ない予約語• 非冗長な構文• 誰が書いても同じコードになる

33

特徴

34

Python の特徴• 学習しやすい• 無料で利用できる• 全ての OS で動作• プロの技術者集団が存在•豊富な技術情報

35

研究向き

36

Why?•学習が速い•開発が速いoライブラリが充実・拡充中o誰が書いても同じ様なコード

37

Python はアイデアを迅速に確認するためのツール

どちらが好き?• 10日間掛けて、アイデアを検証• 1日でアイデアを検証

計算速度が問題になれば C++ で組む

38

Python にできることの一例• グラフ作成• PyCUDA で GPU プログラミング

o 大規模グラフィック演算o 電磁気・流体シミュレーションo ディープ・ラーニング(機械学習の一種)

• 各種サーバ構築• 数値計算全般+ 数式の理論微分・積分• 画像・ GISツールのプラグイン

39

萎える C 言語

萌えるPython

40

Python 環境の作り方

41

Python の情報源• Python公式サイト

o http://www.python.jp/

• 公式パッケージ配布元o https://pypi.python.org/pypi

• Windows用非公式パッケージ配布元o http://www.lfd.uci.edu/~gohlke/pythonlibs/

• Windows用統合開発環境  Pyscriptero https://code.google.com/p/pyscripter/

• その他、ネット上の有志の方々

*2014-08-28時点で、 pyscripter は Python 3.3.x までしか対応していない

42

サーバ環境の例• IPython+Notebook サーバ•クラウドの場合o必要に応じて OS イメージの

スナップショットoロードバランサで負荷分散

学生向けの環境ならこれで OK?

43

ローカル環境•ビルド済みのoインタプリタをインストールopip をインストールo必要なライブラリをインストール本スライドでは Python3系の最新版の

Windowsへのインストールを案内します( Mac/Linux はこちらを併せてご覧下さい)

44

☆インタプリタのインストール

• https://www.python.org/downloads/release/python-341/

• ↑最新版 @2014-08-28OS等の都合に併せて

どれか 1つをダウンロード & インストール

45

☆pip のインストール• パッケージの管理• ビルド済みの配布パッケージがない場合にソースからイ

ンストールするときに必要

• http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip

for 64 bit

for 32 bit“pyX.Y” は Python のバージョンに合わせる

46

☆算術 3兄弟• http://www.lfd.uci.edu/~gohlke/pythonlibs/•順に、oNumPyoSciPyomatplotlib

47

☆データ分析用ライブラリ• http://www.lfd.uci.edu/~gohlke/p

ythonlibs/

• scikit-learn• Pandas

48

☆☆matplotlib• 美麗なグラフ作成

*http://matplotlib.org/gallery.html

50

☆その他、 Python のみで書かれたライブラリ

• 以下のコマンドでインストールopython install setup.py

51

☆C を含むライブラリのインストール

• ビルド済みがネットに落ちてなければビルドo Python インタプリタの bit幅に合わせるoコンパイラ等のツール• ライブラリによってツールが異なる• MinGW + msys• Visual Studio 2010/2012/2013 Express/pro• CMake

• python install setup.pyo 先にビルドだけ実施することもあるo その場合は、ビルドツールを選択することもある

• pip install lib_name

52

☆環境変数の設定• PYTHONPATH

o個人的なライブラリがあれば設定• PATH

oC:\python34oC:\python34\ScriptsoC:\python34\Lib\site-packages

*”pythonXY” の” XY” はインストールした Python のバージョンに依存

53

☆環境変数設定方法• @ Windows 7

o「コンピュータ」を右クリック−>プロパティo「システムの詳細設定」をクリックo「詳細設定」タブo「環境変数」ボタンo設定を入力

54

面倒な人は Anaconda• http://continuum.io/downloads

* Anaconda は自然言語処理や OpenCV で困るかも

1st, OS の選択

3rd, ダウンロード

2nd, バージョンの選択

55

テキストエディタ• http://www.sublimetext.com/3

56

実行テスト•コマンドプロンプトで実行opython –Vopython

57

もっと詳しく• Mac や Linux系についても解説したスライ

ドo http://www.slideshare.net/katsuhiromorish

ita/python2014

58

スクリプトを書いて実行

59

エディタを開く• 文字コードは UTF-8 とする• Sublime は標準で UTF-8

* スクリーンショットは Mac のものなので、 Windows 環境の方は脳内変換して下さい

60

コードを書く

61

保存する• 拡張子は「 py」

62

実行する• Windwosoコマンドプロンプトを立ち上げ

• Macoターミナルを立ち上げ

• 以下のコマンドを実行opython print_test.py

63

実行の様子( Mac )

64

Python の世界へようこそ

65

R 環境の構築

66

R の概要• 統計に特化したプログラミング環境• Excel の分析ツールより便利

67

R の良いところ• 最新のアルゴリズムが投入されている• オープンプロジェクトである• どの OS でも動作する• グラフが美しい• R の GUI 環境を提供する WEB サーバ有

68

R の情報源•日本の有志による wikiohttp://www.okada.jp.org/RWiki/

69

R 言語を覚えないとダメ?

70

森下は覚えていません( ・∀・ ) キリッ

71

GUIツールを使おう• R コマンダー( Rcmdr )• EZR

( Windows なら)

EZR おススメ

72

EZR のインストール•ダウンロードサイトohttp://www.jichi.ac.jp/saitama-sct/SaitamaHP.files/statmed.html

73

Mac での手順• X11 をインストール

o http://xquartz.macosforge.org/landing/

• R 3.1.1 をインストール• R を起動• コマンドを実行(途中改行は削除)

o install.packages("RcmdrPlugin.EZR", dependencies=TRUE)

o install.packages("Rcmdr", dependencies=TRUE)

o library(Rcmdr)

74

☆エラーキター(涙目)

兵庫大学の CRAN サーバが落ちてる?

• 2014-09-02 に確認したところ、エラーが発生した。

とりあえず Rcmdr を使いましょう

76

R 公式版• for Windows

o http://cran.md.tsukuba.ac.jp/bin/windows/base/

• for Mac OS Xo http://cran.md.tsukuba.ac.jp/bin/macosx/

• Linux に関してはこちらo http://www.okada.jp.org/RWiki/?R

%20%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB#if8c08b4

77

Rcmdr/EZR の利用の流れ

• GUI でデータ読み込み( 200 MByte以下)

• メニューからコマンドを選択・実行• 自動生成されたスクリプトを保存

o次回からはコピーしたスクリプトを実行

78

データ分析例フィッシャーのアヤメのデータを使います。

79

サンプルデータ• フィッシャーのアヤメoデータ入手:http://home.a00.itscom.net/hatada/ml/data/iris01.html

oデータの解説:http://d.hatena.ne.jp/tsutatsutatsuta/20121206/1354737461

81

アヤメの 4つの特徴量• ガク片の長さ・幅• 花弁の長さ・幅

82

具体的には

83

まずは EZR で可視化• 層別に散布図行列

84

Python で機械学習• ランダムフォレストo多数の決定木を用いた分類アルゴリズムo並列計算に向く

• scikit-learn ライブラリを利用• 分類粒度・決定木数の調整は必要

85

Python script

*Pandas の利用の上では csv ファイルの先頭行にラベルをつけておく

86

コピペ用スライド#!usr/bin/python3

import pandasfrom sklearn.ensemble import RandomForestClassifier

data = pandas.read_csv("iris2.csv")#print(data)trainFeature = (data.iloc[:, 0:4]).values # transform to ndarraytrainLabel = (data.iloc[:, 4:5]).valuestrainLabel = [flatten for inner in trainLabel for flatten in inner] # transform 2次元 to 1次元 ぽいこと

clf = RandomForestClassifier()clf.fit(trainFeature, trainLabel)result = clf.score(trainFeature, trainLabel) # 学習データに対する、適合率print(result)print(clf.feature_importances_) # 各特徴量に対する寄与度を求める

87

実行結果

*「ランダム」フォレストなので、結果は実行毎に微妙に変わります** 学習済みのオブジェクトはシリアライズしてバイナリで保存***保存したバイナリを読みだして、復帰させれば復活&即利用が可能

88

まとめ

89

まとめ• Python の紹介• Python の準備• R の準備• データ分析例

o 可視化o ランダムフォレスト•参考サイト:

http://www.slideshare.net/hamadakoichi/randomforest-web?related=1

90

91

最近のソフトウェア開発本職でないので、雰囲気だけ

というか、 Git の話

ギット

92

ツール類• バグ追跡• 工程管理• バージョン管理

開発スタイル(ウォーターフォール・アジャイル)によって異なるツールが利用される

試行錯誤

93

Git によるバージョン管理• ファイルの差分を保存• “リポジトリ”で管理• Windows も Mac も利用可能なツールoSourceTreeohttp://www.sourcetreeapp.com/

94

Git の利用イメージ

リポジトリ

96

バージョン管理ツールの利点

• 複数人で共同開発• 過去の状態に戻せる• 思考パターンを追うことができるので、紋切り型なコピペの防止

• 卒研のソースコード管理

97

GitHub• https://github.com/• Git サーバと wiki と掲示板機能を提供

• 有償でクローズド開発が可能• 教育機関用アカウントも作成可

http://www.mocchiblog.com/

98

GitHub におけるオープンソース開発例

• RTKLIBohttps://github.com/tomojitakasu/

RTKLIBoGNSS 相対測位計算ツール

• オープン開発の理由o1 人で行う開発の限界o開発の継続(継承)

99

開発したプログラムをアップしませんか?

100

参考文献

101

森下推薦図書• Pythonスタートブック• みんなのPython

• RとRコマンダーで始める多変量解析• The R Tips

• R初心者のためのABC

• Git集中講座

102

その他の WEB 上の資料• SlideShareoスライド共有サイトで検索!ohttp://www.slideshare.net/?ss

103

Fin.

104

以降はおまけ

105

Python インタプリタの亜種  Python のインタプリタには複数の亜種があります。利用目的に合わせてインタプリタの種類を切り替えて下さい。

亜種の例• 描画特化型• ゲーム作成特化型• Java VM 上で動作するバージョン• .NET 上で動作するバージョン

106

Python 環境の移植• フォルダコピー&環境変数のセットで OK• pip によりインストール済みのライブラリ一覧を作成し、別環境でインストールさせるコマンドもある

107

複数の Pythonバージョンを並行して使う

• 普段利用する Python 環境を仮想環境とする• 環境が壊れても安心• コマンドでインタプリタを切り替え• ツールoMac なら pyenv などoWindows なら virtualenvoコアとなる Python をインストール後に、

上記のツールをインストールして利用

108

Python のライブラリをコンパイルする上でのメ

モ• 原則的には、 Python インタプリタをビルドしたものと

同じツールを使う必要があります。

( Windows での話)• ただし、 Python 3.3.5 は Visual Studio 2010 でビル

ドされていますが Visual Studio 2012 でビルドしたツールもインストール出来ました。

• 場合によっては Python 本体が msys でビルドされていたとしても、 Visual Studio でビルドしたツールもインストール出来ます。

109

Python のバージョン• Python のバージョンには 2系と 3系があ

る• 2系と 3系は非互換o2to3.py という自動変換ツールあり

• ほとんどのライブラリは Python 3 に対応• 音響系ライブラリがまだ 2系に固執中・・・

110

R のサーバ環境R Studio

• Linux系 OS にて利用可能• http://www.rstudio.com/

111

統計解析には StatWorks などGUI統計支援ツールがあるとなお

良い• 外れ値の検討が非常に楽• 統計処理の異常に気が付きやすい• 特にデータ数が少ない場合に有効• 統計的手法の初学者には必須• 価格oアカデミックで 10万円前後

112

Q&A• Q : C# と Python でコーディングスタイル(プログラミングへの取り組み方)は異なりますか?

• A :全く異なります。処理速度が問題にならない限り、 Python ではインターフェイスクラスやデータ構造よりも処理アルゴリズムから考えます。

• Q :他言語は知っています。 Python の習得にはどの程度時間がかかりますか?

• A : Lightweight Language(LL) の経験がなければ、3ヶ月程だと思います。 LL経験者なら、 2週間程だと思います。

• Q :オブジェクト指向を最短で身に付けたいのですが。。• A : C# で実用的なプログラムを設計からリリースまで一貫し

て取り組み、 10万行くらい書くのが早いと思います。

113

ビッグデータを対象とした分析環境づくり

• 分析したいデータと目的によるが・・・• おすすめは、 Amazon Web Service ( AWS )で

Hadoop を利用できる Amazon Elastic MapReduce ( Amazon EMR )o もっと良いサービスがあるかも

• ロードバランサーにより自動的にインスタンスを起動• 機械学習・財務分析・科学シミュレーションにどうぞ• 月々、 1万円程度?

o 通信量に依存

• クレジットカードと AWSアカウントさえあれば、環境を30 分で立ち上げることができます

• クラウドに関する知識が必要

114

ビッグデータを対象とした運用環境づくり

• リアルタイム処理向けの AMI があります• 新しいサービスが次々と投入されているので、ご自身で調べて下さい。

115

最近の言語の流儀• ブラウザから実行できるサーバを簡単に立ち上げ

• ライブラリを公開しているサーバ有o 自作のライブラリも公開可能

• 必要なライブラリは後から追加

116

プログラミング言語の進化• やや実験的な言語oScala, go, swift

• それぞれ、新しい概念を導入• 全ての言語が影響を与え合っている• C/C++すら数年に 1 度の改定で近代化• 「ああ、これって要するにあれだよね」

には収まらない

top related