Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

62 096 vues

Publié le

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

Publié dans : Données & analyses

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

×