PythonとRによるデータ 
分析環境の構築と機械学 
習によるデータ認識 
2014/9/3 
熊本高専八代キャンパス高専カフェ 
Katushiro MORISHITA 
1
本スライドの目的・背景 
目的 
• PythonとRの全学的普及 
対象 
• 熊本高専の教員・学生 
• Pythonに触れたことがない方 
• Python or R or データ分析に興味がある方 
2
Index 
• データ分析上の役割分担 
• Pythonの薦め 
• Python環境の作り方 
• R環境の作り方 
• データ分析例 
• まとめ 
• 蛇足 
3
データ分析処理の流れ 
検討収集 
データベース/テキスト 
データ読み込み・整形 
可視化 
分析処理 
4
役割分担(森下の場合) 
可視化 
散布図行列 
etc. 
分析 
数値的要約 
主成分・因子分析 
相関行列 
数量化x類 
n群の比較 
etc. 
テキスト処理 
データベース操作 
機械学習 
ニューラルネットワーク 
サポートベクタマシン 
ランダムフォレスト 
Deep Learning 
*データが数GByteまでならこれで十分5
Pythonの薦め 
6
基本構文など 
@Python 3 
7
Pythonの”Hello World” 
8
Pythonのコメント 
• 2種類ある 
9
演算子 
• 代入:= 
• 加算:+ 
• 減算:- 
• 乗算:* 
• 除算:/ 
• 累乗:**, 例a = 20 ** 2 # 400 
• 剰余(割り算の余り):% 
10
数値型 
• int(整数)型は無限桁を扱える 
11
文字列型 
• 文字列の結合、検索、文字コードに 
よらない文字数カウントなどが便利 
12
リスト型 
• リストを知るとCの配列なんて使えない 
13
タプル型 
• 複数の値をパッキング 
• どんなオブジェクトでもOK 
• 関数の返り値に便利 
14
辞書型 
• データ同士のヒモ付 
• C#のハッシュテーブル、PHPの連想配列に近い 
15
集合型 
• 数学の集合と同一 
• ↓タイムスタンプの比較処理から抜粋 
16
Pythonのif 
17
Pythonのfor 
• 10回ループ 
18
Pythonの関数 
19
Pythonのクラス 
↑学生による相互評価データを処理するスクリプトより抜粋20
Pythonの名前空間 
• フォルダが名前空間となる 
GPS名前空間内にある、 
モジュールephemeris 
gps.ephemeris 
21
文字列を数値に変換 
22
数値を文字列に変換 
23
ライブラリの利用 
24 
• モジュールの利用と言い換えてもOK
スコープ 
• 変数は宣言した後の行で使える 
• インデントが続く範囲がスコープ 
• 同じ変数名でも他のモジュールとは干渉せず 
25
Pythonスクリプト例 
• テキストファイルの行数をカウントする例 
26
よく使うモジュール 
• os 
• sys 
• datetime 
• re 
27
いろいろ便利 
• リフレクション 
• イテレータ 
• ラムダ式 
• シリアライズ 
28
特徴 
29
Pythonの特徴 
• 学習しやすい 
• 無料で利用できる 
• 全てのOSで動作 
• プロの技術者集団が存在 
• 豊富な技術情報 
30
研究向き 
31
Why? 
•学習が速い 
•開発が速い 
oライブラリが充実・拡充中 
o誰が書いても同じ様なコード 
32
Pythonはアイデアを迅速 
に確認するためのツール 
どちらが好き? 
• 10日間掛けて、アイデアを検証 
• 1日でアイデアを検証 
計算速度が問題になればC++で組む 
33
Pythonにできることの一例 
• グラフ作成 
• PyCUDAでGPUプログラミング 
o 大規模グラフィック演算 
o 電磁気・流体シミュレーション 
o ディープ・ラーニング(機械学習の一種) 
• 各種サーバ構築 
• 数値計算全般+数式の理論微分・積分 
• 画像・GISツールのプラグイン 
34
萎えるC言語 
萌えるPython 
35
Python環境の作り方 
36
Pythonの情報源 
• Python公式サイト 
o http://www.python.jp/ 
• 公式パッケージ配布元 
o https://pypi.python.org/pypi 
• Windows用非公式パッケージ配布元 
o http://www.lfd.uci.edu/~gohlke/pythonlibs/ 
• Windows用統合開発環境Pyscripter 
o https://code.google.com/p/pyscripter/ 
• その他、ネット上の有志の方々 
*2014-08-28時点で、pyscripterはPython 3.3.xまでしか対応していない37
サーバ環境の例 
• IPython+Notebookサーバ 
• クラウドの場合 
o必要に応じてOSイメージの 
スナップショット 
oロードバランサで負荷分散 
38 
学生向けの環境ならこれでOK?
ローカル環境 
•ビルド済みの 
oインタプリタをインストール 
opipをインストール 
o必要なライブラリをインストール 
39 
本スライドではPython3系の最新版の 
Windowsへのインストールを案内します
☆インタプリタの 
インストール 
• https://www.python.org/downloads/release 
/python-341/ 
• ↑最新版@2014-08-28 
40 
OS等の都合に併せて 
どれか1つを 
ダウンロード&インストール
☆pipのインストール 
• パッケージの管理 
• ビルド済みの配布パッケージがない場合にソースからイ 
ンストールするときに必要 
• http://www.lfd.uci.edu/~gohlke/pythonl 
ibs/#pip 
41 
for 64 bit 
for 32 bit 
“pyX.Y”はPythonの 
バージョンに合わせる
☆算術3兄弟 
• http://www.lfd.uci.edu/~gohl 
ke/pythonlibs/ 
• 順に、 
oNumPy 
oSciPy 
omatplotlib 
42
☆データ分析用ライブラリ 
• http://www.lfd.uci.edu/~gohlke/pythonl 
ibs/ 
• scikit-learn 
• Pandas 
43
matplotlib 
• 美麗なグラフ作成 
*http://matplotlib.org/gallery.html 44
scikit-learn 
• 各種機械学習を支援 
45 
*http://scikit-learn.org/stable/auto_examples/plot_classifier_comparison.html 
**解説:http://www.slideshare.net/moa108/20130715-lt-scikitlearn
☆その他、Pythonのみで 
書かれたライブラリ 
• 以下のコマンドでインストール 
opython install setup.py 
46
☆Cを含むライブラリの 
インストール 
• ビルド済みがネットに落ちてなければビルド 
o Pythonインタプリタのbit幅に合わせる 
o コンパイラ等のツール 
• ライブラリによってツールが異なる 
• MinGW + msys 
• Visual Studio 2010/2012/2013 Express/pro 
• CMake 
• python install setup.py 
o 先にビルドだけ実施することもある 
o その場合は、ビルドツールを選択することもある 
• pip install lib_name 47
☆環境変数の設定 
• PYTHONPATH 
o 個人的なライブラリがあれば設定 
• PATH 
o C:python34 
o C:python34Scripts 
o C:python34Libsite-packages 
*”pythonXY”の”XY”はインストールしたPythonのバージョンに依存48
面倒な人はAnaconda 
• http://continuum.io/downloads#27 
1st, OSの選択 
3rd, ダウンロード 
2nd, バージョンの選択 
*Anacondaは自然言語処理やOpenCVで困るかも 
49
テキストエディタ 
• http://www.sublimetext.com/3 
50
実行テスト 
• コマンドプロンプトで実行 
opython –V 
opython 
51
もっと詳しく 
• MacやLinux系についても解説したスライド 
o http://www.slideshare.net/katsuhiromorishita/pyt 
hon2014 
52
53 
Pythonの世界へようこそ
R環境の構築 
54
Rの概要 
• 統計に特化したプログラミング環境 
• Excelの分析ツールより便利 
55
Rの良いところ 
• 最新のアルゴリズムが投入されている 
• オープンプロジェクトである 
• どのOSでも動作する 
• グラフが美しい 
• RのGUI環境を提供するWEBサーバ有り 
56
Rの情報源 
• 日本の有志によるwiki 
ohttp://www.okada.jp.org/RWiki/ 
57
R言語を覚えないとダメ? 
58
森下は覚えていません 
(・∀・)キリッ 
59
GUIツールを使おう 
• Rコマンダー(Rcmdr) 
• EZR 
EZR おススメ 
60
EZRのインストール 
• ダウンロードサイト 
ohttp://www.jichi.ac.jp/saitama-sct/ 
SaitamaHP.files/statmed.html 
61
Rコマンダー参考文献 
• http://www.cwk.zaq.ne.jp/fkhud708/files/R-intro/ 
R-stat-intro_99.pdf 
62
R 公式版 
• for Windows 
o http://cran.md.tsukuba.ac.jp/bin/windows/base 
/ 
• for Mac OS X 
o 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 
63
Rcmdr/EZRの利用の流れ 
• GUIでデータ読み込み(200 MByte以下) 
• メニューからコマンドを選択・実行 
• 自動生成されたスクリプトを保存 
o 次回からはコピーしたスクリプトを実行 
64
データ分析例 
フィッシャーのアヤメのデータを使います。 
65
サンプルデータ 
• フィッシャーのアヤメ 
oデータ入手: 
http://home.a00.itscom.net/hatada/ 
ml/data/iris01.html 
oデータの解説: 
http://d.hatena.ne.jp/tsutatsutatsuta/ 
20121206/1354737461 
66
アヤメの写真 
67 
http://pds.exblog.jp/pds/1/200609/01/07/b0077607_17371584.jpg
アヤメの特徴量 
• ガク片の長さ・幅 
• 花弁の長さ・幅 
68
具体的には 
69
まずはEZRで可視化 
• 層別に散布図行列 
70
Pythonで機械学習 
• ランダムフォレスト 
o多数の決定木を用いた分類アルゴリズム 
o並列計算に向く 
• scikit-learnライブラリを利用 
• 分類粒度・決定木数の調整は必要 
71
Python script 
*Pandasの利用の上ではcsvファイルの先頭行にラベルをつけておく72
コピペ用スライド 
73 
#!usr/bin/python3 
import pandas 
from sklearn.ensemble import RandomForestClassifier 
data = pandas.read_csv("iris2.csv") 
#print(data) 
trainFeature = (data.iloc[:, 0:4]).values # transform to ndarray 
trainLabel = (data.iloc[:, 4:5]).values 
trainLabel = [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_) # 各特徴量に対する寄与度を求める
実行結果 
74 
*「ランダム」フォレストなので、結果は実行毎に微妙に変わります
まとめ 
75
まとめ 
• Pythonの紹介 
• Pythonの準備 
• Rの準備 
• データ分析例 
o 可視化 
o ランダムフォレスト 
• 参考サイト: 
http://www.slideshare.net/hamadakoichi/ran 
domforest-web?related=1 
76
77
最近のソフトウェア開発 
本職でないので、雰囲気だけ 
78 
というか、Gitの話
ツール類 
• バグ追跡 
• 工程管理 
• バージョン管理 
79 
開発スタイル 
(ウォーターフォール・ 
アジャイル)によって異 
なるツールが利用される 
試行錯誤
Gitによるバージョン管理 
• ファイルの差分を保存 
• “リポジトリ”で管理 
• WindowsもMacも利用可能なツール 
oSourceTree 
ohttp://www.sourcetreeapp.com/ 
80
Gitの利用イメージ 
81 
リポジトリ
SourceTreeスクショ 
82 
*http://blog.sourcetreeapp.com/files/2013/02/sourcetree-on-windows-large.png
バージョン管理ツール 
の利点 
• 複数人で共同開発 
• 過去の状態に戻せる 
• 思考パターンを追うことができるので、 
紋切り型なコピペの防止 
• 卒研のソースコード管理 
83
GitHub 
• https://github.com/ 
• Gitサーバとwikiと掲示板機能を提供 
• 有償でクローズド開発が可能 
• 教育機関用アカウントも作成可 
http://www.mocchiblog.com/ 84
GitHubにおける 
オープンソース開発例 
• RTKLIB 
ohttps://github.com/tomojitakasu/RTKLIB 
oGNSS相対測位計算ツール 
• オープン開発の理由 
o1人で行う開発の限界 
o開発の継続(継承) 
85
開発したプログラムを 
アップしませんか? 
86
Fin. 
87
以降はおまけ 
88
Pythonインタプリタの亜種 
Pythonのインタプリタには複数の亜種がありま 
す。利用目的に合わせてインタプリタの種類を切 
り替えて下さい。 
亜種の例 
• 3Dデータ描画に特化型 
• ゲーム作成特化型 
• Java VM上で動作するバージョン 
• .NET上で動作するバージョン 
89
Python環境の移植 
• フォルダコピー&環境変数のセットでOK 
• pipによりインストール済みのライブラリ 
一覧を作成し、別環境でインストールさ 
せるコマンドもある 
90
複数のPythonバージョン 
を並行して使う 
• 普段利用するPython環境を仮想環境とする 
• 環境が壊れても安心 
• コマンドでインタプリタを切り替え 
• ツール 
oMacならpyenvなど 
oWindowsならvirtualenv 
oコアとなるPythonをインストール後に、 
上記のツールをインストールして利用 
91
Pythonのライブラリをコ 
ンパイルする上でのメモ 
(Windowsでの話) 
• 原則的には、Pythonインタプリタをビルドしたものと同 
じツールを使う必要があります。 
• ただし、Python 3.3.5はVisual Studio 2010でビルドされ 
ていますがVisual Studio 2012でビルドしたツールもイ 
ンストール出来ました。 
• 場合によってはPython本体がmsysでビルドされていた 
としても、Visual Studioでビルドしたツールもインス 
トール出来ます。 
92
Pythonのバージョン 
• Pythonのバージョンには2系と3系がある 
• 2系と3系は非互換 
o2to3.pyという自動変換ツールあり 
• ほとんどのライブラリはPython 3に対応 
• 音響系ライブラリがまだ2系に固執中・・・ 
93
Rのサーバ環境 
R Studio 
• http://www.rstudio.com/ 
94
統計解析にはStatWorksなどGUI統 
計支援ツールがあるとなお良い 
• 外れ値の検討が非常に楽 
• 統計処理の異常に気が付きやすい 
• 特にデータ数が少ない場合に有効 
• 統計的手法の初学者には必須 
• 価格 
oアカデミックで10万円前後 
95
Q&A 
• Q:C#とPythonでコーディングスタイル(プログラミングへ 
の取り組み方)は異なりますか? 
• A:全く異なります。Pythonではインターフェイスクラスや 
データ構造よりも、処理アルゴリズムから考えます。 
• Q:他言語は知っています。Pythonの習得にはどの程度時間 
がかかりますか? 
• A:Lightweight Language(LL)の経験がなければ、3ヶ月程だ 
と思います。LL経験者なら、2週間程だと思います。 
• Q:オブジェクト指向を最短で身に付けたいのですが。。 
• A:C#で実用的なプログラムを設計からリリースまで一貫し 
て取り組み、10万行くらい書くのが早いと思います。 
96
ビッグデータを対象とした 
分析環境づくり 
• 分析したいデータと目的によるが・・・ 
• おすすめは、Amazon Web Service(AWS)でHadoopを利 
用できるAmazon Elastic MapReduce(Amazon EMR) 
o もっと良いサービスがあるかも 
• ロードバランサーにより自動的にインスタンスを起動 
• 機械学習・財務分析・科学シミュレーションにどうぞ 
• 月々、1万円程度? 
o 通信量に依存 
• クレジットカードとAWSアカウントさえあれば、環境を30 
分で立ち上げることができます 
• クラウドに関する知識が必要 
97
ビッグデータを対象とした 
運用環境づくり 
• リアルタイム処理向けのAMIがあります 
• 新しいサービスが次々と投入されているので、ご自身で調 
べて下さい。 
98
最近の言語の流儀 
• 実行するサーバを簡単に立ち上げ 
• ライブラリを公開しているサーバ有 
o 自作のライブラリも公開可能 
• 必要なライブラリは後から追加 
99
プログラミング言語の進化 
• やや実験的な言語 
oScala, go, swift 
• それぞれ、新しい概念を導入 
• 全ての言語が影響を与え合っている 
• C/C++すら数年に1度の改定で近代化 
• 「ああ、これって要するにあれだよね」 
では収まらない 
100

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