Jupyter トピックス紹介
とついでに告知

2015/09/12 Python東海 第28回勉強会
後藤 俊介 ( @antimon2 )

自己紹介

  • 名前:後藤 俊介
  • 所属:株式会社コスモルート クラウドR&Dグループ 数学班
  • 言語:Ruby, JavaScript, Python, Julia, Haxe, …
  • twitter: @antimon2
  • Facebook: antimon2
  • GitHub: antimon2

告知:機械学習 名古屋 勉強会

機械学習 名古屋 第1回勉強会 やります!(2015/10/03, 共催)

お品書き

Jupyter 4.0

Jupyter が、IPython から正式に分離!

Jupyter (Jupyter Notebook)

  • Web アプリケーション
  • コードの実行・グラフや図の描画・数式描画・Markdown によるマークアップ等
  • notebook の共有が可能
  • 様々な言語を利用可能(カーネル切替による)

IPython

  • Python のインタラクティブ環境 (REPL)
  • Jupyter のカーネル
  • 言語非依存部(ファイルフォーマット・メッセージプロトコル等)は Jupyter に分離

Jupyter のインストール(概要)

$ pip install -U jupyter

これだけ。

確認

$ jupyter --version
4.0.4
$ ipython --version
4.0.0

Jupyter の起動(例)

$ jupyter notebook

これだけ。

GraphViz でグラフ描画

※ここでいうグラフは、数学用語のグラフ。
 頂点 (Nodes / Vertices) と、その連結関係を表す辺 (Edge) からなるデータ構造、またはそれを図示したもの。

必要なもの

GraphViz(本体)のインストール

$ brew update
$ brew install graphviz

graphviz(Python パッケージ)のインストール

$ pip install -U pip
$ pip install graphviz

表示例1:無向グラフ

In [1]:
from graphviz import Graph, Digraph
In [2]:
dodecahedron = Graph("dodecahedron", format="svg", engine="neato")
dodecahedron.body.append('scale=3.0')
dodecahedron.node_attr.update(shape="point")
dodecahedron.attr('edge', len="0.2")
dodecahedron.edges(["AF","BG","CH","DI","EJ","KP","LQ","MR","NS","OT","AB","BC","CD","DE","EA"])
dodecahedron.attr('edge', len="0.3")
dodecahedron.edges(["FK","GL","HM","IN","JO","FO","GK","HL","IM","JN"])
dodecahedron.attr('edge', len="1.0")
dodecahedron.edges(["PQ","QR","RS","ST","TP"])
In [3]:
dodecahedron
Out[3]:
dodecahedron A F A--F B A--B K F--K O F--O G B--G C B--C G--K L G--L H C--H D C--D H--L M H--M I D--I E D--E I--M N I--N E--A J E--J J--N J--O P K--P Q P--Q L--Q R Q--R M--R S R--S N--S T S--T O--T T--P

表示例2:有向グラフ(を利用した関係図)

In [4]:
kwds = Digraph("keywords", format="svg")

kwds.node('AI', u"人工知能\nArtificial Intelligence")
kwds.node('PR', u"パターン認識\nPattern Recognition")
kwds.node('ML', u"機械学習\nMachine Learning", shape="doublecircle")
kwds.node('NLP', u"自然言語処理\nNatural Language\nProcessing")
kwds.node('SL', u"教師あり学習\nSupervised Learning")
kwds.node('UL', u"教師なし学習\nUnsupervised Learning")

kwds.edge('AI', 'PR')
kwds.edge('AI', 'ML')
kwds.edge('AI', 'NLP')
kwds.edge('ML', 'SL')
kwds.edge('ML', 'UL')
In [5]:
kwds
Out[5]:
keywords AI 人工知能 Artificial Intelligence PR パターン認識 Pattern Recognition AI->PR ML 機械学習 Machine Learning AI->ML NLP 自然言語処理 Natural Language Processing AI->NLP SL 教師あり学習 Supervised Learning ML->SL UL 教師なし学習 Unsupervised Learning ML->UL

おまけ

機械学習 名古屋 第1回勉強会 やります!(2015/10/03, 共催)

おしまい

ご清聴ありがとうございました。