Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データ分析・機械学習のためのPython入門勉強会

 データ分析・機械学習のためのPython入門勉強会

AI Business Challenge Day:第3回 機械学習実践勉強会 データ分析・機械学習のためのPython入門(2017.09.09)

C7b3f79964c658ce7d0c82e66942e654?s=128

ISHIGO Yusuke

October 16, 2017
Tweet

Transcript

  1. 2017.9.9 Python入門勉強会 AI Business Challenge Day: 第3回 機械学習実践勉強会 データ分析・機械学習のための

  2. 自己紹介 日本総合ビジネス専門学校 NIHON-CHUO Institution 2017.4- 合同会社4D Pocket 4D Pocket LLC.

    2017.4- 石郷 祐介 ISHIGO Yusuke Programmer
  3. ࣾ ձ ʹ ؾ ͮ ͖ Λ ༩ ͑ Δ

     ಓ ۩  Λ ։ ൃ ͠ · ͢
  4. 本日の流れ 1. Pythonについて 2. 開発環境の構築  ・pyenv、anacondaのインストール 3. ライブラリを使ってみる  ① 標準ライブラリでWebサイトからスクレイピング

     ② 「matplotlib」で取得したデータのグラフ表示する 4. 基本的な機械学習アルゴリズムを自作してみる  ① エクセルのデータを読み込んでグラフ表示する  ② 「協調フィルタリング」の実装 5. 「scikit-learn」で簡単に機械学習を実践してみる
  5. Pythonの特徴 サーバサイド言語として登場(P言語のひとつ) ・AI(機械学習) ・データ分析 ・IoT(Raspberry Pi) ・ロボット(ROS) 等 計算用ライブラリが豊富なため、高度な計算が必要なプログラム に多く使われている

  6. Pythonの特徴 Perlとの思想的な違い Perl There’s More Than One Way To Do

    It. やり方はひとつじゃない Python There should be one-and preferably only one- obvious way to do it 誰もが良いと考えるたったひとつの方法があるはずだ
  7. 本日の流れ 1. Pythonについて 2. 開発環境の構築  ・pyenv、anacondaのインストール 3. ライブラリを使ってみる  ① 標準ライブラリでWebサイトからスクレイピング

     ② 「matplotlib」で取得したデータのグラフ表示する 4. 基本的な機械学習アルゴリズムを自作してみる  ① エクセルのデータを読み込んでグラフ表示する  ② 「協調フィルタリング」の実装 5. 「scikit-learn」で簡単に機械学習を実践してみる
  8. 開発環境のインストール pyenv PythonやAnacondaをダウンロードしたり、バージョンを切り替える ためのツール Anaconda condaを含んだPythonとパッケージ(プラグイン)をまとめたもの (NumPy、scipy、Pandas、Jupyer、Scikit-learn等のパッケージ) Web系の言語には、バージョンを管理するツールが存在する conda Pythonパッケージをインストールできるツール

    Pythonには、標準で同機能のpipがインストールされているが、 Anacondaを使う場合は、condaを使う(condaにないパッケージはpip)
  9. 開発環境のインストール ①(pyenv) ・Homebrewを使っている場合 brew install pyenv exec $SHELL -l ・Homebrewを使っていないもしくはMacportsを使っている

    git clone https://github.com/yyuu/pyenv.git ~/.pyenv sudo vim ~/.bash_profile export PYENV_ROOT="${HOME}/.pyenv" if [ -d "${PYENV_ROOT}" ]; then export PATH=${PYENV_ROOT}/bin:${PYENV_ROOT}/shims:${PATH} eval "$(pyenv init -)" fi exec $SHELL -l 以下のコードを追加する
  10. 開発環境のインストール ①(anaconda) pyenv install anaconda3-4.0.0 anacondaがインストールされているか確認する pyenv versions anacondaを有効にする pyenv

    global anaconda3-4.0.0 condaでよく使うコマンド http://geisterhacker.com/index.php/2017/04/26/conda-command/ pipがcommand not foundになる場合の解決策: http://kurogomapurin.hatenablog.com/entry/2015/10/06/154259
  11. 言語の特徴 ① 1.文末のセミコロンは不要 print(“Hello, world!”) 2.変数に型は必要ない(動的型付け=ダックタイピング) hoge = “Hello, world!”

    hoge = 123 print(“Hello, world!”); ◯ × String hoge = “Hello, world!” int hoge = 123 × ◯ If it walks like a duck and quacks like a duck, it must be a duck. もしそれがアヒルのように鳴き、アヒルのように歩いたら、それはアヒルである
  12. 言語の特徴 ② 3.カッコでなくインデントでまとまりを示す if hoge == ‘aaa’: print(‘Hello,’) print(‘world!’) if

    hoge == ‘aaa’ { print(‘Hello,’) print(‘world!’) } ◯ × オフサイドルール
  13. 配列 ① fruits = [‘りんご’, ‘ぶどう’, ‘ばなな’] 変数に番号を付けてまとめたもの fruits 0

    1 2 りんご ぶどう ばなな print(fruits[1]) print(len(fruits)) 配列の番号を指定して要素を取り出す 配列の要素の数を取得する
  14. 配列 ② 変数に番号を付けてまとめたもの fruits 0 1 2 りんご ぶどう ばなな

    fruits.pop(0) fruits.append(‘れもん’) 配列の0番目の要素を削除する 配列の最後に要素を追加する
  15. 配列とfor文の連携 fruits = [‘りんご’, ‘ぶどう’, ‘ばなな’] for i in range(len(fruits)):

    print(fruits[i]) 配列の要素数分繰り返して、要素を取得する for i, e in enumerate(fruits): print(e)
  16. 本日の流れ 1. Pythonについて 2. 開発環境の構築  ・pyenv、anacondaのインストール 3. ライブラリを使ってみる  ① 標準ライブラリでWebサイトからスクレイピング

     ② 「matplotlib」で取得したデータのグラフ表示する 4. 基本的な機械学習アルゴリズムを自作してみる  ① エクセルのデータを読み込んでグラフ表示する  ② 「協調フィルタリング」の実装 5. 「scikit-learn」で簡単に機械学習を実践してみる
  17. ライブラリを使ってみる ① Webスクレイピング Webサイトから情報を取得して利用すること 日付 最高気温 気象庁のWebサイトから、「日付」と岐阜県の「最高気温」を取得してくる

  18. ライブラリを使ってみる ① from urllib import request import bs4 url =

    ‘http://www.jma.go.jp/jp/week/328.html’ html = request.urlopen(url).read() soup = bs4.BeautifulSoup(html, ‘html.parser’) res = soup.find_all(attrs={‘class’: ‘maxtemp’}) for i, e in enumerate(res): print(e.text[0:2]) BeautifulSoup4 HTMLを操作するためのPythonパッケージ conda install beautifulsoup4
  19. ライブラリを使ってみる ② import numpy as np from matplotlib import pyplot

    pyplot.hist(np.random.randn(1000)) pyplot.show() MatPlotLib グラフを表示するパッケージ
  20. ライブラリを使ってみる ② スクレイピングした値をグラフ表示してみる matplotlib入門 棒グラフ編 http://www.python.ambitious-engineer.com/archives/888

  21. 本日の流れ 1. Pythonについて 2. 開発環境の構築  ・pyenv、anacondaのインストール 3. ライブラリを使ってみる  ① 標準ライブラリでWebサイトからスクレイピング

     ② 「matplotlib」で取得したデータのグラフ表示する 4. 基本的な機械学習アルゴリズムを自作してみる  ① エクセルのデータを読み込んでグラフ表示する  ② 「協調フィルタリング」の実装 5. 「scikit-learn」で簡単に機械学習を実践してみる
  22. 協調フィルタリング ① モノに対して、人の行動や評価を数値化した表を用意する ・5段階評価(1〜5) ・買った(0)、買わなかった(1) ・買った(2)、閲覧した(1)、買わなかった(0) ・好き(1)、投票せず(0)、嫌い(-1)

  23. 協調フィルタリング グリーンカレー 杏仁豆腐 柏木さん 田中さん 鈴木さん、川村さん 山田さん 佐藤さん ② モノの評価を軸にして、各人をプロットする

  24. 協調フィルタリング グリーンカレー 杏仁豆腐 柏木さん 田中さん 鈴木さん、川村さん 山田さん 佐藤さん ③ 距離が近い人が類似している、遠い人は類似していない

  25. CSVデータを読み込んでグラフ表示 グリーンカレー 杏仁豆腐 柏木さん 田中さん 鈴木さん、川村さん 山田さん 佐藤さん

  26. CSVデータを読み込んでグラフ表示 グリーンカレー 杏仁豆腐 柏木さん 田中さん 鈴木さん、川村さん 山田さん 佐藤さん

  27. 本日の流れ 1. Pythonについて 2. 開発環境の構築  ・pyenv、anacondaのインストール 3. ライブラリを使ってみる  ① 標準ライブラリでWebサイトからスクレイピング

     ② 「matplotlib」で取得したデータのグラフ表示する 4. 基本的な機械学習アルゴリズムを自作してみる  ① エクセルのデータを読み込んでグラフ表示する  ② 「協調フィルタリング」の実装 5. 「scikit-learn」で簡単に機械学習を実践してみる
  28. scikit-learnでSVMしてみる scikit-learn 機械学習のアルゴリズムをまとめたパッケージ (SVM、ランダムフォレスト、k近傍法、ロジスティクス回帰等) サポートベクターマシン(SVM) 2つの郡に分けられるデータを入力することで、判別するための 境界を学習し、新規データを分類することができる。 深層学習が主流になるまえは、教師あり機械学習の主流だった。

  29. 教師ありと教師なし 教師あり データと正解ラベル(正解 or 不正解)を読み込ませて、予測を行う 教師なし 正解ラベルのないデータの規則性を学習し、予測を行う 正解ラベル データ

  30. None