Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Jupyter Notebookを納品した話
Search
tereka114
March 16, 2022
Programming
0
360
Jupyter Notebookを納品した話
tereka114
March 16, 2022
Tweet
Share
More Decks by tereka114
See All by tereka114
トラブルがあったコンペに学ぶデータ分析
tereka114
2
1.2k
Harnessing Large Language Models for Training-free Video Anomaly Detection
tereka114
1
1.5k
KDD2023学会参加報告
tereka114
2
520
Prompting Large Language Models with Answer Heuristics for Knowledge-based Visual Question Answering
tereka114
0
350
Mobile-Former: Bridging MobileNet and Transformer
tereka114
0
1k
DER: Dynamically Expandable Representation for Class Incremental Learning
tereka114
0
170
Multi Scale Recognition with DAG-CNNs
tereka114
0
110
How to use scikit-image for data augmentation
tereka114
0
200
面倒くさいこと考えたくないあなたへ〜Tpotと機械学習〜
tereka114
0
220
Other Decks in Programming
See All in Programming
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
180
バグを見つけた?それAppleに直してもらおう!
uetyo
0
180
コンテナをたくさん詰め込んだシステムとランタイムの変化
makihiro
1
130
talk-with-local-llm-with-web-streams-api
kbaba1001
0
180
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
5
820
創造的活動から切り拓く新たなキャリア 好きから始めてみる夜勤オペレーターからSREへの転身
yjszk
1
130
テストケースの名前はどうつけるべきか?
orgachem
PRO
0
130
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
110
採用事例の少ないSvelteを選んだ理由と それを正解にするためにやっていること
oekazuma
2
1k
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
140
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
770
PHPとAPI Platformで作る本格的なWeb APIアプリケーション(入門編) / phpcon 2024 Intro to API Platform
ttskch
0
220
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
328
21k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Automating Front-end Workflow
addyosmani
1366
200k
The Cost Of JavaScript in 2023
addyosmani
45
7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
A designer walks into a library…
pauljervisheath
204
24k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Bash Introduction
62gerente
608
210k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
The Invisible Side of Design
smashingmag
298
50k
Transcript
Jupyter Notebookを 納品した話 2016/11/10 Acroquest Technology 株式会社 山本 大輝
自己紹介 1. 名前:山本 大輝(やまもと ひろき) 2. Twitter:@tereka114 3. Blog:のんびりしているエンジニアの日記
http://nonbiri-tereka.hatenablog.com/ 4. 専門:画像処理、異常検知 5. 普段はCV勉強会やPyData等で 活動しています。 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 2
目次 1. はじめに 2. Jupyter Notebookとは 3. Jupyter Notebookを選んだ理由 4.
Jupyter NotebookのPlugin 5. Jupyter Notebookの罠 6. まとめ 3
こんなことありませんか? 1. 「データを分析して欲しい」と言われたけど、分析結果を どんな形式で提出しようか悩んでいる。 2. 分析の思考過程とコードをバラバラに管理しており、後 から分析過程を追跡できなくなる。 そのため、思考過程とコードを一緒に残したいが、コードを Word等に貼り付けたくない。
3. コードの動作確認結果を可視化したいが、対話式に 確認ができない。(デバッガでは画像は面倒) 4
5 この問題全部解決できます!
6 そう Jupyter ならね
Jupyter Notebook 1. Jupyter Notebookは作成したコードやドキュメントを簡 単に共有できる。 ① 様々な言語をサポート(Rも使えるよ!) ② Notebook自体の共有
③ インタラクティブな実行 2. 可視化したグラフを掲載できる。 3. Markdownを使える。 7
何ができるの? 1. コードを実行できる。基本はPythonですが、カーネルを追加 すれば他の言語も実行可能。 2. 当然、出力結果を可視化できる。 %matplotlib inlineを記述すれば、Matplotlib(グラフ)も出力可能 3.
Markdownで文章を記述できる。コードをドキュメントに組み 込める。 4. 様々なPluginを利用できる。 5. Githubが.ipynb(Jupyter Notebookの拡張子)に対応して いる。 8
Jupyter Notebookの例 9
Markdown 図 ソースコード Jupyter Notebookの例 10 Jupyterの 特殊コマンド (Magic Command)
なぜ、Jupyter Notebook? 1. Jupyter Notebookは分析の過程を残せる。 なぜ、そのコードを書いたのか、途中経過を残すことができる。 2. Jupyter Notebookは環境を整えれば再現が可能
① 環境を整えれば、同じ状況を再現をすることが可能できる。 ② 手順を追実験できる。(手順書としても使える!) 3. Jupyter Notebookは結果をエビデンスとして残せる。 これを納品しよう! 11
実際にJupyter Notebookの良かったところ 1. 実行結果を見ながら説明ができる。 ソースコードの実行過程を見ながら説明ができる。 2. 実行結果を逐一確認できる。 現状の実行結果を見て、次にどうするか思考できる。
3. アルゴリズムの検証結果を見ることができる。 4. 便利なPluginがある。 12
Jupyter Notebookの活用例 1. 分析レポートとして使う。 今回の利用用途、過程とコードが一緒でわかりやすい。 2. アルゴリズムの過程を残す。 画像処理のコードで処理後の結果を残す。
3. 手順書 基本的にはその通りやれば動くので手順書として実行コマン ド、結果、説明を同居させて残せる! 例えば、Hadoopの構築手順書 https://github.com/NII-cloud-operation/Literate-computing- Basics 13
Jupyter Notebookの例 14 出展:https://github.com/NII-cloud-operation/Literate-computing-Basics/blob/master/D03_KVM%20-%20Ready!%20on%20CentOS.ipynb
Jupyter Notebookの例 15 【説明】 コードややることに関す る内容を記述できる 出展:https://github.com/NII-cloud-operation/Literate-computing-Basics/blob/master/D03_KVM%20-%20Ready!%20on%20CentOS.ipynb 【コード】 実際のコマンドが わかりやすい
【実行結果】 説明と結果が 同時に見える 上から順に手順を 追える!
Plugin導入の方法 1. nbextensionsを使うと、よく使うPluginは入ります。 2. インストール方法 ① git clone https://github.com/ipython-contrib/IPython- notebook-extensions
② cd IPython-notebook-extensions ③ python setup.py install ④ sudo jupyter contrib nbextension install --user 今の日本語ページだと あまりこの情報がない 16
nbextensions 17
nbextensions Plugin一覧の テーブル Plugin名 18
おすすめのPlugin 1. Table of Contents (2) 見出しから目次を作成して表示する。 2. Python
Markdown MarkdownにPythonの変数等を埋め込める。 3. Hide input 入力したセルを隠せる。 19
Jupyter Notebookいい面 いっぱいあるよね!
でも・・・・・
Jupyterで苦労したこともあります。
html出力時と見た目が異なることが発覚した 1. Pluginが使えない場合がある、Markdownが機能しない等、 問題が発生する。 2. Jupyter Notebookの機能にhtmlを出力する機能があるが、 出力結果がNotebookと異なる。 3. Table
of Contents (2)の機能を使っていたが、ナンバリング がなくなった。 4. 変数埋め込み機能が使えない。 etc 23
Table of Contents(2)の場合~notebook~ 24
Table of Contents(2)の場合~html~ インデントがない ナンバリング されていない 25
その他いくつかの場合~notebook~
その他いくつかの場合~html~ Notebook上でhideに したcellも、html出力 されてしまう (Hide Cell) 埋め込んだ変数名が 可視化される (Python Markdown)
27
印刷が難しい 1. WebページやNotebookのまま印刷しようとすると、グラ フや表が画面から消える。 2. Jupyter Notebookをpdf化するために、LaTeXを必要と するのが面倒。(印刷機能を使えば別の方法で可能) 28
印刷が難しい 横スクロールで 印刷が途切れる 29
ファイルの分割ができない 1. ファイルの分割が難しい要因は次の2つ ① ファイルの結合をサポートしていない。 Issueはありました。 https://github.com/jupyter/nbconvert/issues/253 ② ソースコードが必要である。 2.
複数人開発の構成管理が難しい。 複数人で開発すると必ずconflictが起こる状況へ・・ 3. ファイル構成の設計が必要である。 ① Notebook自体を分割した状況を作る。 ② 結合するスクリプトを書く(できるかわからない。) 30
可能な限り情報は一つのファイルにまとめる 1. csvやExcel形式についてはpandasを使うと可視化可 能となるので、うまくコードを書いて埋め込むことが可能 2. 表示形式を表で出力したい場合はpandas.DataFrame 形式で変数を保持するのも良い。 3. あまりに長くなってくると見通しが悪化するので可能な 限り影響範囲は狭い方が良い。
4. (ちゃんと設計しましょう) 31
まとめ 1. Jupyter Notebookを使うとコードや過程、手順を Notebookとして残せる。 納品可能なレベル 2. ただし、プラグイン等のカスタマイズ機能を使う場合は 気をつける必要がある。
32
33 Jupyter Notebookを使おうぜ! Infrastructures Evolution