Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

58,664 views

Published on

2014-09-03開催の熊本高専 高専カフェで紹介する、PythonとRを使ったデータ分析環境の解説です。

Published in: Data & Analytics

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

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

×